diff --git a/include/vulkan/vk_platform.h b/include/vulkan/vk_platform.h
--- a/include/vulkan/vk_platform.h
+++ b/include/vulkan/vk_platform.h
@@ -89,32 +89,4 @@
 } // extern "C"
 #endif // __cplusplus
 
-// Platform-specific headers required by platform window system extensions.
-// These are enabled prior to #including "vulkan.h". The same enable then
-// controls inclusion of the extension interfaces in vulkan.h.
-
-#ifdef VK_USE_PLATFORM_ANDROID_KHR
-#include <android/native_window.h>
-#endif
-
-#ifdef VK_USE_PLATFORM_MIR_KHR
-#include <mir_toolkit/client_types.h>
-#endif
-
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
-#include <wayland-client.h>
-#endif
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#include <windows.h>
-#endif
-
-#ifdef VK_USE_PLATFORM_XLIB_KHR
-#include <X11/Xlib.h>
-#endif
-
-#ifdef VK_USE_PLATFORM_XCB_KHR
-#include <xcb/xcb.h>
-#endif
-
 #endif
diff --git a/include/vulkan/vulkan.h b/include/vulkan/vulkan.h
--- a/include/vulkan/vulkan.h
+++ b/include/vulkan/vulkan.h
@@ -1,7047 +1,79 @@
 #ifndef VULKAN_H_
 #define VULKAN_H_ 1
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2015-2018 The Khronos Group Inc.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#define VK_VERSION_1_0 1
-#include "vulkan/vk_platform.h"
-
-#define VK_MAKE_VERSION(major, minor, patch) \
-    (((major) << 22) | ((minor) << 12) | (patch))
-
-// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
-//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
-
-// Vulkan 1.0 version number
-#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
-
-#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
-#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
-#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
-// Version of this file
-#define VK_HEADER_VERSION 69
-
-
-#define VK_NULL_HANDLE 0
-        
-
-
-#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-
-
-#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
-#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
-#else
-        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
-#endif
-#endif
-        
-
-
-typedef uint32_t VkFlags;
-typedef uint32_t VkBool32;
-typedef uint64_t VkDeviceSize;
-typedef uint32_t VkSampleMask;
-
-VK_DEFINE_HANDLE(VkInstance)
-VK_DEFINE_HANDLE(VkPhysicalDevice)
-VK_DEFINE_HANDLE(VkDevice)
-VK_DEFINE_HANDLE(VkQueue)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
-VK_DEFINE_HANDLE(VkCommandBuffer)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
-
-#define VK_LOD_CLAMP_NONE                 1000.0f
-#define VK_REMAINING_MIP_LEVELS           (~0U)
-#define VK_REMAINING_ARRAY_LAYERS         (~0U)
-#define VK_WHOLE_SIZE                     (~0ULL)
-#define VK_ATTACHMENT_UNUSED              (~0U)
-#define VK_TRUE                           1
-#define VK_FALSE                          0
-#define VK_QUEUE_FAMILY_IGNORED           (~0U)
-#define VK_SUBPASS_EXTERNAL               (~0U)
-#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
-#define VK_UUID_SIZE                      16
-#define VK_MAX_MEMORY_TYPES               32
-#define VK_MAX_MEMORY_HEAPS               16
-#define VK_MAX_EXTENSION_NAME_SIZE        256
-#define VK_MAX_DESCRIPTION_SIZE           256
-
-
-typedef enum VkPipelineCacheHeaderVersion {
-    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
-    VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
-    VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
-    VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1),
-    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineCacheHeaderVersion;
-
-typedef enum VkResult {
-    VK_SUCCESS = 0,
-    VK_NOT_READY = 1,
-    VK_TIMEOUT = 2,
-    VK_EVENT_SET = 3,
-    VK_EVENT_RESET = 4,
-    VK_INCOMPLETE = 5,
-    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
-    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
-    VK_ERROR_INITIALIZATION_FAILED = -3,
-    VK_ERROR_DEVICE_LOST = -4,
-    VK_ERROR_MEMORY_MAP_FAILED = -5,
-    VK_ERROR_LAYER_NOT_PRESENT = -6,
-    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
-    VK_ERROR_FEATURE_NOT_PRESENT = -8,
-    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
-    VK_ERROR_TOO_MANY_OBJECTS = -10,
-    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
-    VK_ERROR_FRAGMENTED_POOL = -12,
-    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
-    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
-    VK_SUBOPTIMAL_KHR = 1000001003,
-    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
-    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
-    VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
-    VK_ERROR_INVALID_SHADER_NV = -1000012000,
-    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000,
-    VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003,
-    VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
-    VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
-    VK_RESULT_END_RANGE = VK_INCOMPLETE,
-    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
-    VK_RESULT_MAX_ENUM = 0x7FFFFFFF
-} VkResult;
-
-typedef enum VkStructureType {
-    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
-    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
-    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
-    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
-    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
-    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
-    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
-    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
-    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
-    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
-    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
-    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
-    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
-    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
-    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
-    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
-    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
-    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
-    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
-    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
-    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
-    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
-    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
-    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
-    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
-    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
-    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
-    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
-    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
-    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
-    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
-    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
-    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
-    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
-    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
-    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
-    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
-    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
-    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
-    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
-    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
-    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
-    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
-    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
-    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
-    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
-    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
-    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
-    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
-    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
-    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
-    VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
-    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
-    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
-    VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
-    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
-    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
-    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
-    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
-    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
-    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
-    VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
-    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
-    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
-    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
-    VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
-    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
-    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
-    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
-    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
-    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
-    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
-    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
-    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
-    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
-    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
-    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
-    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
-    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX = 1000060013,
-    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX = 1000060014,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
-    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
-    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
-    VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
-    VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
-    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000,
-    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002,
-    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004,
-    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000,
-    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001,
-    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002,
-    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
-    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
-    VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
-    VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
-    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
-    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
-    VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
-    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000,
-    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001,
-    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000,
-    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
-    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
-    VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
-    VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
-    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
-    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000,
-    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
-    VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
-    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
-    VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
-    VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
-    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
-    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
-    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
-    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
-    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
-    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
-    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
-    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
-    VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
-    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
-    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
-    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
-    VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
-    VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000,
-    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001,
-    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000,
-    VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
-    VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
-    VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
-    VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
-    VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000,
-    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001,
-    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002,
-    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
-    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
-    VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000,
-    VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
-    VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
-    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000,
-    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
-    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
-    VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
-    VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
-    VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
-    VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
-    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000,
-    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001,
-    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002,
-    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003,
-    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004,
-    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
-    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
-    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
-    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
-    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000,
-    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001,
-    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002,
-    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004,
-    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005,
-    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000,
-    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001,
-    VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
-    VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
-    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
-    VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
-    VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
-    VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
-    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkStructureType;
-
-typedef enum VkSystemAllocationScope {
-    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
-    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
-    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
-    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
-    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
-    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
-    VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
-    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
-    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
-} VkSystemAllocationScope;
-
-typedef enum VkInternalAllocationType {
-    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
-    VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
-    VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
-    VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
-    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkInternalAllocationType;
-
-typedef enum VkFormat {
-    VK_FORMAT_UNDEFINED = 0,
-    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
-    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
-    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
-    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
-    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
-    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
-    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
-    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
-    VK_FORMAT_R8_UNORM = 9,
-    VK_FORMAT_R8_SNORM = 10,
-    VK_FORMAT_R8_USCALED = 11,
-    VK_FORMAT_R8_SSCALED = 12,
-    VK_FORMAT_R8_UINT = 13,
-    VK_FORMAT_R8_SINT = 14,
-    VK_FORMAT_R8_SRGB = 15,
-    VK_FORMAT_R8G8_UNORM = 16,
-    VK_FORMAT_R8G8_SNORM = 17,
-    VK_FORMAT_R8G8_USCALED = 18,
-    VK_FORMAT_R8G8_SSCALED = 19,
-    VK_FORMAT_R8G8_UINT = 20,
-    VK_FORMAT_R8G8_SINT = 21,
-    VK_FORMAT_R8G8_SRGB = 22,
-    VK_FORMAT_R8G8B8_UNORM = 23,
-    VK_FORMAT_R8G8B8_SNORM = 24,
-    VK_FORMAT_R8G8B8_USCALED = 25,
-    VK_FORMAT_R8G8B8_SSCALED = 26,
-    VK_FORMAT_R8G8B8_UINT = 27,
-    VK_FORMAT_R8G8B8_SINT = 28,
-    VK_FORMAT_R8G8B8_SRGB = 29,
-    VK_FORMAT_B8G8R8_UNORM = 30,
-    VK_FORMAT_B8G8R8_SNORM = 31,
-    VK_FORMAT_B8G8R8_USCALED = 32,
-    VK_FORMAT_B8G8R8_SSCALED = 33,
-    VK_FORMAT_B8G8R8_UINT = 34,
-    VK_FORMAT_B8G8R8_SINT = 35,
-    VK_FORMAT_B8G8R8_SRGB = 36,
-    VK_FORMAT_R8G8B8A8_UNORM = 37,
-    VK_FORMAT_R8G8B8A8_SNORM = 38,
-    VK_FORMAT_R8G8B8A8_USCALED = 39,
-    VK_FORMAT_R8G8B8A8_SSCALED = 40,
-    VK_FORMAT_R8G8B8A8_UINT = 41,
-    VK_FORMAT_R8G8B8A8_SINT = 42,
-    VK_FORMAT_R8G8B8A8_SRGB = 43,
-    VK_FORMAT_B8G8R8A8_UNORM = 44,
-    VK_FORMAT_B8G8R8A8_SNORM = 45,
-    VK_FORMAT_B8G8R8A8_USCALED = 46,
-    VK_FORMAT_B8G8R8A8_SSCALED = 47,
-    VK_FORMAT_B8G8R8A8_UINT = 48,
-    VK_FORMAT_B8G8R8A8_SINT = 49,
-    VK_FORMAT_B8G8R8A8_SRGB = 50,
-    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
-    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
-    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
-    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
-    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
-    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
-    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
-    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
-    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
-    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
-    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
-    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
-    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
-    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
-    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
-    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
-    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
-    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
-    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
-    VK_FORMAT_R16_UNORM = 70,
-    VK_FORMAT_R16_SNORM = 71,
-    VK_FORMAT_R16_USCALED = 72,
-    VK_FORMAT_R16_SSCALED = 73,
-    VK_FORMAT_R16_UINT = 74,
-    VK_FORMAT_R16_SINT = 75,
-    VK_FORMAT_R16_SFLOAT = 76,
-    VK_FORMAT_R16G16_UNORM = 77,
-    VK_FORMAT_R16G16_SNORM = 78,
-    VK_FORMAT_R16G16_USCALED = 79,
-    VK_FORMAT_R16G16_SSCALED = 80,
-    VK_FORMAT_R16G16_UINT = 81,
-    VK_FORMAT_R16G16_SINT = 82,
-    VK_FORMAT_R16G16_SFLOAT = 83,
-    VK_FORMAT_R16G16B16_UNORM = 84,
-    VK_FORMAT_R16G16B16_SNORM = 85,
-    VK_FORMAT_R16G16B16_USCALED = 86,
-    VK_FORMAT_R16G16B16_SSCALED = 87,
-    VK_FORMAT_R16G16B16_UINT = 88,
-    VK_FORMAT_R16G16B16_SINT = 89,
-    VK_FORMAT_R16G16B16_SFLOAT = 90,
-    VK_FORMAT_R16G16B16A16_UNORM = 91,
-    VK_FORMAT_R16G16B16A16_SNORM = 92,
-    VK_FORMAT_R16G16B16A16_USCALED = 93,
-    VK_FORMAT_R16G16B16A16_SSCALED = 94,
-    VK_FORMAT_R16G16B16A16_UINT = 95,
-    VK_FORMAT_R16G16B16A16_SINT = 96,
-    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
-    VK_FORMAT_R32_UINT = 98,
-    VK_FORMAT_R32_SINT = 99,
-    VK_FORMAT_R32_SFLOAT = 100,
-    VK_FORMAT_R32G32_UINT = 101,
-    VK_FORMAT_R32G32_SINT = 102,
-    VK_FORMAT_R32G32_SFLOAT = 103,
-    VK_FORMAT_R32G32B32_UINT = 104,
-    VK_FORMAT_R32G32B32_SINT = 105,
-    VK_FORMAT_R32G32B32_SFLOAT = 106,
-    VK_FORMAT_R32G32B32A32_UINT = 107,
-    VK_FORMAT_R32G32B32A32_SINT = 108,
-    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
-    VK_FORMAT_R64_UINT = 110,
-    VK_FORMAT_R64_SINT = 111,
-    VK_FORMAT_R64_SFLOAT = 112,
-    VK_FORMAT_R64G64_UINT = 113,
-    VK_FORMAT_R64G64_SINT = 114,
-    VK_FORMAT_R64G64_SFLOAT = 115,
-    VK_FORMAT_R64G64B64_UINT = 116,
-    VK_FORMAT_R64G64B64_SINT = 117,
-    VK_FORMAT_R64G64B64_SFLOAT = 118,
-    VK_FORMAT_R64G64B64A64_UINT = 119,
-    VK_FORMAT_R64G64B64A64_SINT = 120,
-    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
-    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
-    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
-    VK_FORMAT_D16_UNORM = 124,
-    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
-    VK_FORMAT_D32_SFLOAT = 126,
-    VK_FORMAT_S8_UINT = 127,
-    VK_FORMAT_D16_UNORM_S8_UINT = 128,
-    VK_FORMAT_D24_UNORM_S8_UINT = 129,
-    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
-    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
-    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
-    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
-    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
-    VK_FORMAT_BC2_UNORM_BLOCK = 135,
-    VK_FORMAT_BC2_SRGB_BLOCK = 136,
-    VK_FORMAT_BC3_UNORM_BLOCK = 137,
-    VK_FORMAT_BC3_SRGB_BLOCK = 138,
-    VK_FORMAT_BC4_UNORM_BLOCK = 139,
-    VK_FORMAT_BC4_SNORM_BLOCK = 140,
-    VK_FORMAT_BC5_UNORM_BLOCK = 141,
-    VK_FORMAT_BC5_SNORM_BLOCK = 142,
-    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
-    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
-    VK_FORMAT_BC7_UNORM_BLOCK = 145,
-    VK_FORMAT_BC7_SRGB_BLOCK = 146,
-    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
-    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
-    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
-    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
-    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
-    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
-    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
-    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
-    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
-    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
-    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
-    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
-    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
-    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
-    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
-    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
-    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
-    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
-    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
-    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
-    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
-    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
-    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
-    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
-    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
-    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
-    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
-    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
-    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
-    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
-    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
-    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
-    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
-    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
-    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
-    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
-    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
-    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
-    VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
-    VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
-    VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
-    VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
-    VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
-    VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
-    VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
-    VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
-    VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000,
-    VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001,
-    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002,
-    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003,
-    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004,
-    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005,
-    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006,
-    VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007,
-    VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008,
-    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009,
-    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010,
-    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011,
-    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012,
-    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013,
-    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014,
-    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015,
-    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016,
-    VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017,
-    VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018,
-    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019,
-    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020,
-    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021,
-    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022,
-    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023,
-    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024,
-    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025,
-    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026,
-    VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027,
-    VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028,
-    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029,
-    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030,
-    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031,
-    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032,
-    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033,
-    VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
-    VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
-    VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
-    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
-} VkFormat;
-
-typedef enum VkImageType {
-    VK_IMAGE_TYPE_1D = 0,
-    VK_IMAGE_TYPE_2D = 1,
-    VK_IMAGE_TYPE_3D = 2,
-    VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
-    VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
-    VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
-    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkImageType;
-
-typedef enum VkImageTiling {
-    VK_IMAGE_TILING_OPTIMAL = 0,
-    VK_IMAGE_TILING_LINEAR = 1,
-    VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
-    VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
-    VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
-    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
-} VkImageTiling;
-
-typedef enum VkPhysicalDeviceType {
-    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
-    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
-    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
-    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
-    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
-    VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
-    VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
-    VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
-    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkPhysicalDeviceType;
-
-typedef enum VkQueryType {
-    VK_QUERY_TYPE_OCCLUSION = 0,
-    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
-    VK_QUERY_TYPE_TIMESTAMP = 2,
-    VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
-    VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
-    VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
-    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkQueryType;
-
-typedef enum VkSharingMode {
-    VK_SHARING_MODE_EXCLUSIVE = 0,
-    VK_SHARING_MODE_CONCURRENT = 1,
-    VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
-    VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
-    VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
-    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSharingMode;
-
-typedef enum VkImageLayout {
-    VK_IMAGE_LAYOUT_UNDEFINED = 0,
-    VK_IMAGE_LAYOUT_GENERAL = 1,
-    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
-    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
-    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
-    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
-    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
-    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
-    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
-    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
-    VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
-    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000,
-    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001,
-    VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
-    VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
-    VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
-} VkImageLayout;
-
-typedef enum VkImageViewType {
-    VK_IMAGE_VIEW_TYPE_1D = 0,
-    VK_IMAGE_VIEW_TYPE_2D = 1,
-    VK_IMAGE_VIEW_TYPE_3D = 2,
-    VK_IMAGE_VIEW_TYPE_CUBE = 3,
-    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
-    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
-    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
-    VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
-    VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
-    VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
-    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkImageViewType;
-
-typedef enum VkComponentSwizzle {
-    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
-    VK_COMPONENT_SWIZZLE_ZERO = 1,
-    VK_COMPONENT_SWIZZLE_ONE = 2,
-    VK_COMPONENT_SWIZZLE_R = 3,
-    VK_COMPONENT_SWIZZLE_G = 4,
-    VK_COMPONENT_SWIZZLE_B = 5,
-    VK_COMPONENT_SWIZZLE_A = 6,
-    VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
-    VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
-    VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
-    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
-} VkComponentSwizzle;
-
-typedef enum VkVertexInputRate {
-    VK_VERTEX_INPUT_RATE_VERTEX = 0,
-    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
-    VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
-    VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
-    VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
-    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
-} VkVertexInputRate;
-
-typedef enum VkPrimitiveTopology {
-    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
-    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
-    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
-    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
-    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
-    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
-    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
-    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
-    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
-    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
-    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
-    VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
-    VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
-    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
-    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
-} VkPrimitiveTopology;
-
-typedef enum VkPolygonMode {
-    VK_POLYGON_MODE_FILL = 0,
-    VK_POLYGON_MODE_LINE = 1,
-    VK_POLYGON_MODE_POINT = 2,
-    VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
-    VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
-    VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
-    VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
-    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkPolygonMode;
-
-typedef enum VkFrontFace {
-    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
-    VK_FRONT_FACE_CLOCKWISE = 1,
-    VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
-    VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
-    VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
-    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
-} VkFrontFace;
-
-typedef enum VkCompareOp {
-    VK_COMPARE_OP_NEVER = 0,
-    VK_COMPARE_OP_LESS = 1,
-    VK_COMPARE_OP_EQUAL = 2,
-    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
-    VK_COMPARE_OP_GREATER = 4,
-    VK_COMPARE_OP_NOT_EQUAL = 5,
-    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
-    VK_COMPARE_OP_ALWAYS = 7,
-    VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
-    VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
-    VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
-    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
-} VkCompareOp;
-
-typedef enum VkStencilOp {
-    VK_STENCIL_OP_KEEP = 0,
-    VK_STENCIL_OP_ZERO = 1,
-    VK_STENCIL_OP_REPLACE = 2,
-    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
-    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
-    VK_STENCIL_OP_INVERT = 5,
-    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
-    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
-    VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
-    VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
-    VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
-    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
-} VkStencilOp;
-
-typedef enum VkLogicOp {
-    VK_LOGIC_OP_CLEAR = 0,
-    VK_LOGIC_OP_AND = 1,
-    VK_LOGIC_OP_AND_REVERSE = 2,
-    VK_LOGIC_OP_COPY = 3,
-    VK_LOGIC_OP_AND_INVERTED = 4,
-    VK_LOGIC_OP_NO_OP = 5,
-    VK_LOGIC_OP_XOR = 6,
-    VK_LOGIC_OP_OR = 7,
-    VK_LOGIC_OP_NOR = 8,
-    VK_LOGIC_OP_EQUIVALENT = 9,
-    VK_LOGIC_OP_INVERT = 10,
-    VK_LOGIC_OP_OR_REVERSE = 11,
-    VK_LOGIC_OP_COPY_INVERTED = 12,
-    VK_LOGIC_OP_OR_INVERTED = 13,
-    VK_LOGIC_OP_NAND = 14,
-    VK_LOGIC_OP_SET = 15,
-    VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
-    VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
-    VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
-    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
-} VkLogicOp;
-
-typedef enum VkBlendFactor {
-    VK_BLEND_FACTOR_ZERO = 0,
-    VK_BLEND_FACTOR_ONE = 1,
-    VK_BLEND_FACTOR_SRC_COLOR = 2,
-    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
-    VK_BLEND_FACTOR_DST_COLOR = 4,
-    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
-    VK_BLEND_FACTOR_SRC_ALPHA = 6,
-    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
-    VK_BLEND_FACTOR_DST_ALPHA = 8,
-    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
-    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
-    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
-    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
-    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
-    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
-    VK_BLEND_FACTOR_SRC1_COLOR = 15,
-    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
-    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
-    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
-    VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
-    VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
-    VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
-    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
-} VkBlendFactor;
-
-typedef enum VkBlendOp {
-    VK_BLEND_OP_ADD = 0,
-    VK_BLEND_OP_SUBTRACT = 1,
-    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
-    VK_BLEND_OP_MIN = 3,
-    VK_BLEND_OP_MAX = 4,
-    VK_BLEND_OP_ZERO_EXT = 1000148000,
-    VK_BLEND_OP_SRC_EXT = 1000148001,
-    VK_BLEND_OP_DST_EXT = 1000148002,
-    VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
-    VK_BLEND_OP_DST_OVER_EXT = 1000148004,
-    VK_BLEND_OP_SRC_IN_EXT = 1000148005,
-    VK_BLEND_OP_DST_IN_EXT = 1000148006,
-    VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
-    VK_BLEND_OP_DST_OUT_EXT = 1000148008,
-    VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
-    VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
-    VK_BLEND_OP_XOR_EXT = 1000148011,
-    VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
-    VK_BLEND_OP_SCREEN_EXT = 1000148013,
-    VK_BLEND_OP_OVERLAY_EXT = 1000148014,
-    VK_BLEND_OP_DARKEN_EXT = 1000148015,
-    VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
-    VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
-    VK_BLEND_OP_COLORBURN_EXT = 1000148018,
-    VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
-    VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
-    VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
-    VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
-    VK_BLEND_OP_INVERT_EXT = 1000148023,
-    VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
-    VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
-    VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
-    VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
-    VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
-    VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
-    VK_BLEND_OP_HARDMIX_EXT = 1000148030,
-    VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
-    VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
-    VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
-    VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
-    VK_BLEND_OP_PLUS_EXT = 1000148035,
-    VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
-    VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
-    VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
-    VK_BLEND_OP_MINUS_EXT = 1000148039,
-    VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
-    VK_BLEND_OP_CONTRAST_EXT = 1000148041,
-    VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
-    VK_BLEND_OP_RED_EXT = 1000148043,
-    VK_BLEND_OP_GREEN_EXT = 1000148044,
-    VK_BLEND_OP_BLUE_EXT = 1000148045,
-    VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
-    VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
-    VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
-    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
-} VkBlendOp;
-
-typedef enum VkDynamicState {
-    VK_DYNAMIC_STATE_VIEWPORT = 0,
-    VK_DYNAMIC_STATE_SCISSOR = 1,
-    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
-    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
-    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
-    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
-    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
-    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
-    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
-    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
-    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
-    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
-    VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
-    VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
-    VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
-    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
-} VkDynamicState;
-
-typedef enum VkFilter {
-    VK_FILTER_NEAREST = 0,
-    VK_FILTER_LINEAR = 1,
-    VK_FILTER_CUBIC_IMG = 1000015000,
-    VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
-    VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
-    VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
-    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
-} VkFilter;
-
-typedef enum VkSamplerMipmapMode {
-    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
-    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
-    VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
-    VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
-    VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
-    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerMipmapMode;
-
-typedef enum VkSamplerAddressMode {
-    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
-    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
-    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
-    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
-    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
-    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
-    VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
-    VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
-    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerAddressMode;
-
-typedef enum VkBorderColor {
-    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
-    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
-    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
-    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
-    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
-    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
-    VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
-    VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
-    VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
-    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
-} VkBorderColor;
-
-typedef enum VkDescriptorType {
-    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
-    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
-    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
-    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
-    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
-    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
-    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
-    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
-    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
-    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
-    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
-    VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
-    VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
-    VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
-    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorType;
-
-typedef enum VkAttachmentLoadOp {
-    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
-    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
-    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
-    VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
-    VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
-    VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
-    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
-} VkAttachmentLoadOp;
-
-typedef enum VkAttachmentStoreOp {
-    VK_ATTACHMENT_STORE_OP_STORE = 0,
-    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
-    VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
-    VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
-    VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
-    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
-} VkAttachmentStoreOp;
-
-typedef enum VkPipelineBindPoint {
-    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
-    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
-    VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
-    VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
-    VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
-    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineBindPoint;
-
-typedef enum VkCommandBufferLevel {
-    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
-    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
-    VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
-    VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
-    VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
-    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
-} VkCommandBufferLevel;
-
-typedef enum VkIndexType {
-    VK_INDEX_TYPE_UINT16 = 0,
-    VK_INDEX_TYPE_UINT32 = 1,
-    VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
-    VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
-    VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
-    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkIndexType;
-
-typedef enum VkSubpassContents {
-    VK_SUBPASS_CONTENTS_INLINE = 0,
-    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
-    VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
-    VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
-    VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
-    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
-} VkSubpassContents;
-
-typedef enum VkObjectType {
-    VK_OBJECT_TYPE_UNKNOWN = 0,
-    VK_OBJECT_TYPE_INSTANCE = 1,
-    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
-    VK_OBJECT_TYPE_DEVICE = 3,
-    VK_OBJECT_TYPE_QUEUE = 4,
-    VK_OBJECT_TYPE_SEMAPHORE = 5,
-    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
-    VK_OBJECT_TYPE_FENCE = 7,
-    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
-    VK_OBJECT_TYPE_BUFFER = 9,
-    VK_OBJECT_TYPE_IMAGE = 10,
-    VK_OBJECT_TYPE_EVENT = 11,
-    VK_OBJECT_TYPE_QUERY_POOL = 12,
-    VK_OBJECT_TYPE_BUFFER_VIEW = 13,
-    VK_OBJECT_TYPE_IMAGE_VIEW = 14,
-    VK_OBJECT_TYPE_SHADER_MODULE = 15,
-    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
-    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
-    VK_OBJECT_TYPE_RENDER_PASS = 18,
-    VK_OBJECT_TYPE_PIPELINE = 19,
-    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
-    VK_OBJECT_TYPE_SAMPLER = 21,
-    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
-    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
-    VK_OBJECT_TYPE_FRAMEBUFFER = 24,
-    VK_OBJECT_TYPE_COMMAND_POOL = 25,
-    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
-    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
-    VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
-    VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
-    VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
-    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
-    VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
-    VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
-    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000,
-    VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
-    VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN,
-    VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL,
-    VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1),
-    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkObjectType;
-
-typedef VkFlags VkInstanceCreateFlags;
-
-typedef enum VkFormatFeatureFlagBits {
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
-    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
-    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
-    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
-    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
-    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
-    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
-    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
-    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
-    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
-    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
-    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
-    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
-    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
-    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000,
-    VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 0x00400000,
-    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000,
-    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkFormatFeatureFlagBits;
-typedef VkFlags VkFormatFeatureFlags;
-
-typedef enum VkImageUsageFlagBits {
-    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
-    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
-    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
-    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
-    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
-    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
-    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
-    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
-    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageUsageFlagBits;
-typedef VkFlags VkImageUsageFlags;
-
-typedef enum VkImageCreateFlagBits {
-    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
-    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
-    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
-    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
-    VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
-    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
-    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 0x00000080,
-    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 0x00000100,
-    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
-    VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 0x00000200,
-    VK_IMAGE_CREATE_ALIAS_BIT_KHR = 0x00000400,
-    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageCreateFlagBits;
-typedef VkFlags VkImageCreateFlags;
-
-typedef enum VkSampleCountFlagBits {
-    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
-    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
-    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
-    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
-    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
-    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
-    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
-    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSampleCountFlagBits;
-typedef VkFlags VkSampleCountFlags;
-
-typedef enum VkQueueFlagBits {
-    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
-    VK_QUEUE_COMPUTE_BIT = 0x00000002,
-    VK_QUEUE_TRANSFER_BIT = 0x00000004,
-    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
-    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueueFlagBits;
-typedef VkFlags VkQueueFlags;
-
-typedef enum VkMemoryPropertyFlagBits {
-    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
-    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
-    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
-    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
-    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
-    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkMemoryPropertyFlagBits;
-typedef VkFlags VkMemoryPropertyFlags;
-
-typedef enum VkMemoryHeapFlagBits {
-    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
-    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
-    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkMemoryHeapFlagBits;
-typedef VkFlags VkMemoryHeapFlags;
-typedef VkFlags VkDeviceCreateFlags;
-typedef VkFlags VkDeviceQueueCreateFlags;
-
-typedef enum VkPipelineStageFlagBits {
-    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
-    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
-    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
-    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
-    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
-    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
-    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
-    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
-    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
-    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
-    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
-    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
-    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
-    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
-    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
-    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
-    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
-    VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
-    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineStageFlagBits;
-typedef VkFlags VkPipelineStageFlags;
-typedef VkFlags VkMemoryMapFlags;
-
-typedef enum VkImageAspectFlagBits {
-    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
-    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
-    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
-    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
-    VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 0x00000010,
-    VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 0x00000020,
-    VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 0x00000040,
-    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageAspectFlagBits;
-typedef VkFlags VkImageAspectFlags;
-
-typedef enum VkSparseImageFormatFlagBits {
-    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
-    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
-    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSparseImageFormatFlagBits;
-typedef VkFlags VkSparseImageFormatFlags;
-
-typedef enum VkSparseMemoryBindFlagBits {
-    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
-    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSparseMemoryBindFlagBits;
-typedef VkFlags VkSparseMemoryBindFlags;
-
-typedef enum VkFenceCreateFlagBits {
-    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
-    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkFenceCreateFlagBits;
-typedef VkFlags VkFenceCreateFlags;
-typedef VkFlags VkSemaphoreCreateFlags;
-typedef VkFlags VkEventCreateFlags;
-typedef VkFlags VkQueryPoolCreateFlags;
-
-typedef enum VkQueryPipelineStatisticFlagBits {
-    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
-    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
-    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
-    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
-    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
-    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
-    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
-    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
-    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
-    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
-    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
-    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueryPipelineStatisticFlagBits;
-typedef VkFlags VkQueryPipelineStatisticFlags;
-
-typedef enum VkQueryResultFlagBits {
-    VK_QUERY_RESULT_64_BIT = 0x00000001,
-    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
-    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
-    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
-    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueryResultFlagBits;
-typedef VkFlags VkQueryResultFlags;
-
-typedef enum VkBufferCreateFlagBits {
-    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
-    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
-    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkBufferCreateFlagBits;
-typedef VkFlags VkBufferCreateFlags;
-
-typedef enum VkBufferUsageFlagBits {
-    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
-    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
-    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
-    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
-    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
-    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
-    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
-    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
-    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
-    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkBufferUsageFlagBits;
-typedef VkFlags VkBufferUsageFlags;
-typedef VkFlags VkBufferViewCreateFlags;
-typedef VkFlags VkImageViewCreateFlags;
-typedef VkFlags VkShaderModuleCreateFlags;
-typedef VkFlags VkPipelineCacheCreateFlags;
-
-typedef enum VkPipelineCreateFlagBits {
-    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
-    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
-    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
-    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
-    VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
-    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineCreateFlagBits;
-typedef VkFlags VkPipelineCreateFlags;
-typedef VkFlags VkPipelineShaderStageCreateFlags;
-
-typedef enum VkShaderStageFlagBits {
-    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
-    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
-    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
-    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
-    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
-    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
-    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
-    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
-    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkShaderStageFlagBits;
-typedef VkFlags VkPipelineVertexInputStateCreateFlags;
-typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
-typedef VkFlags VkPipelineTessellationStateCreateFlags;
-typedef VkFlags VkPipelineViewportStateCreateFlags;
-typedef VkFlags VkPipelineRasterizationStateCreateFlags;
-
-typedef enum VkCullModeFlagBits {
-    VK_CULL_MODE_NONE = 0,
-    VK_CULL_MODE_FRONT_BIT = 0x00000001,
-    VK_CULL_MODE_BACK_BIT = 0x00000002,
-    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
-    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCullModeFlagBits;
-typedef VkFlags VkCullModeFlags;
-typedef VkFlags VkPipelineMultisampleStateCreateFlags;
-typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
-typedef VkFlags VkPipelineColorBlendStateCreateFlags;
-
-typedef enum VkColorComponentFlagBits {
-    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
-    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
-    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
-    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
-    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkColorComponentFlagBits;
-typedef VkFlags VkColorComponentFlags;
-typedef VkFlags VkPipelineDynamicStateCreateFlags;
-typedef VkFlags VkPipelineLayoutCreateFlags;
-typedef VkFlags VkShaderStageFlags;
-typedef VkFlags VkSamplerCreateFlags;
-
-typedef enum VkDescriptorSetLayoutCreateFlagBits {
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorSetLayoutCreateFlagBits;
-typedef VkFlags VkDescriptorSetLayoutCreateFlags;
-
-typedef enum VkDescriptorPoolCreateFlagBits {
-    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
-    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorPoolCreateFlagBits;
-typedef VkFlags VkDescriptorPoolCreateFlags;
-typedef VkFlags VkDescriptorPoolResetFlags;
-typedef VkFlags VkFramebufferCreateFlags;
-typedef VkFlags VkRenderPassCreateFlags;
-
-typedef enum VkAttachmentDescriptionFlagBits {
-    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
-    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkAttachmentDescriptionFlagBits;
-typedef VkFlags VkAttachmentDescriptionFlags;
-
-typedef enum VkSubpassDescriptionFlagBits {
-    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
-    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
-    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSubpassDescriptionFlagBits;
-typedef VkFlags VkSubpassDescriptionFlags;
-
-typedef enum VkAccessFlagBits {
-    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
-    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
-    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
-    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
-    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
-    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
-    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
-    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
-    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
-    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
-    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
-    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
-    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
-    VK_ACCESS_HOST_READ_BIT = 0x00002000,
-    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
-    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
-    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
-    VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
-    VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
-    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
-    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkAccessFlagBits;
-typedef VkFlags VkAccessFlags;
-
-typedef enum VkDependencyFlagBits {
-    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
-    VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
-    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
-    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDependencyFlagBits;
-typedef VkFlags VkDependencyFlags;
-
-typedef enum VkCommandPoolCreateFlagBits {
-    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
-    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
-    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandPoolCreateFlagBits;
-typedef VkFlags VkCommandPoolCreateFlags;
-
-typedef enum VkCommandPoolResetFlagBits {
-    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
-    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandPoolResetFlagBits;
-typedef VkFlags VkCommandPoolResetFlags;
-
-typedef enum VkCommandBufferUsageFlagBits {
-    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
-    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
-    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
-    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandBufferUsageFlagBits;
-typedef VkFlags VkCommandBufferUsageFlags;
-
-typedef enum VkQueryControlFlagBits {
-    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
-    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueryControlFlagBits;
-typedef VkFlags VkQueryControlFlags;
-
-typedef enum VkCommandBufferResetFlagBits {
-    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
-    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandBufferResetFlagBits;
-typedef VkFlags VkCommandBufferResetFlags;
-
-typedef enum VkStencilFaceFlagBits {
-    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
-    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
-    VK_STENCIL_FRONT_AND_BACK = 0x00000003,
-    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkStencilFaceFlagBits;
-typedef VkFlags VkStencilFaceFlags;
-
-typedef struct VkApplicationInfo {
-    VkStructureType    sType;
-    const void*        pNext;
-    const char*        pApplicationName;
-    uint32_t           applicationVersion;
-    const char*        pEngineName;
-    uint32_t           engineVersion;
-    uint32_t           apiVersion;
-} VkApplicationInfo;
-
-typedef struct VkInstanceCreateInfo {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkInstanceCreateFlags       flags;
-    const VkApplicationInfo*    pApplicationInfo;
-    uint32_t                    enabledLayerCount;
-    const char* const*          ppEnabledLayerNames;
-    uint32_t                    enabledExtensionCount;
-    const char* const*          ppEnabledExtensionNames;
-} VkInstanceCreateInfo;
-
-typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
-    void*                                       pUserData,
-    size_t                                      size,
-    size_t                                      alignment,
-    VkSystemAllocationScope                     allocationScope);
-
-typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
-    void*                                       pUserData,
-    void*                                       pOriginal,
-    size_t                                      size,
-    size_t                                      alignment,
-    VkSystemAllocationScope                     allocationScope);
-
-typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
-    void*                                       pUserData,
-    void*                                       pMemory);
-
-typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
-    void*                                       pUserData,
-    size_t                                      size,
-    VkInternalAllocationType                    allocationType,
-    VkSystemAllocationScope                     allocationScope);
-
-typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
-    void*                                       pUserData,
-    size_t                                      size,
-    VkInternalAllocationType                    allocationType,
-    VkSystemAllocationScope                     allocationScope);
-
-typedef struct VkAllocationCallbacks {
-    void*                                   pUserData;
-    PFN_vkAllocationFunction                pfnAllocation;
-    PFN_vkReallocationFunction              pfnReallocation;
-    PFN_vkFreeFunction                      pfnFree;
-    PFN_vkInternalAllocationNotification    pfnInternalAllocation;
-    PFN_vkInternalFreeNotification          pfnInternalFree;
-} VkAllocationCallbacks;
-
-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;
-
-typedef struct VkFormatProperties {
-    VkFormatFeatureFlags    linearTilingFeatures;
-    VkFormatFeatureFlags    optimalTilingFeatures;
-    VkFormatFeatureFlags    bufferFeatures;
-} VkFormatProperties;
-
-typedef struct VkExtent3D {
-    uint32_t    width;
-    uint32_t    height;
-    uint32_t    depth;
-} VkExtent3D;
-
-typedef struct VkImageFormatProperties {
-    VkExtent3D            maxExtent;
-    uint32_t              maxMipLevels;
-    uint32_t              maxArrayLayers;
-    VkSampleCountFlags    sampleCounts;
-    VkDeviceSize          maxResourceSize;
-} VkImageFormatProperties;
-
-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;
-
-typedef struct VkPhysicalDeviceSparseProperties {
-    VkBool32    residencyStandard2DBlockShape;
-    VkBool32    residencyStandard2DMultisampleBlockShape;
-    VkBool32    residencyStandard3DBlockShape;
-    VkBool32    residencyAlignedMipSize;
-    VkBool32    residencyNonResidentStrict;
-} VkPhysicalDeviceSparseProperties;
-
-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;
-
-typedef struct VkQueueFamilyProperties {
-    VkQueueFlags    queueFlags;
-    uint32_t        queueCount;
-    uint32_t        timestampValidBits;
-    VkExtent3D      minImageTransferGranularity;
-} VkQueueFamilyProperties;
-
-typedef struct VkMemoryType {
-    VkMemoryPropertyFlags    propertyFlags;
-    uint32_t                 heapIndex;
-} VkMemoryType;
-
-typedef struct VkMemoryHeap {
-    VkDeviceSize         size;
-    VkMemoryHeapFlags    flags;
-} VkMemoryHeap;
-
-typedef struct VkPhysicalDeviceMemoryProperties {
-    uint32_t        memoryTypeCount;
-    VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
-    uint32_t        memoryHeapCount;
-    VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
-} VkPhysicalDeviceMemoryProperties;
-
-typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
-typedef struct VkDeviceQueueCreateInfo {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkDeviceQueueCreateFlags    flags;
-    uint32_t                    queueFamilyIndex;
-    uint32_t                    queueCount;
-    const float*                pQueuePriorities;
-} VkDeviceQueueCreateInfo;
-
-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;
-
-typedef struct VkExtensionProperties {
-    char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
-    uint32_t    specVersion;
-} VkExtensionProperties;
-
-typedef struct VkLayerProperties {
-    char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
-    uint32_t    specVersion;
-    uint32_t    implementationVersion;
-    char        description[VK_MAX_DESCRIPTION_SIZE];
-} VkLayerProperties;
-
-typedef struct VkSubmitInfo {
-    VkStructureType                sType;
-    const void*                    pNext;
-    uint32_t                       waitSemaphoreCount;
-    const VkSemaphore*             pWaitSemaphores;
-    const VkPipelineStageFlags*    pWaitDstStageMask;
-    uint32_t                       commandBufferCount;
-    const VkCommandBuffer*         pCommandBuffers;
-    uint32_t                       signalSemaphoreCount;
-    const VkSemaphore*             pSignalSemaphores;
-} VkSubmitInfo;
-
-typedef struct VkMemoryAllocateInfo {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkDeviceSize       allocationSize;
-    uint32_t           memoryTypeIndex;
-} VkMemoryAllocateInfo;
-
-typedef struct VkMappedMemoryRange {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkDeviceMemory     memory;
-    VkDeviceSize       offset;
-    VkDeviceSize       size;
-} VkMappedMemoryRange;
-
-typedef struct VkMemoryRequirements {
-    VkDeviceSize    size;
-    VkDeviceSize    alignment;
-    uint32_t        memoryTypeBits;
-} VkMemoryRequirements;
-
-typedef struct VkSparseImageFormatProperties {
-    VkImageAspectFlags          aspectMask;
-    VkExtent3D                  imageGranularity;
-    VkSparseImageFormatFlags    flags;
-} VkSparseImageFormatProperties;
-
-typedef struct VkSparseImageMemoryRequirements {
-    VkSparseImageFormatProperties    formatProperties;
-    uint32_t                         imageMipTailFirstLod;
-    VkDeviceSize                     imageMipTailSize;
-    VkDeviceSize                     imageMipTailOffset;
-    VkDeviceSize                     imageMipTailStride;
-} VkSparseImageMemoryRequirements;
-
-typedef struct VkSparseMemoryBind {
-    VkDeviceSize               resourceOffset;
-    VkDeviceSize               size;
-    VkDeviceMemory             memory;
-    VkDeviceSize               memoryOffset;
-    VkSparseMemoryBindFlags    flags;
-} VkSparseMemoryBind;
-
-typedef struct VkSparseBufferMemoryBindInfo {
-    VkBuffer                     buffer;
-    uint32_t                     bindCount;
-    const VkSparseMemoryBind*    pBinds;
-} VkSparseBufferMemoryBindInfo;
-
-typedef struct VkSparseImageOpaqueMemoryBindInfo {
-    VkImage                      image;
-    uint32_t                     bindCount;
-    const VkSparseMemoryBind*    pBinds;
-} VkSparseImageOpaqueMemoryBindInfo;
-
-typedef struct VkImageSubresource {
-    VkImageAspectFlags    aspectMask;
-    uint32_t              mipLevel;
-    uint32_t              arrayLayer;
-} VkImageSubresource;
-
-typedef struct VkOffset3D {
-    int32_t    x;
-    int32_t    y;
-    int32_t    z;
-} VkOffset3D;
-
-typedef struct VkSparseImageMemoryBind {
-    VkImageSubresource         subresource;
-    VkOffset3D                 offset;
-    VkExtent3D                 extent;
-    VkDeviceMemory             memory;
-    VkDeviceSize               memoryOffset;
-    VkSparseMemoryBindFlags    flags;
-} VkSparseImageMemoryBind;
-
-typedef struct VkSparseImageMemoryBindInfo {
-    VkImage                           image;
-    uint32_t                          bindCount;
-    const VkSparseImageMemoryBind*    pBinds;
-} VkSparseImageMemoryBindInfo;
-
-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;
-
-typedef struct VkFenceCreateInfo {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkFenceCreateFlags    flags;
-} VkFenceCreateInfo;
-
-typedef struct VkSemaphoreCreateInfo {
-    VkStructureType           sType;
-    const void*               pNext;
-    VkSemaphoreCreateFlags    flags;
-} VkSemaphoreCreateInfo;
-
-typedef struct VkEventCreateInfo {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkEventCreateFlags    flags;
-} VkEventCreateInfo;
-
-typedef struct VkQueryPoolCreateInfo {
-    VkStructureType                  sType;
-    const void*                      pNext;
-    VkQueryPoolCreateFlags           flags;
-    VkQueryType                      queryType;
-    uint32_t                         queryCount;
-    VkQueryPipelineStatisticFlags    pipelineStatistics;
-} VkQueryPoolCreateInfo;
-
-typedef struct VkBufferCreateInfo {
-    VkStructureType        sType;
-    const void*            pNext;
-    VkBufferCreateFlags    flags;
-    VkDeviceSize           size;
-    VkBufferUsageFlags     usage;
-    VkSharingMode          sharingMode;
-    uint32_t               queueFamilyIndexCount;
-    const uint32_t*        pQueueFamilyIndices;
-} VkBufferCreateInfo;
-
-typedef struct VkBufferViewCreateInfo {
-    VkStructureType            sType;
-    const void*                pNext;
-    VkBufferViewCreateFlags    flags;
-    VkBuffer                   buffer;
-    VkFormat                   format;
-    VkDeviceSize               offset;
-    VkDeviceSize               range;
-} VkBufferViewCreateInfo;
-
-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;
-
-typedef struct VkSubresourceLayout {
-    VkDeviceSize    offset;
-    VkDeviceSize    size;
-    VkDeviceSize    rowPitch;
-    VkDeviceSize    arrayPitch;
-    VkDeviceSize    depthPitch;
-} VkSubresourceLayout;
-
-typedef struct VkComponentMapping {
-    VkComponentSwizzle    r;
-    VkComponentSwizzle    g;
-    VkComponentSwizzle    b;
-    VkComponentSwizzle    a;
-} VkComponentMapping;
-
-typedef struct VkImageSubresourceRange {
-    VkImageAspectFlags    aspectMask;
-    uint32_t              baseMipLevel;
-    uint32_t              levelCount;
-    uint32_t              baseArrayLayer;
-    uint32_t              layerCount;
-} VkImageSubresourceRange;
-
-typedef struct VkImageViewCreateInfo {
-    VkStructureType            sType;
-    const void*                pNext;
-    VkImageViewCreateFlags     flags;
-    VkImage                    image;
-    VkImageViewType            viewType;
-    VkFormat                   format;
-    VkComponentMapping         components;
-    VkImageSubresourceRange    subresourceRange;
-} VkImageViewCreateInfo;
-
-typedef struct VkShaderModuleCreateInfo {
-    VkStructureType              sType;
-    const void*                  pNext;
-    VkShaderModuleCreateFlags    flags;
-    size_t                       codeSize;
-    const uint32_t*              pCode;
-} VkShaderModuleCreateInfo;
-
-typedef struct VkPipelineCacheCreateInfo {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkPipelineCacheCreateFlags    flags;
-    size_t                        initialDataSize;
-    const void*                   pInitialData;
-} VkPipelineCacheCreateInfo;
-
-typedef struct VkSpecializationMapEntry {
-    uint32_t    constantID;
-    uint32_t    offset;
-    size_t      size;
-} VkSpecializationMapEntry;
-
-typedef struct VkSpecializationInfo {
-    uint32_t                           mapEntryCount;
-    const VkSpecializationMapEntry*    pMapEntries;
-    size_t                             dataSize;
-    const void*                        pData;
-} VkSpecializationInfo;
-
-typedef struct VkPipelineShaderStageCreateInfo {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkPipelineShaderStageCreateFlags    flags;
-    VkShaderStageFlagBits               stage;
-    VkShaderModule                      module;
-    const char*                         pName;
-    const VkSpecializationInfo*         pSpecializationInfo;
-} VkPipelineShaderStageCreateInfo;
-
-typedef struct VkVertexInputBindingDescription {
-    uint32_t             binding;
-    uint32_t             stride;
-    VkVertexInputRate    inputRate;
-} VkVertexInputBindingDescription;
-
-typedef struct VkVertexInputAttributeDescription {
-    uint32_t    location;
-    uint32_t    binding;
-    VkFormat    format;
-    uint32_t    offset;
-} VkVertexInputAttributeDescription;
-
-typedef struct VkPipelineVertexInputStateCreateInfo {
-    VkStructureType                             sType;
-    const void*                                 pNext;
-    VkPipelineVertexInputStateCreateFlags       flags;
-    uint32_t                                    vertexBindingDescriptionCount;
-    const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
-    uint32_t                                    vertexAttributeDescriptionCount;
-    const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
-} VkPipelineVertexInputStateCreateInfo;
-
-typedef struct VkPipelineInputAssemblyStateCreateInfo {
-    VkStructureType                            sType;
-    const void*                                pNext;
-    VkPipelineInputAssemblyStateCreateFlags    flags;
-    VkPrimitiveTopology                        topology;
-    VkBool32                                   primitiveRestartEnable;
-} VkPipelineInputAssemblyStateCreateInfo;
-
-typedef struct VkPipelineTessellationStateCreateInfo {
-    VkStructureType                           sType;
-    const void*                               pNext;
-    VkPipelineTessellationStateCreateFlags    flags;
-    uint32_t                                  patchControlPoints;
-} VkPipelineTessellationStateCreateInfo;
-
-typedef struct VkViewport {
-    float    x;
-    float    y;
-    float    width;
-    float    height;
-    float    minDepth;
-    float    maxDepth;
-} VkViewport;
-
-typedef struct VkOffset2D {
-    int32_t    x;
-    int32_t    y;
-} VkOffset2D;
-
-typedef struct VkExtent2D {
-    uint32_t    width;
-    uint32_t    height;
-} VkExtent2D;
-
-typedef struct VkRect2D {
-    VkOffset2D    offset;
-    VkExtent2D    extent;
-} VkRect2D;
-
-typedef struct VkPipelineViewportStateCreateInfo {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    VkPipelineViewportStateCreateFlags    flags;
-    uint32_t                              viewportCount;
-    const VkViewport*                     pViewports;
-    uint32_t                              scissorCount;
-    const VkRect2D*                       pScissors;
-} VkPipelineViewportStateCreateInfo;
-
-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;
-
-typedef struct VkPipelineMultisampleStateCreateInfo {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkPipelineMultisampleStateCreateFlags    flags;
-    VkSampleCountFlagBits                    rasterizationSamples;
-    VkBool32                                 sampleShadingEnable;
-    float                                    minSampleShading;
-    const VkSampleMask*                      pSampleMask;
-    VkBool32                                 alphaToCoverageEnable;
-    VkBool32                                 alphaToOneEnable;
-} VkPipelineMultisampleStateCreateInfo;
-
-typedef struct VkStencilOpState {
-    VkStencilOp    failOp;
-    VkStencilOp    passOp;
-    VkStencilOp    depthFailOp;
-    VkCompareOp    compareOp;
-    uint32_t       compareMask;
-    uint32_t       writeMask;
-    uint32_t       reference;
-} VkStencilOpState;
-
-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;
-
-typedef struct VkPipelineColorBlendAttachmentState {
-    VkBool32                 blendEnable;
-    VkBlendFactor            srcColorBlendFactor;
-    VkBlendFactor            dstColorBlendFactor;
-    VkBlendOp                colorBlendOp;
-    VkBlendFactor            srcAlphaBlendFactor;
-    VkBlendFactor            dstAlphaBlendFactor;
-    VkBlendOp                alphaBlendOp;
-    VkColorComponentFlags    colorWriteMask;
-} VkPipelineColorBlendAttachmentState;
-
-typedef struct VkPipelineColorBlendStateCreateInfo {
-    VkStructureType                               sType;
-    const void*                                   pNext;
-    VkPipelineColorBlendStateCreateFlags          flags;
-    VkBool32                                      logicOpEnable;
-    VkLogicOp                                     logicOp;
-    uint32_t                                      attachmentCount;
-    const VkPipelineColorBlendAttachmentState*    pAttachments;
-    float                                         blendConstants[4];
-} VkPipelineColorBlendStateCreateInfo;
-
-typedef struct VkPipelineDynamicStateCreateInfo {
-    VkStructureType                      sType;
-    const void*                          pNext;
-    VkPipelineDynamicStateCreateFlags    flags;
-    uint32_t                             dynamicStateCount;
-    const VkDynamicState*                pDynamicStates;
-} VkPipelineDynamicStateCreateInfo;
-
-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;
-
-typedef struct VkComputePipelineCreateInfo {
-    VkStructureType                    sType;
-    const void*                        pNext;
-    VkPipelineCreateFlags              flags;
-    VkPipelineShaderStageCreateInfo    stage;
-    VkPipelineLayout                   layout;
-    VkPipeline                         basePipelineHandle;
-    int32_t                            basePipelineIndex;
-} VkComputePipelineCreateInfo;
-
-typedef struct VkPushConstantRange {
-    VkShaderStageFlags    stageFlags;
-    uint32_t              offset;
-    uint32_t              size;
-} VkPushConstantRange;
-
-typedef struct VkPipelineLayoutCreateInfo {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkPipelineLayoutCreateFlags     flags;
-    uint32_t                        setLayoutCount;
-    const VkDescriptorSetLayout*    pSetLayouts;
-    uint32_t                        pushConstantRangeCount;
-    const VkPushConstantRange*      pPushConstantRanges;
-} VkPipelineLayoutCreateInfo;
-
-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;
-
-typedef struct VkDescriptorSetLayoutBinding {
-    uint32_t              binding;
-    VkDescriptorType      descriptorType;
-    uint32_t              descriptorCount;
-    VkShaderStageFlags    stageFlags;
-    const VkSampler*      pImmutableSamplers;
-} VkDescriptorSetLayoutBinding;
-
-typedef struct VkDescriptorSetLayoutCreateInfo {
-    VkStructureType                        sType;
-    const void*                            pNext;
-    VkDescriptorSetLayoutCreateFlags       flags;
-    uint32_t                               bindingCount;
-    const VkDescriptorSetLayoutBinding*    pBindings;
-} VkDescriptorSetLayoutCreateInfo;
-
-typedef struct VkDescriptorPoolSize {
-    VkDescriptorType    type;
-    uint32_t            descriptorCount;
-} VkDescriptorPoolSize;
-
-typedef struct VkDescriptorPoolCreateInfo {
-    VkStructureType                sType;
-    const void*                    pNext;
-    VkDescriptorPoolCreateFlags    flags;
-    uint32_t                       maxSets;
-    uint32_t                       poolSizeCount;
-    const VkDescriptorPoolSize*    pPoolSizes;
-} VkDescriptorPoolCreateInfo;
-
-typedef struct VkDescriptorSetAllocateInfo {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkDescriptorPool                descriptorPool;
-    uint32_t                        descriptorSetCount;
-    const VkDescriptorSetLayout*    pSetLayouts;
-} VkDescriptorSetAllocateInfo;
-
-typedef struct VkDescriptorImageInfo {
-    VkSampler        sampler;
-    VkImageView      imageView;
-    VkImageLayout    imageLayout;
-} VkDescriptorImageInfo;
-
-typedef struct VkDescriptorBufferInfo {
-    VkBuffer        buffer;
-    VkDeviceSize    offset;
-    VkDeviceSize    range;
-} VkDescriptorBufferInfo;
-
-typedef struct VkWriteDescriptorSet {
-    VkStructureType                  sType;
-    const void*                      pNext;
-    VkDescriptorSet                  dstSet;
-    uint32_t                         dstBinding;
-    uint32_t                         dstArrayElement;
-    uint32_t                         descriptorCount;
-    VkDescriptorType                 descriptorType;
-    const VkDescriptorImageInfo*     pImageInfo;
-    const VkDescriptorBufferInfo*    pBufferInfo;
-    const VkBufferView*              pTexelBufferView;
-} VkWriteDescriptorSet;
-
-typedef struct VkCopyDescriptorSet {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkDescriptorSet    srcSet;
-    uint32_t           srcBinding;
-    uint32_t           srcArrayElement;
-    VkDescriptorSet    dstSet;
-    uint32_t           dstBinding;
-    uint32_t           dstArrayElement;
-    uint32_t           descriptorCount;
-} VkCopyDescriptorSet;
-
-typedef struct VkFramebufferCreateInfo {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkFramebufferCreateFlags    flags;
-    VkRenderPass                renderPass;
-    uint32_t                    attachmentCount;
-    const VkImageView*          pAttachments;
-    uint32_t                    width;
-    uint32_t                    height;
-    uint32_t                    layers;
-} VkFramebufferCreateInfo;
-
-typedef struct VkAttachmentDescription {
-    VkAttachmentDescriptionFlags    flags;
-    VkFormat                        format;
-    VkSampleCountFlagBits           samples;
-    VkAttachmentLoadOp              loadOp;
-    VkAttachmentStoreOp             storeOp;
-    VkAttachmentLoadOp              stencilLoadOp;
-    VkAttachmentStoreOp             stencilStoreOp;
-    VkImageLayout                   initialLayout;
-    VkImageLayout                   finalLayout;
-} VkAttachmentDescription;
-
-typedef struct VkAttachmentReference {
-    uint32_t         attachment;
-    VkImageLayout    layout;
-} VkAttachmentReference;
-
-typedef struct VkSubpassDescription {
-    VkSubpassDescriptionFlags       flags;
-    VkPipelineBindPoint             pipelineBindPoint;
-    uint32_t                        inputAttachmentCount;
-    const VkAttachmentReference*    pInputAttachments;
-    uint32_t                        colorAttachmentCount;
-    const VkAttachmentReference*    pColorAttachments;
-    const VkAttachmentReference*    pResolveAttachments;
-    const VkAttachmentReference*    pDepthStencilAttachment;
-    uint32_t                        preserveAttachmentCount;
-    const uint32_t*                 pPreserveAttachments;
-} VkSubpassDescription;
-
-typedef struct VkSubpassDependency {
-    uint32_t                srcSubpass;
-    uint32_t                dstSubpass;
-    VkPipelineStageFlags    srcStageMask;
-    VkPipelineStageFlags    dstStageMask;
-    VkAccessFlags           srcAccessMask;
-    VkAccessFlags           dstAccessMask;
-    VkDependencyFlags       dependencyFlags;
-} VkSubpassDependency;
-
-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;
-
-typedef struct VkCommandPoolCreateInfo {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkCommandPoolCreateFlags    flags;
-    uint32_t                    queueFamilyIndex;
-} VkCommandPoolCreateInfo;
-
-typedef struct VkCommandBufferAllocateInfo {
-    VkStructureType         sType;
-    const void*             pNext;
-    VkCommandPool           commandPool;
-    VkCommandBufferLevel    level;
-    uint32_t                commandBufferCount;
-} VkCommandBufferAllocateInfo;
-
-typedef struct VkCommandBufferInheritanceInfo {
-    VkStructureType                  sType;
-    const void*                      pNext;
-    VkRenderPass                     renderPass;
-    uint32_t                         subpass;
-    VkFramebuffer                    framebuffer;
-    VkBool32                         occlusionQueryEnable;
-    VkQueryControlFlags              queryFlags;
-    VkQueryPipelineStatisticFlags    pipelineStatistics;
-} VkCommandBufferInheritanceInfo;
-
-typedef struct VkCommandBufferBeginInfo {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkCommandBufferUsageFlags                flags;
-    const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
-} VkCommandBufferBeginInfo;
-
-typedef struct VkBufferCopy {
-    VkDeviceSize    srcOffset;
-    VkDeviceSize    dstOffset;
-    VkDeviceSize    size;
-} VkBufferCopy;
-
-typedef struct VkImageSubresourceLayers {
-    VkImageAspectFlags    aspectMask;
-    uint32_t              mipLevel;
-    uint32_t              baseArrayLayer;
-    uint32_t              layerCount;
-} VkImageSubresourceLayers;
-
-typedef struct VkImageCopy {
-    VkImageSubresourceLayers    srcSubresource;
-    VkOffset3D                  srcOffset;
-    VkImageSubresourceLayers    dstSubresource;
-    VkOffset3D                  dstOffset;
-    VkExtent3D                  extent;
-} VkImageCopy;
-
-typedef struct VkImageBlit {
-    VkImageSubresourceLayers    srcSubresource;
-    VkOffset3D                  srcOffsets[2];
-    VkImageSubresourceLayers    dstSubresource;
-    VkOffset3D                  dstOffsets[2];
-} VkImageBlit;
-
-typedef struct VkBufferImageCopy {
-    VkDeviceSize                bufferOffset;
-    uint32_t                    bufferRowLength;
-    uint32_t                    bufferImageHeight;
-    VkImageSubresourceLayers    imageSubresource;
-    VkOffset3D                  imageOffset;
-    VkExtent3D                  imageExtent;
-} VkBufferImageCopy;
-
-typedef union VkClearColorValue {
-    float       float32[4];
-    int32_t     int32[4];
-    uint32_t    uint32[4];
-} VkClearColorValue;
-
-typedef struct VkClearDepthStencilValue {
-    float       depth;
-    uint32_t    stencil;
-} VkClearDepthStencilValue;
-
-typedef union VkClearValue {
-    VkClearColorValue           color;
-    VkClearDepthStencilValue    depthStencil;
-} VkClearValue;
-
-typedef struct VkClearAttachment {
-    VkImageAspectFlags    aspectMask;
-    uint32_t              colorAttachment;
-    VkClearValue          clearValue;
-} VkClearAttachment;
-
-typedef struct VkClearRect {
-    VkRect2D    rect;
-    uint32_t    baseArrayLayer;
-    uint32_t    layerCount;
-} VkClearRect;
-
-typedef struct VkImageResolve {
-    VkImageSubresourceLayers    srcSubresource;
-    VkOffset3D                  srcOffset;
-    VkImageSubresourceLayers    dstSubresource;
-    VkOffset3D                  dstOffset;
-    VkExtent3D                  extent;
-} VkImageResolve;
-
-typedef struct VkMemoryBarrier {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkAccessFlags      srcAccessMask;
-    VkAccessFlags      dstAccessMask;
-} VkMemoryBarrier;
-
-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;
-
-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;
-
-typedef struct VkRenderPassBeginInfo {
-    VkStructureType        sType;
-    const void*            pNext;
-    VkRenderPass           renderPass;
-    VkFramebuffer          framebuffer;
-    VkRect2D               renderArea;
-    uint32_t               clearValueCount;
-    const VkClearValue*    pClearValues;
-} VkRenderPassBeginInfo;
-
-typedef struct VkDispatchIndirectCommand {
-    uint32_t    x;
-    uint32_t    y;
-    uint32_t    z;
-} VkDispatchIndirectCommand;
-
-typedef struct VkDrawIndexedIndirectCommand {
-    uint32_t    indexCount;
-    uint32_t    instanceCount;
-    uint32_t    firstIndex;
-    int32_t     vertexOffset;
-    uint32_t    firstInstance;
-} VkDrawIndexedIndirectCommand;
-
-typedef struct VkDrawIndirectCommand {
-    uint32_t    vertexCount;
-    uint32_t    instanceCount;
-    uint32_t    firstVertex;
-    uint32_t    firstInstance;
-} VkDrawIndirectCommand;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
-typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
-typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
-typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
-typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
-typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
-typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
-typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
-typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
-typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
-typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
-typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
-typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
-typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
-typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
-typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
-typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
-typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
-typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
-typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
-typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
-typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
-typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
-typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
-typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
-typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
-typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
-typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
-typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
-typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
-typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
-typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
-typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
-typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
-typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
-typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-typedef void (VKAPI_PTR *PFN_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);
-typedef void (VKAPI_PTR *PFN_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);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
-typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
-typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
-typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
-typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
-typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
-    const VkInstanceCreateInfo*                 pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkInstance*                                 pInstance);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
-    VkInstance                                  instance,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
-    VkInstance                                  instance,
-    uint32_t*                                   pPhysicalDeviceCount,
-    VkPhysicalDevice*                           pPhysicalDevices);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
-    VkPhysicalDevice                            physicalDevice,
-    VkPhysicalDeviceFeatures*                   pFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
-    VkPhysicalDevice                            physicalDevice,
-    VkFormat                                    format,
-    VkFormatProperties*                         pFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
-    VkPhysicalDevice                            physicalDevice,
-    VkFormat                                    format,
-    VkImageType                                 type,
-    VkImageTiling                               tiling,
-    VkImageUsageFlags                           usage,
-    VkImageCreateFlags                          flags,
-    VkImageFormatProperties*                    pImageFormatProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
-    VkPhysicalDevice                            physicalDevice,
-    VkPhysicalDeviceProperties*                 pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t*                                   pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties*                    pQueueFamilyProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
-    VkPhysicalDevice                            physicalDevice,
-    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
-
-VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
-    VkInstance                                  instance,
-    const char*                                 pName);
-
-VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
-    VkDevice                                    device,
-    const char*                                 pName);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
-    VkPhysicalDevice                            physicalDevice,
-    const VkDeviceCreateInfo*                   pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDevice*                                   pDevice);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
-    VkDevice                                    device,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
-    const char*                                 pLayerName,
-    uint32_t*                                   pPropertyCount,
-    VkExtensionProperties*                      pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
-    VkPhysicalDevice                            physicalDevice,
-    const char*                                 pLayerName,
-    uint32_t*                                   pPropertyCount,
-    VkExtensionProperties*                      pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
-    uint32_t*                                   pPropertyCount,
-    VkLayerProperties*                          pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t*                                   pPropertyCount,
-    VkLayerProperties*                          pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
-    VkDevice                                    device,
-    uint32_t                                    queueFamilyIndex,
-    uint32_t                                    queueIndex,
-    VkQueue*                                    pQueue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
-    VkQueue                                     queue,
-    uint32_t                                    submitCount,
-    const VkSubmitInfo*                         pSubmits,
-    VkFence                                     fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
-    VkQueue                                     queue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
-    VkDevice                                    device);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
-    VkDevice                                    device,
-    const VkMemoryAllocateInfo*                 pAllocateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDeviceMemory*                             pMemory);
-
-VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
-    VkDevice                                    device,
-    VkDeviceMemory                              memory,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
-    VkDevice                                    device,
-    VkDeviceMemory                              memory,
-    VkDeviceSize                                offset,
-    VkDeviceSize                                size,
-    VkMemoryMapFlags                            flags,
-    void**                                      ppData);
-
-VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
-    VkDevice                                    device,
-    VkDeviceMemory                              memory);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
-    VkDevice                                    device,
-    uint32_t                                    memoryRangeCount,
-    const VkMappedMemoryRange*                  pMemoryRanges);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
-    VkDevice                                    device,
-    uint32_t                                    memoryRangeCount,
-    const VkMappedMemoryRange*                  pMemoryRanges);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
-    VkDevice                                    device,
-    VkDeviceMemory                              memory,
-    VkDeviceSize*                               pCommittedMemoryInBytes);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
-    VkDevice                                    device,
-    VkBuffer                                    buffer,
-    VkDeviceMemory                              memory,
-    VkDeviceSize                                memoryOffset);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
-    VkDevice                                    device,
-    VkImage                                     image,
-    VkDeviceMemory                              memory,
-    VkDeviceSize                                memoryOffset);
-
-VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
-    VkDevice                                    device,
-    VkBuffer                                    buffer,
-    VkMemoryRequirements*                       pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
-    VkDevice                                    device,
-    VkImage                                     image,
-    VkMemoryRequirements*                       pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
-    VkDevice                                    device,
-    VkImage                                     image,
-    uint32_t*                                   pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
-    VkPhysicalDevice                            physicalDevice,
-    VkFormat                                    format,
-    VkImageType                                 type,
-    VkSampleCountFlagBits                       samples,
-    VkImageUsageFlags                           usage,
-    VkImageTiling                               tiling,
-    uint32_t*                                   pPropertyCount,
-    VkSparseImageFormatProperties*              pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
-    VkQueue                                     queue,
-    uint32_t                                    bindInfoCount,
-    const VkBindSparseInfo*                     pBindInfo,
-    VkFence                                     fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
-    VkDevice                                    device,
-    const VkFenceCreateInfo*                    pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkFence*                                    pFence);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
-    VkDevice                                    device,
-    VkFence                                     fence,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
-    VkDevice                                    device,
-    uint32_t                                    fenceCount,
-    const VkFence*                              pFences);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
-    VkDevice                                    device,
-    VkFence                                     fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
-    VkDevice                                    device,
-    uint32_t                                    fenceCount,
-    const VkFence*                              pFences,
-    VkBool32                                    waitAll,
-    uint64_t                                    timeout);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
-    VkDevice                                    device,
-    const VkSemaphoreCreateInfo*                pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSemaphore*                                pSemaphore);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
-    VkDevice                                    device,
-    VkSemaphore                                 semaphore,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
-    VkDevice                                    device,
-    const VkEventCreateInfo*                    pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkEvent*                                    pEvent);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
-    VkDevice                                    device,
-    VkEvent                                     event,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
-    VkDevice                                    device,
-    VkEvent                                     event);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
-    VkDevice                                    device,
-    VkEvent                                     event);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
-    VkDevice                                    device,
-    VkEvent                                     event);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
-    VkDevice                                    device,
-    const VkQueryPoolCreateInfo*                pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkQueryPool*                                pQueryPool);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
-    VkDevice                                    device,
-    VkQueryPool                                 queryPool,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
-    VkDevice                                    device,
-    VkQueryPool                                 queryPool,
-    uint32_t                                    firstQuery,
-    uint32_t                                    queryCount,
-    size_t                                      dataSize,
-    void*                                       pData,
-    VkDeviceSize                                stride,
-    VkQueryResultFlags                          flags);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
-    VkDevice                                    device,
-    const VkBufferCreateInfo*                   pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkBuffer*                                   pBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
-    VkDevice                                    device,
-    VkBuffer                                    buffer,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
-    VkDevice                                    device,
-    const VkBufferViewCreateInfo*               pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkBufferView*                               pView);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
-    VkDevice                                    device,
-    VkBufferView                                bufferView,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
-    VkDevice                                    device,
-    const VkImageCreateInfo*                    pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkImage*                                    pImage);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
-    VkDevice                                    device,
-    VkImage                                     image,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
-    VkDevice                                    device,
-    VkImage                                     image,
-    const VkImageSubresource*                   pSubresource,
-    VkSubresourceLayout*                        pLayout);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
-    VkDevice                                    device,
-    const VkImageViewCreateInfo*                pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkImageView*                                pView);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
-    VkDevice                                    device,
-    VkImageView                                 imageView,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
-    VkDevice                                    device,
-    const VkShaderModuleCreateInfo*             pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkShaderModule*                             pShaderModule);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
-    VkDevice                                    device,
-    VkShaderModule                              shaderModule,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
-    VkDevice                                    device,
-    const VkPipelineCacheCreateInfo*            pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkPipelineCache*                            pPipelineCache);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
-    VkDevice                                    device,
-    VkPipelineCache                             pipelineCache,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
-    VkDevice                                    device,
-    VkPipelineCache                             pipelineCache,
-    size_t*                                     pDataSize,
-    void*                                       pData);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
-    VkDevice                                    device,
-    VkPipelineCache                             dstCache,
-    uint32_t                                    srcCacheCount,
-    const VkPipelineCache*                      pSrcCaches);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
-    VkDevice                                    device,
-    VkPipelineCache                             pipelineCache,
-    uint32_t                                    createInfoCount,
-    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
-    const VkAllocationCallbacks*                pAllocator,
-    VkPipeline*                                 pPipelines);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
-    VkDevice                                    device,
-    VkPipelineCache                             pipelineCache,
-    uint32_t                                    createInfoCount,
-    const VkComputePipelineCreateInfo*          pCreateInfos,
-    const VkAllocationCallbacks*                pAllocator,
-    VkPipeline*                                 pPipelines);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
-    VkDevice                                    device,
-    VkPipeline                                  pipeline,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
-    VkDevice                                    device,
-    const VkPipelineLayoutCreateInfo*           pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkPipelineLayout*                           pPipelineLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
-    VkDevice                                    device,
-    VkPipelineLayout                            pipelineLayout,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
-    VkDevice                                    device,
-    const VkSamplerCreateInfo*                  pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSampler*                                  pSampler);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
-    VkDevice                                    device,
-    VkSampler                                   sampler,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
-    VkDevice                                    device,
-    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDescriptorSetLayout*                      pSetLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
-    VkDevice                                    device,
-    VkDescriptorSetLayout                       descriptorSetLayout,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
-    VkDevice                                    device,
-    const VkDescriptorPoolCreateInfo*           pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDescriptorPool*                           pDescriptorPool);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
-    VkDevice                                    device,
-    VkDescriptorPool                            descriptorPool,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
-    VkDevice                                    device,
-    VkDescriptorPool                            descriptorPool,
-    VkDescriptorPoolResetFlags                  flags);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
-    VkDevice                                    device,
-    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
-    VkDescriptorSet*                            pDescriptorSets);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
-    VkDevice                                    device,
-    VkDescriptorPool                            descriptorPool,
-    uint32_t                                    descriptorSetCount,
-    const VkDescriptorSet*                      pDescriptorSets);
-
-VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
-    VkDevice                                    device,
-    uint32_t                                    descriptorWriteCount,
-    const VkWriteDescriptorSet*                 pDescriptorWrites,
-    uint32_t                                    descriptorCopyCount,
-    const VkCopyDescriptorSet*                  pDescriptorCopies);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
-    VkDevice                                    device,
-    const VkFramebufferCreateInfo*              pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkFramebuffer*                              pFramebuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
-    VkDevice                                    device,
-    VkFramebuffer                               framebuffer,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
-    VkDevice                                    device,
-    const VkRenderPassCreateInfo*               pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkRenderPass*                               pRenderPass);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
-    VkDevice                                    device,
-    VkRenderPass                                renderPass,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
-    VkDevice                                    device,
-    VkRenderPass                                renderPass,
-    VkExtent2D*                                 pGranularity);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
-    VkDevice                                    device,
-    const VkCommandPoolCreateInfo*              pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkCommandPool*                              pCommandPool);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
-    VkDevice                                    device,
-    VkCommandPool                               commandPool,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
-    VkDevice                                    device,
-    VkCommandPool                               commandPool,
-    VkCommandPoolResetFlags                     flags);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
-    VkDevice                                    device,
-    const VkCommandBufferAllocateInfo*          pAllocateInfo,
-    VkCommandBuffer*                            pCommandBuffers);
-
-VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
-    VkDevice                                    device,
-    VkCommandPool                               commandPool,
-    uint32_t                                    commandBufferCount,
-    const VkCommandBuffer*                      pCommandBuffers);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
-    VkCommandBuffer                             commandBuffer,
-    const VkCommandBufferBeginInfo*             pBeginInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
-    VkCommandBuffer                             commandBuffer);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
-    VkCommandBuffer                             commandBuffer,
-    VkCommandBufferResetFlags                   flags);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
-    VkCommandBuffer                             commandBuffer,
-    VkPipelineBindPoint                         pipelineBindPoint,
-    VkPipeline                                  pipeline);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    firstViewport,
-    uint32_t                                    viewportCount,
-    const VkViewport*                           pViewports);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    firstScissor,
-    uint32_t                                    scissorCount,
-    const VkRect2D*                             pScissors);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
-    VkCommandBuffer                             commandBuffer,
-    float                                       lineWidth);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
-    VkCommandBuffer                             commandBuffer,
-    float                                       depthBiasConstantFactor,
-    float                                       depthBiasClamp,
-    float                                       depthBiasSlopeFactor);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
-    VkCommandBuffer                             commandBuffer,
-    const float                                 blendConstants[4]);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
-    VkCommandBuffer                             commandBuffer,
-    float                                       minDepthBounds,
-    float                                       maxDepthBounds);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
-    VkCommandBuffer                             commandBuffer,
-    VkStencilFaceFlags                          faceMask,
-    uint32_t                                    compareMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
-    VkCommandBuffer                             commandBuffer,
-    VkStencilFaceFlags                          faceMask,
-    uint32_t                                    writeMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
-    VkCommandBuffer                             commandBuffer,
-    VkStencilFaceFlags                          faceMask,
-    uint32_t                                    reference);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
-    VkCommandBuffer                             commandBuffer,
-    VkPipelineBindPoint                         pipelineBindPoint,
-    VkPipelineLayout                            layout,
-    uint32_t                                    firstSet,
-    uint32_t                                    descriptorSetCount,
-    const VkDescriptorSet*                      pDescriptorSets,
-    uint32_t                                    dynamicOffsetCount,
-    const uint32_t*                             pDynamicOffsets);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    buffer,
-    VkDeviceSize                                offset,
-    VkIndexType                                 indexType);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    firstBinding,
-    uint32_t                                    bindingCount,
-    const VkBuffer*                             pBuffers,
-    const VkDeviceSize*                         pOffsets);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    vertexCount,
-    uint32_t                                    instanceCount,
-    uint32_t                                    firstVertex,
-    uint32_t                                    firstInstance);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    indexCount,
-    uint32_t                                    instanceCount,
-    uint32_t                                    firstIndex,
-    int32_t                                     vertexOffset,
-    uint32_t                                    firstInstance);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    buffer,
-    VkDeviceSize                                offset,
-    uint32_t                                    drawCount,
-    uint32_t                                    stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    buffer,
-    VkDeviceSize                                offset,
-    uint32_t                                    drawCount,
-    uint32_t                                    stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    groupCountX,
-    uint32_t                                    groupCountY,
-    uint32_t                                    groupCountZ);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    buffer,
-    VkDeviceSize                                offset);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    srcBuffer,
-    VkBuffer                                    dstBuffer,
-    uint32_t                                    regionCount,
-    const VkBufferCopy*                         pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
-    VkCommandBuffer                             commandBuffer,
-    VkImage                                     srcImage,
-    VkImageLayout                               srcImageLayout,
-    VkImage                                     dstImage,
-    VkImageLayout                               dstImageLayout,
-    uint32_t                                    regionCount,
-    const VkImageCopy*                          pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
-    VkCommandBuffer                             commandBuffer,
-    VkImage                                     srcImage,
-    VkImageLayout                               srcImageLayout,
-    VkImage                                     dstImage,
-    VkImageLayout                               dstImageLayout,
-    uint32_t                                    regionCount,
-    const VkImageBlit*                          pRegions,
-    VkFilter                                    filter);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    srcBuffer,
-    VkImage                                     dstImage,
-    VkImageLayout                               dstImageLayout,
-    uint32_t                                    regionCount,
-    const VkBufferImageCopy*                    pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
-    VkCommandBuffer                             commandBuffer,
-    VkImage                                     srcImage,
-    VkImageLayout                               srcImageLayout,
-    VkBuffer                                    dstBuffer,
-    uint32_t                                    regionCount,
-    const VkBufferImageCopy*                    pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    dstBuffer,
-    VkDeviceSize                                dstOffset,
-    VkDeviceSize                                dataSize,
-    const void*                                 pData);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    dstBuffer,
-    VkDeviceSize                                dstOffset,
-    VkDeviceSize                                size,
-    uint32_t                                    data);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
-    VkCommandBuffer                             commandBuffer,
-    VkImage                                     image,
-    VkImageLayout                               imageLayout,
-    const VkClearColorValue*                    pColor,
-    uint32_t                                    rangeCount,
-    const VkImageSubresourceRange*              pRanges);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
-    VkCommandBuffer                             commandBuffer,
-    VkImage                                     image,
-    VkImageLayout                               imageLayout,
-    const VkClearDepthStencilValue*             pDepthStencil,
-    uint32_t                                    rangeCount,
-    const VkImageSubresourceRange*              pRanges);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    attachmentCount,
-    const VkClearAttachment*                    pAttachments,
-    uint32_t                                    rectCount,
-    const VkClearRect*                          pRects);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
-    VkCommandBuffer                             commandBuffer,
-    VkImage                                     srcImage,
-    VkImageLayout                               srcImageLayout,
-    VkImage                                     dstImage,
-    VkImageLayout                               dstImageLayout,
-    uint32_t                                    regionCount,
-    const VkImageResolve*                       pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
-    VkCommandBuffer                             commandBuffer,
-    VkEvent                                     event,
-    VkPipelineStageFlags                        stageMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
-    VkCommandBuffer                             commandBuffer,
-    VkEvent                                     event,
-    VkPipelineStageFlags                        stageMask);
-
-VKAPI_ATTR void VKAPI_CALL 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);
-
-VKAPI_ATTR void VKAPI_CALL 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);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
-    VkCommandBuffer                             commandBuffer,
-    VkQueryPool                                 queryPool,
-    uint32_t                                    query,
-    VkQueryControlFlags                         flags);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
-    VkCommandBuffer                             commandBuffer,
-    VkQueryPool                                 queryPool,
-    uint32_t                                    query);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
-    VkCommandBuffer                             commandBuffer,
-    VkQueryPool                                 queryPool,
-    uint32_t                                    firstQuery,
-    uint32_t                                    queryCount);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
-    VkCommandBuffer                             commandBuffer,
-    VkPipelineStageFlagBits                     pipelineStage,
-    VkQueryPool                                 queryPool,
-    uint32_t                                    query);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
-    VkCommandBuffer                             commandBuffer,
-    VkQueryPool                                 queryPool,
-    uint32_t                                    firstQuery,
-    uint32_t                                    queryCount,
-    VkBuffer                                    dstBuffer,
-    VkDeviceSize                                dstOffset,
-    VkDeviceSize                                stride,
-    VkQueryResultFlags                          flags);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
-    VkCommandBuffer                             commandBuffer,
-    VkPipelineLayout                            layout,
-    VkShaderStageFlags                          stageFlags,
-    uint32_t                                    offset,
-    uint32_t                                    size,
-    const void*                                 pValues);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
-    VkCommandBuffer                             commandBuffer,
-    const VkRenderPassBeginInfo*                pRenderPassBegin,
-    VkSubpassContents                           contents);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
-    VkCommandBuffer                             commandBuffer,
-    VkSubpassContents                           contents);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
-    VkCommandBuffer                             commandBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    commandBufferCount,
-    const VkCommandBuffer*                      pCommandBuffers);
-#endif
-
-#define VK_KHR_surface 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
-
-#define VK_KHR_SURFACE_SPEC_VERSION       25
-#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
-#define VK_COLORSPACE_SRGB_NONLINEAR_KHR  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
-
-
-typedef enum VkColorSpaceKHR {
-    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
-    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
-    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
-    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
-    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
-    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
-    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
-    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
-    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
-    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
-    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
-    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
-    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
-    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
-    VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
-    VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
-    VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
-    VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
-    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkColorSpaceKHR;
-
-typedef enum VkPresentModeKHR {
-    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
-    VK_PRESENT_MODE_MAILBOX_KHR = 1,
-    VK_PRESENT_MODE_FIFO_KHR = 2,
-    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
-    VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
-    VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
-    VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
-    VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
-    VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
-    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPresentModeKHR;
-
-
-typedef enum VkSurfaceTransformFlagBitsKHR {
-    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
-    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
-    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
-    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
-    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
-    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
-    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSurfaceTransformFlagBitsKHR;
-typedef VkFlags VkSurfaceTransformFlagsKHR;
-
-typedef enum VkCompositeAlphaFlagBitsKHR {
-    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
-    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
-    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
-    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
-    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkCompositeAlphaFlagBitsKHR;
-typedef VkFlags VkCompositeAlphaFlagsKHR;
-
-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;
-
-typedef struct VkSurfaceFormatKHR {
-    VkFormat           format;
-    VkColorSpaceKHR    colorSpace;
-} VkSurfaceFormatKHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
-    VkInstance                                  instance,
-    VkSurfaceKHR                                surface,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    queueFamilyIndex,
-    VkSurfaceKHR                                surface,
-    VkBool32*                                   pSupported);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkSurfaceKHR                                surface,
-    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkSurfaceKHR                                surface,
-    uint32_t*                                   pSurfaceFormatCount,
-    VkSurfaceFormatKHR*                         pSurfaceFormats);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkSurfaceKHR                                surface,
-    uint32_t*                                   pPresentModeCount,
-    VkPresentModeKHR*                           pPresentModes);
-#endif
-
-#define VK_KHR_swapchain 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
-
-#define VK_KHR_SWAPCHAIN_SPEC_VERSION     68
-#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
-
-
-typedef enum VkSwapchainCreateFlagBitsKHR {
-    VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
-    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSwapchainCreateFlagBitsKHR;
-typedef VkFlags VkSwapchainCreateFlagsKHR;
-
-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;
-
-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;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
-typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
-typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
-    VkDevice                                    device,
-    const VkSwapchainCreateInfoKHR*             pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSwapchainKHR*                             pSwapchain);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain,
-    uint32_t*                                   pSwapchainImageCount,
-    VkImage*                                    pSwapchainImages);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain,
-    uint64_t                                    timeout,
-    VkSemaphore                                 semaphore,
-    VkFence                                     fence,
-    uint32_t*                                   pImageIndex);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
-    VkQueue                                     queue,
-    const VkPresentInfoKHR*                     pPresentInfo);
-#endif
-
-#define VK_KHR_display 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
-
-#define VK_KHR_DISPLAY_SPEC_VERSION       21
-#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
-
-
-typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
-    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
-    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
-    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
-    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
-    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDisplayPlaneAlphaFlagBitsKHR;
-typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
-typedef VkFlags VkDisplayModeCreateFlagsKHR;
-typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
-
-typedef struct VkDisplayPropertiesKHR {
-    VkDisplayKHR                  display;
-    const char*                   displayName;
-    VkExtent2D                    physicalDimensions;
-    VkExtent2D                    physicalResolution;
-    VkSurfaceTransformFlagsKHR    supportedTransforms;
-    VkBool32                      planeReorderPossible;
-    VkBool32                      persistentContent;
-} VkDisplayPropertiesKHR;
-
-typedef struct VkDisplayModeParametersKHR {
-    VkExtent2D    visibleRegion;
-    uint32_t      refreshRate;
-} VkDisplayModeParametersKHR;
-
-typedef struct VkDisplayModePropertiesKHR {
-    VkDisplayModeKHR              displayMode;
-    VkDisplayModeParametersKHR    parameters;
-} VkDisplayModePropertiesKHR;
-
-typedef struct VkDisplayModeCreateInfoKHR {
-    VkStructureType                sType;
-    const void*                    pNext;
-    VkDisplayModeCreateFlagsKHR    flags;
-    VkDisplayModeParametersKHR     parameters;
-} VkDisplayModeCreateInfoKHR;
-
-typedef struct VkDisplayPlaneCapabilitiesKHR {
-    VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
-    VkOffset2D                     minSrcPosition;
-    VkOffset2D                     maxSrcPosition;
-    VkExtent2D                     minSrcExtent;
-    VkExtent2D                     maxSrcExtent;
-    VkOffset2D                     minDstPosition;
-    VkOffset2D                     maxDstPosition;
-    VkExtent2D                     minDstExtent;
-    VkExtent2D                     maxDstExtent;
-} VkDisplayPlaneCapabilitiesKHR;
-
-typedef struct VkDisplayPlanePropertiesKHR {
-    VkDisplayKHR    currentDisplay;
-    uint32_t        currentStackIndex;
-} VkDisplayPlanePropertiesKHR;
-
-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;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t*                                   pPropertyCount,
-    VkDisplayPropertiesKHR*                     pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t*                                   pPropertyCount,
-    VkDisplayPlanePropertiesKHR*                pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    planeIndex,
-    uint32_t*                                   pDisplayCount,
-    VkDisplayKHR*                               pDisplays);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkDisplayKHR                                display,
-    uint32_t*                                   pPropertyCount,
-    VkDisplayModePropertiesKHR*                 pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkDisplayKHR                                display,
-    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDisplayModeKHR*                           pMode);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkDisplayModeKHR                            mode,
-    uint32_t                                    planeIndex,
-    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
-    VkInstance                                  instance,
-    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-#endif
-
-#define VK_KHR_display_swapchain 1
-#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
-#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
-
-typedef struct VkDisplayPresentInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkRect2D           srcRect;
-    VkRect2D           dstRect;
-    VkBool32           persistent;
-} VkDisplayPresentInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
-    VkDevice                                    device,
-    uint32_t                                    swapchainCount,
-    const VkSwapchainCreateInfoKHR*             pCreateInfos,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSwapchainKHR*                             pSwapchains);
-#endif
-
-#ifdef VK_USE_PLATFORM_XLIB_KHR
-#define VK_KHR_xlib_surface 1
-#include <X11/Xlib.h>
-
-#define VK_KHR_XLIB_SURFACE_SPEC_VERSION  6
-#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
-
-typedef VkFlags VkXlibSurfaceCreateFlagsKHR;
-
-typedef struct VkXlibSurfaceCreateInfoKHR {
-    VkStructureType                sType;
-    const void*                    pNext;
-    VkXlibSurfaceCreateFlagsKHR    flags;
-    Display*                       dpy;
-    Window                         window;
-} VkXlibSurfaceCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
-    VkInstance                                  instance,
-    const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    queueFamilyIndex,
-    Display*                                    dpy,
-    VisualID                                    visualID);
-#endif
-#endif /* VK_USE_PLATFORM_XLIB_KHR */
-
-#ifdef VK_USE_PLATFORM_XCB_KHR
-#define VK_KHR_xcb_surface 1
-#include <xcb/xcb.h>
-
-#define VK_KHR_XCB_SURFACE_SPEC_VERSION   6
-#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
-
-typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
-
-typedef struct VkXcbSurfaceCreateInfoKHR {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkXcbSurfaceCreateFlagsKHR    flags;
-    xcb_connection_t*             connection;
-    xcb_window_t                  window;
-} VkXcbSurfaceCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
-    VkInstance                                  instance,
-    const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    queueFamilyIndex,
-    xcb_connection_t*                           connection,
-    xcb_visualid_t                              visual_id);
-#endif
-#endif /* VK_USE_PLATFORM_XCB_KHR */
-
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
-#define VK_KHR_wayland_surface 1
-#include <wayland-client.h>
-
-#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
-#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
-
-typedef VkFlags VkWaylandSurfaceCreateFlagsKHR;
-
-typedef struct VkWaylandSurfaceCreateInfoKHR {
-    VkStructureType                   sType;
-    const void*                       pNext;
-    VkWaylandSurfaceCreateFlagsKHR    flags;
-    struct wl_display*                display;
-    struct wl_surface*                surface;
-} VkWaylandSurfaceCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
-    VkInstance                                  instance,
-    const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    queueFamilyIndex,
-    struct wl_display*                          display);
-#endif
-#endif /* VK_USE_PLATFORM_WAYLAND_KHR */
-
-#ifdef VK_USE_PLATFORM_MIR_KHR
-#define VK_KHR_mir_surface 1
-#include <mir_toolkit/client_types.h>
-
-#define VK_KHR_MIR_SURFACE_SPEC_VERSION   4
-#define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
-
-typedef VkFlags VkMirSurfaceCreateFlagsKHR;
-
-typedef struct VkMirSurfaceCreateInfoKHR {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkMirSurfaceCreateFlagsKHR    flags;
-    MirConnection*                connection;
-    MirSurface*                   mirSurface;
-} VkMirSurfaceCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
-    VkInstance                                  instance,
-    const VkMirSurfaceCreateInfoKHR*            pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    queueFamilyIndex,
-    MirConnection*                              connection);
-#endif
-#endif /* VK_USE_PLATFORM_MIR_KHR */
-
-#ifdef VK_USE_PLATFORM_ANDROID_KHR
-#define VK_KHR_android_surface 1
-#include <android/native_window.h>
-
-#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
-#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
-
-typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
-
-typedef struct VkAndroidSurfaceCreateInfoKHR {
-    VkStructureType                   sType;
-    const void*                       pNext;
-    VkAndroidSurfaceCreateFlagsKHR    flags;
-    ANativeWindow*                    window;
-} VkAndroidSurfaceCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
-    VkInstance                                  instance,
-    const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-#endif
-#endif /* VK_USE_PLATFORM_ANDROID_KHR */
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_KHR_win32_surface 1
-#include <windows.h>
-
-#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
-#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
-
-typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
-
-typedef struct VkWin32SurfaceCreateInfoKHR {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkWin32SurfaceCreateFlagsKHR    flags;
-    HINSTANCE                       hinstance;
-    HWND                            hwnd;
-} VkWin32SurfaceCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
-    VkInstance                                  instance,
-    const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t                                    queueFamilyIndex);
-#endif
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#define VK_KHR_sampler_mirror_clamp_to_edge 1
-#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
-#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
-
-
-#define VK_KHR_get_physical_device_properties2 1
-#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
-#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
-
-typedef struct VkPhysicalDeviceFeatures2KHR {
-    VkStructureType             sType;
-    void*                       pNext;
-    VkPhysicalDeviceFeatures    features;
-} VkPhysicalDeviceFeatures2KHR;
-
-typedef struct VkPhysicalDeviceProperties2KHR {
-    VkStructureType               sType;
-    void*                         pNext;
-    VkPhysicalDeviceProperties    properties;
-} VkPhysicalDeviceProperties2KHR;
-
-typedef struct VkFormatProperties2KHR {
-    VkStructureType       sType;
-    void*                 pNext;
-    VkFormatProperties    formatProperties;
-} VkFormatProperties2KHR;
-
-typedef struct VkImageFormatProperties2KHR {
-    VkStructureType            sType;
-    void*                      pNext;
-    VkImageFormatProperties    imageFormatProperties;
-} VkImageFormatProperties2KHR;
-
-typedef struct VkPhysicalDeviceImageFormatInfo2KHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkFormat              format;
-    VkImageType           type;
-    VkImageTiling         tiling;
-    VkImageUsageFlags     usage;
-    VkImageCreateFlags    flags;
-} VkPhysicalDeviceImageFormatInfo2KHR;
-
-typedef struct VkQueueFamilyProperties2KHR {
-    VkStructureType            sType;
-    void*                      pNext;
-    VkQueueFamilyProperties    queueFamilyProperties;
-} VkQueueFamilyProperties2KHR;
-
-typedef struct VkPhysicalDeviceMemoryProperties2KHR {
-    VkStructureType                     sType;
-    void*                               pNext;
-    VkPhysicalDeviceMemoryProperties    memoryProperties;
-} VkPhysicalDeviceMemoryProperties2KHR;
-
-typedef struct VkSparseImageFormatProperties2KHR {
-    VkStructureType                  sType;
-    void*                            pNext;
-    VkSparseImageFormatProperties    properties;
-} VkSparseImageFormatProperties2KHR;
-
-typedef struct VkPhysicalDeviceSparseImageFormatInfo2KHR {
-    VkStructureType          sType;
-    const void*              pNext;
-    VkFormat                 format;
-    VkImageType              type;
-    VkSampleCountFlagBits    samples;
-    VkImageUsageFlags        usage;
-    VkImageTiling            tiling;
-} VkPhysicalDeviceSparseImageFormatInfo2KHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkPhysicalDeviceFeatures2KHR*               pFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkPhysicalDeviceProperties2KHR*             pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkFormat                                    format,
-    VkFormatProperties2KHR*                     pFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2KHR*  pImageFormatInfo,
-    VkImageFormatProperties2KHR*                pImageFormatProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    uint32_t*                                   pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2KHR*                pQueueFamilyProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    VkPhysicalDeviceMemoryProperties2KHR*       pMemoryProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
-    uint32_t*                                   pPropertyCount,
-    VkSparseImageFormatProperties2KHR*          pProperties);
-#endif
-
-#define VK_KHR_shader_draw_parameters 1
-#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
-#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
-
-
-#define VK_KHR_maintenance1 1
-#define VK_KHR_MAINTENANCE1_SPEC_VERSION  1
-#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
-
-typedef VkFlags VkCommandPoolTrimFlagsKHR;
-
-typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
-    VkDevice                                    device,
-    VkCommandPool                               commandPool,
-    VkCommandPoolTrimFlagsKHR                   flags);
-#endif
-
-#define VK_KHR_external_memory_capabilities 1
-#define VK_LUID_SIZE_KHR                  8
-#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
-
-
-typedef enum VkExternalMemoryHandleTypeFlagBitsKHR {
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 0x00000008,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 0x00000010,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 0x00000020,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 0x00000040,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkExternalMemoryHandleTypeFlagBitsKHR;
-typedef VkFlags VkExternalMemoryHandleTypeFlagsKHR;
-
-typedef enum VkExternalMemoryFeatureFlagBitsKHR {
-    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 0x00000001,
-    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 0x00000002,
-    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 0x00000004,
-    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkExternalMemoryFeatureFlagBitsKHR;
-typedef VkFlags VkExternalMemoryFeatureFlagsKHR;
-
-typedef struct VkExternalMemoryPropertiesKHR {
-    VkExternalMemoryFeatureFlagsKHR       externalMemoryFeatures;
-    VkExternalMemoryHandleTypeFlagsKHR    exportFromImportedHandleTypes;
-    VkExternalMemoryHandleTypeFlagsKHR    compatibleHandleTypes;
-} VkExternalMemoryPropertiesKHR;
-
-typedef struct VkPhysicalDeviceExternalImageFormatInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-} VkPhysicalDeviceExternalImageFormatInfoKHR;
-
-typedef struct VkExternalImageFormatPropertiesKHR {
-    VkStructureType                  sType;
-    void*                            pNext;
-    VkExternalMemoryPropertiesKHR    externalMemoryProperties;
-} VkExternalImageFormatPropertiesKHR;
-
-typedef struct VkPhysicalDeviceExternalBufferInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkBufferCreateFlags                      flags;
-    VkBufferUsageFlags                       usage;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-} VkPhysicalDeviceExternalBufferInfoKHR;
-
-typedef struct VkExternalBufferPropertiesKHR {
-    VkStructureType                  sType;
-    void*                            pNext;
-    VkExternalMemoryPropertiesKHR    externalMemoryProperties;
-} VkExternalBufferPropertiesKHR;
-
-typedef struct VkPhysicalDeviceIDPropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    uint8_t            deviceUUID[VK_UUID_SIZE];
-    uint8_t            driverUUID[VK_UUID_SIZE];
-    uint8_t            deviceLUID[VK_LUID_SIZE_KHR];
-    uint32_t           deviceNodeMask;
-    VkBool32           deviceLUIDValid;
-} VkPhysicalDeviceIDPropertiesKHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, VkExternalBufferPropertiesKHR* pExternalBufferProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo,
-    VkExternalBufferPropertiesKHR*              pExternalBufferProperties);
-#endif
-
-#define VK_KHR_external_memory 1
-#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
-#define VK_QUEUE_FAMILY_EXTERNAL_KHR      (~0U-1)
-
-typedef struct VkExternalMemoryImageCreateInfoKHR {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    VkExternalMemoryHandleTypeFlagsKHR    handleTypes;
-} VkExternalMemoryImageCreateInfoKHR;
-
-typedef struct VkExternalMemoryBufferCreateInfoKHR {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    VkExternalMemoryHandleTypeFlagsKHR    handleTypes;
-} VkExternalMemoryBufferCreateInfoKHR;
-
-typedef struct VkExportMemoryAllocateInfoKHR {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    VkExternalMemoryHandleTypeFlagsKHR    handleTypes;
-} VkExportMemoryAllocateInfoKHR;
-
-
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_KHR_external_memory_win32 1
-#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
-
-typedef struct VkImportMemoryWin32HandleInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-    HANDLE                                   handle;
-    LPCWSTR                                  name;
-} VkImportMemoryWin32HandleInfoKHR;
-
-typedef struct VkExportMemoryWin32HandleInfoKHR {
-    VkStructureType               sType;
-    const void*                   pNext;
-    const SECURITY_ATTRIBUTES*    pAttributes;
-    DWORD                         dwAccess;
-    LPCWSTR                       name;
-} VkExportMemoryWin32HandleInfoKHR;
-
-typedef struct VkMemoryWin32HandlePropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           memoryTypeBits;
-} VkMemoryWin32HandlePropertiesKHR;
-
-typedef struct VkMemoryGetWin32HandleInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkDeviceMemory                           memory;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-} VkMemoryGetWin32HandleInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
-    VkDevice                                    device,
-    const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
-    HANDLE*                                     pHandle);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
-    VkDevice                                    device,
-    VkExternalMemoryHandleTypeFlagBitsKHR       handleType,
-    HANDLE                                      handle,
-    VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties);
-#endif
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#define VK_KHR_external_memory_fd 1
-#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
-
-typedef struct VkImportMemoryFdInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-    int                                      fd;
-} VkImportMemoryFdInfoKHR;
-
-typedef struct VkMemoryFdPropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           memoryTypeBits;
-} VkMemoryFdPropertiesKHR;
-
-typedef struct VkMemoryGetFdInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkDeviceMemory                           memory;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-} VkMemoryGetFdInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
-    VkDevice                                    device,
-    const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
-    int*                                        pFd);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
-    VkDevice                                    device,
-    VkExternalMemoryHandleTypeFlagBitsKHR       handleType,
-    int                                         fd,
-    VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
-#endif
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_KHR_win32_keyed_mutex 1
-#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
-#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
-
-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;
-
-
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#define VK_KHR_external_semaphore_capabilities 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
-
-
-typedef enum VkExternalSemaphoreHandleTypeFlagBitsKHR {
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 0x00000008,
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 0x00000010,
-    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkExternalSemaphoreHandleTypeFlagBitsKHR;
-typedef VkFlags VkExternalSemaphoreHandleTypeFlagsKHR;
-
-typedef enum VkExternalSemaphoreFeatureFlagBitsKHR {
-    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
-    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
-    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkExternalSemaphoreFeatureFlagBitsKHR;
-typedef VkFlags VkExternalSemaphoreFeatureFlagsKHR;
-
-typedef struct VkPhysicalDeviceExternalSemaphoreInfoKHR {
-    VkStructureType                             sType;
-    const void*                                 pNext;
-    VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType;
-} VkPhysicalDeviceExternalSemaphoreInfoKHR;
-
-typedef struct VkExternalSemaphorePropertiesKHR {
-    VkStructureType                          sType;
-    void*                                    pNext;
-    VkExternalSemaphoreHandleTypeFlagsKHR    exportFromImportedHandleTypes;
-    VkExternalSemaphoreHandleTypeFlagsKHR    compatibleHandleTypes;
-    VkExternalSemaphoreFeatureFlagsKHR       externalSemaphoreFeatures;
-} VkExternalSemaphorePropertiesKHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo,
-    VkExternalSemaphorePropertiesKHR*           pExternalSemaphoreProperties);
-#endif
-
-#define VK_KHR_external_semaphore 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
-
-
-typedef enum VkSemaphoreImportFlagBitsKHR {
-    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
-    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreImportFlagBitsKHR;
-typedef VkFlags VkSemaphoreImportFlagsKHR;
-
-typedef struct VkExportSemaphoreCreateInfoKHR {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkExternalSemaphoreHandleTypeFlagsKHR    handleTypes;
-} VkExportSemaphoreCreateInfoKHR;
-
-
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_KHR_external_semaphore_win32 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
-
-typedef struct VkImportSemaphoreWin32HandleInfoKHR {
-    VkStructureType                             sType;
-    const void*                                 pNext;
-    VkSemaphore                                 semaphore;
-    VkSemaphoreImportFlagsKHR                   flags;
-    VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType;
-    HANDLE                                      handle;
-    LPCWSTR                                     name;
-} VkImportSemaphoreWin32HandleInfoKHR;
-
-typedef struct VkExportSemaphoreWin32HandleInfoKHR {
-    VkStructureType               sType;
-    const void*                   pNext;
-    const SECURITY_ATTRIBUTES*    pAttributes;
-    DWORD                         dwAccess;
-    LPCWSTR                       name;
-} VkExportSemaphoreWin32HandleInfoKHR;
-
-typedef struct VkD3D12FenceSubmitInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           waitSemaphoreValuesCount;
-    const uint64_t*    pWaitSemaphoreValues;
-    uint32_t           signalSemaphoreValuesCount;
-    const uint64_t*    pSignalSemaphoreValues;
-} VkD3D12FenceSubmitInfoKHR;
-
-typedef struct VkSemaphoreGetWin32HandleInfoKHR {
-    VkStructureType                             sType;
-    const void*                                 pNext;
-    VkSemaphore                                 semaphore;
-    VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType;
-} VkSemaphoreGetWin32HandleInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
-    VkDevice                                    device,
-    const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
-    VkDevice                                    device,
-    const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
-    HANDLE*                                     pHandle);
-#endif
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#define VK_KHR_external_semaphore_fd 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
-
-typedef struct VkImportSemaphoreFdInfoKHR {
-    VkStructureType                             sType;
-    const void*                                 pNext;
-    VkSemaphore                                 semaphore;
-    VkSemaphoreImportFlagsKHR                   flags;
-    VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType;
-    int                                         fd;
-} VkImportSemaphoreFdInfoKHR;
-
-typedef struct VkSemaphoreGetFdInfoKHR {
-    VkStructureType                             sType;
-    const void*                                 pNext;
-    VkSemaphore                                 semaphore;
-    VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType;
-} VkSemaphoreGetFdInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
-    VkDevice                                    device,
-    const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
-    VkDevice                                    device,
-    const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
-    int*                                        pFd);
-#endif
-
-#define VK_KHR_push_descriptor 1
-#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
-#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
-
-typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           maxPushDescriptors;
-} VkPhysicalDevicePushDescriptorPropertiesKHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
-    VkCommandBuffer                             commandBuffer,
-    VkPipelineBindPoint                         pipelineBindPoint,
-    VkPipelineLayout                            layout,
-    uint32_t                                    set,
-    uint32_t                                    descriptorWriteCount,
-    const VkWriteDescriptorSet*                 pDescriptorWrites);
-#endif
-
-#define VK_KHR_16bit_storage 1
-#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
-#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
-
-typedef struct VkPhysicalDevice16BitStorageFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           storageBuffer16BitAccess;
-    VkBool32           uniformAndStorageBuffer16BitAccess;
-    VkBool32           storagePushConstant16;
-    VkBool32           storageInputOutput16;
-} VkPhysicalDevice16BitStorageFeaturesKHR;
-
-
-
-#define VK_KHR_incremental_present 1
-#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
-#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
-
-typedef struct VkRectLayerKHR {
-    VkOffset2D    offset;
-    VkExtent2D    extent;
-    uint32_t      layer;
-} VkRectLayerKHR;
-
-typedef struct VkPresentRegionKHR {
-    uint32_t                 rectangleCount;
-    const VkRectLayerKHR*    pRectangles;
-} VkPresentRegionKHR;
-
-typedef struct VkPresentRegionsKHR {
-    VkStructureType              sType;
-    const void*                  pNext;
-    uint32_t                     swapchainCount;
-    const VkPresentRegionKHR*    pRegions;
-} VkPresentRegionsKHR;
-
-
-
-#define VK_KHR_descriptor_update_template 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplateKHR)
-
-#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
-#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
-
-
-typedef enum VkDescriptorUpdateTemplateTypeKHR {
-    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
-    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
-    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
-    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR,
-    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE_KHR = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR + 1),
-    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDescriptorUpdateTemplateTypeKHR;
-
-typedef VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
-
-typedef struct VkDescriptorUpdateTemplateEntryKHR {
-    uint32_t            dstBinding;
-    uint32_t            dstArrayElement;
-    uint32_t            descriptorCount;
-    VkDescriptorType    descriptorType;
-    size_t              offset;
-    size_t              stride;
-} VkDescriptorUpdateTemplateEntryKHR;
-
-typedef struct VkDescriptorUpdateTemplateCreateInfoKHR {
-    VkStructureType                              sType;
-    void*                                        pNext;
-    VkDescriptorUpdateTemplateCreateFlagsKHR     flags;
-    uint32_t                                     descriptorUpdateEntryCount;
-    const VkDescriptorUpdateTemplateEntryKHR*    pDescriptorUpdateEntries;
-    VkDescriptorUpdateTemplateTypeKHR            templateType;
-    VkDescriptorSetLayout                        descriptorSetLayout;
-    VkPipelineBindPoint                          pipelineBindPoint;
-    VkPipelineLayout                             pipelineLayout;
-    uint32_t                                     set;
-} VkDescriptorUpdateTemplateCreateInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData);
-typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
-    VkDevice                                    device,
-    const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDescriptorUpdateTemplateKHR*              pDescriptorUpdateTemplate);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
-    VkDevice                                    device,
-    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
-    VkDevice                                    device,
-    VkDescriptorSet                             descriptorSet,
-    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
-    const void*                                 pData);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
-    VkCommandBuffer                             commandBuffer,
-    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
-    VkPipelineLayout                            layout,
-    uint32_t                                    set,
-    const void*                                 pData);
-#endif
-
-#define VK_KHR_shared_presentable_image 1
-#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
-#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
-
-typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
-    VkStructureType      sType;
-    void*                pNext;
-    VkImageUsageFlags    sharedPresentSupportedUsageFlags;
-} VkSharedPresentSurfaceCapabilitiesKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain);
-#endif
-
-#define VK_KHR_external_fence_capabilities 1
-#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
-
-
-typedef enum VkExternalFenceHandleTypeFlagBitsKHR {
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 0x00000008,
-    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkExternalFenceHandleTypeFlagBitsKHR;
-typedef VkFlags VkExternalFenceHandleTypeFlagsKHR;
-
-typedef enum VkExternalFenceFeatureFlagBitsKHR {
-    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
-    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
-    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkExternalFenceFeatureFlagBitsKHR;
-typedef VkFlags VkExternalFenceFeatureFlagsKHR;
-
-typedef struct VkPhysicalDeviceExternalFenceInfoKHR {
-    VkStructureType                         sType;
-    const void*                             pNext;
-    VkExternalFenceHandleTypeFlagBitsKHR    handleType;
-} VkPhysicalDeviceExternalFenceInfoKHR;
-
-typedef struct VkExternalFencePropertiesKHR {
-    VkStructureType                      sType;
-    void*                                pNext;
-    VkExternalFenceHandleTypeFlagsKHR    exportFromImportedHandleTypes;
-    VkExternalFenceHandleTypeFlagsKHR    compatibleHandleTypes;
-    VkExternalFenceFeatureFlagsKHR       externalFenceFeatures;
-} VkExternalFencePropertiesKHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, VkExternalFencePropertiesKHR* pExternalFenceProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo,
-    VkExternalFencePropertiesKHR*               pExternalFenceProperties);
-#endif
-
-#define VK_KHR_external_fence 1
-#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
-
-
-typedef enum VkFenceImportFlagBitsKHR {
-    VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
-    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkFenceImportFlagBitsKHR;
-typedef VkFlags VkFenceImportFlagsKHR;
-
-typedef struct VkExportFenceCreateInfoKHR {
-    VkStructureType                      sType;
-    const void*                          pNext;
-    VkExternalFenceHandleTypeFlagsKHR    handleTypes;
-} VkExportFenceCreateInfoKHR;
-
-
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_KHR_external_fence_win32 1
-#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
-
-typedef struct VkImportFenceWin32HandleInfoKHR {
-    VkStructureType                         sType;
-    const void*                             pNext;
-    VkFence                                 fence;
-    VkFenceImportFlagsKHR                   flags;
-    VkExternalFenceHandleTypeFlagBitsKHR    handleType;
-    HANDLE                                  handle;
-    LPCWSTR                                 name;
-} VkImportFenceWin32HandleInfoKHR;
-
-typedef struct VkExportFenceWin32HandleInfoKHR {
-    VkStructureType               sType;
-    const void*                   pNext;
-    const SECURITY_ATTRIBUTES*    pAttributes;
-    DWORD                         dwAccess;
-    LPCWSTR                       name;
-} VkExportFenceWin32HandleInfoKHR;
-
-typedef struct VkFenceGetWin32HandleInfoKHR {
-    VkStructureType                         sType;
-    const void*                             pNext;
-    VkFence                                 fence;
-    VkExternalFenceHandleTypeFlagBitsKHR    handleType;
-} VkFenceGetWin32HandleInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
-    VkDevice                                    device,
-    const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
-    VkDevice                                    device,
-    const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
-    HANDLE*                                     pHandle);
-#endif
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#define VK_KHR_external_fence_fd 1
-#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
-
-typedef struct VkImportFenceFdInfoKHR {
-    VkStructureType                         sType;
-    const void*                             pNext;
-    VkFence                                 fence;
-    VkFenceImportFlagsKHR                   flags;
-    VkExternalFenceHandleTypeFlagBitsKHR    handleType;
-    int                                     fd;
-} VkImportFenceFdInfoKHR;
-
-typedef struct VkFenceGetFdInfoKHR {
-    VkStructureType                         sType;
-    const void*                             pNext;
-    VkFence                                 fence;
-    VkExternalFenceHandleTypeFlagBitsKHR    handleType;
-} VkFenceGetFdInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
-    VkDevice                                    device,
-    const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
-    VkDevice                                    device,
-    const VkFenceGetFdInfoKHR*                  pGetFdInfo,
-    int*                                        pFd);
-#endif
-
-#define VK_KHR_maintenance2 1
-#define VK_KHR_MAINTENANCE2_SPEC_VERSION  1
-#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
-
-
-typedef enum VkPointClippingBehaviorKHR {
-    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0,
-    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1,
-    VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
-    VK_POINT_CLIPPING_BEHAVIOR_END_RANGE_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR,
-    VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE_KHR = (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR + 1),
-    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPointClippingBehaviorKHR;
-
-typedef enum VkTessellationDomainOriginKHR {
-    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0,
-    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1,
-    VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
-    VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR,
-    VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE_KHR = (VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR + 1),
-    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkTessellationDomainOriginKHR;
-
-typedef struct VkPhysicalDevicePointClippingPropertiesKHR {
-    VkStructureType               sType;
-    void*                         pNext;
-    VkPointClippingBehaviorKHR    pointClippingBehavior;
-} VkPhysicalDevicePointClippingPropertiesKHR;
-
-typedef struct VkInputAttachmentAspectReferenceKHR {
-    uint32_t              subpass;
-    uint32_t              inputAttachmentIndex;
-    VkImageAspectFlags    aspectMask;
-} VkInputAttachmentAspectReferenceKHR;
-
-typedef struct VkRenderPassInputAttachmentAspectCreateInfoKHR {
-    VkStructureType                               sType;
-    const void*                                   pNext;
-    uint32_t                                      aspectReferenceCount;
-    const VkInputAttachmentAspectReferenceKHR*    pAspectReferences;
-} VkRenderPassInputAttachmentAspectCreateInfoKHR;
-
-typedef struct VkImageViewUsageCreateInfoKHR {
-    VkStructureType      sType;
-    const void*          pNext;
-    VkImageUsageFlags    usage;
-} VkImageViewUsageCreateInfoKHR;
-
-typedef struct VkPipelineTessellationDomainOriginStateCreateInfoKHR {
-    VkStructureType                  sType;
-    const void*                      pNext;
-    VkTessellationDomainOriginKHR    domainOrigin;
-} VkPipelineTessellationDomainOriginStateCreateInfoKHR;
-
-
-
-#define VK_KHR_get_surface_capabilities2 1
-#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
-#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
-
-typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkSurfaceKHR       surface;
-} VkPhysicalDeviceSurfaceInfo2KHR;
-
-typedef struct VkSurfaceCapabilities2KHR {
-    VkStructureType             sType;
-    void*                       pNext;
-    VkSurfaceCapabilitiesKHR    surfaceCapabilities;
-} VkSurfaceCapabilities2KHR;
-
-typedef struct VkSurfaceFormat2KHR {
-    VkStructureType       sType;
-    void*                 pNext;
-    VkSurfaceFormatKHR    surfaceFormat;
-} VkSurfaceFormat2KHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
-    VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
-    VkPhysicalDevice                            physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
-    uint32_t*                                   pSurfaceFormatCount,
-    VkSurfaceFormat2KHR*                        pSurfaceFormats);
-#endif
-
-#define VK_KHR_variable_pointers 1
-#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
-#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
-
-typedef struct VkPhysicalDeviceVariablePointerFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           variablePointersStorageBuffer;
-    VkBool32           variablePointers;
-} VkPhysicalDeviceVariablePointerFeaturesKHR;
-
-
-
-#define VK_KHR_dedicated_allocation 1
-#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
-#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
-
-typedef struct VkMemoryDedicatedRequirementsKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           prefersDedicatedAllocation;
-    VkBool32           requiresDedicatedAllocation;
-} VkMemoryDedicatedRequirementsKHR;
-
-typedef struct VkMemoryDedicatedAllocateInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkImage            image;
-    VkBuffer           buffer;
-} VkMemoryDedicatedAllocateInfoKHR;
-
-
-
-#define VK_KHR_storage_buffer_storage_class 1
-#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
-#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
-
-
-#define VK_KHR_relaxed_block_layout 1
-#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
-#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
-
-
-#define VK_KHR_get_memory_requirements2 1
-#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
-#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
-
-typedef struct VkBufferMemoryRequirementsInfo2KHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBuffer           buffer;
-} VkBufferMemoryRequirementsInfo2KHR;
-
-typedef struct VkImageMemoryRequirementsInfo2KHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkImage            image;
-} VkImageMemoryRequirementsInfo2KHR;
-
-typedef struct VkImageSparseMemoryRequirementsInfo2KHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkImage            image;
-} VkImageSparseMemoryRequirementsInfo2KHR;
-
-typedef struct VkMemoryRequirements2KHR {
-    VkStructureType         sType;
-    void*                   pNext;
-    VkMemoryRequirements    memoryRequirements;
-} VkMemoryRequirements2KHR;
-
-typedef struct VkSparseImageMemoryRequirements2KHR {
-    VkStructureType                    sType;
-    void*                              pNext;
-    VkSparseImageMemoryRequirements    memoryRequirements;
-} VkSparseImageMemoryRequirements2KHR;
-
-
-typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
-    VkDevice                                    device,
-    const VkImageMemoryRequirementsInfo2KHR*    pInfo,
-    VkMemoryRequirements2KHR*                   pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
-    VkDevice                                    device,
-    const VkBufferMemoryRequirementsInfo2KHR*   pInfo,
-    VkMemoryRequirements2KHR*                   pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
-    VkDevice                                    device,
-    const VkImageSparseMemoryRequirementsInfo2KHR* pInfo,
-    uint32_t*                                   pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2KHR*        pSparseMemoryRequirements);
-#endif
-
-#define VK_KHR_image_format_list 1
-#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
-#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
-
-typedef struct VkImageFormatListCreateInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           viewFormatCount;
-    const VkFormat*    pViewFormats;
-} VkImageFormatListCreateInfoKHR;
-
-
-
-#define VK_KHR_sampler_ycbcr_conversion 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversionKHR)
-
-#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
-#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
-
-
-typedef enum VkSamplerYcbcrModelConversionKHR {
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR,
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE_KHR = (VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR + 1),
-    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSamplerYcbcrModelConversionKHR;
-
-typedef enum VkSamplerYcbcrRangeKHR {
-    VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0,
-    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1,
-    VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
-    VK_SAMPLER_YCBCR_RANGE_END_RANGE_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR,
-    VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE_KHR = (VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR - VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR + 1),
-    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSamplerYcbcrRangeKHR;
-
-typedef enum VkChromaLocationKHR {
-    VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0,
-    VK_CHROMA_LOCATION_MIDPOINT_KHR = 1,
-    VK_CHROMA_LOCATION_BEGIN_RANGE_KHR = VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
-    VK_CHROMA_LOCATION_END_RANGE_KHR = VK_CHROMA_LOCATION_MIDPOINT_KHR,
-    VK_CHROMA_LOCATION_RANGE_SIZE_KHR = (VK_CHROMA_LOCATION_MIDPOINT_KHR - VK_CHROMA_LOCATION_COSITED_EVEN_KHR + 1),
-    VK_CHROMA_LOCATION_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkChromaLocationKHR;
-
-typedef struct VkSamplerYcbcrConversionCreateInfoKHR {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkFormat                            format;
-    VkSamplerYcbcrModelConversionKHR    ycbcrModel;
-    VkSamplerYcbcrRangeKHR              ycbcrRange;
-    VkComponentMapping                  components;
-    VkChromaLocationKHR                 xChromaOffset;
-    VkChromaLocationKHR                 yChromaOffset;
-    VkFilter                            chromaFilter;
-    VkBool32                            forceExplicitReconstruction;
-} VkSamplerYcbcrConversionCreateInfoKHR;
-
-typedef struct VkSamplerYcbcrConversionInfoKHR {
-    VkStructureType                sType;
-    const void*                    pNext;
-    VkSamplerYcbcrConversionKHR    conversion;
-} VkSamplerYcbcrConversionInfoKHR;
-
-typedef struct VkBindImagePlaneMemoryInfoKHR {
-    VkStructureType          sType;
-    const void*              pNext;
-    VkImageAspectFlagBits    planeAspect;
-} VkBindImagePlaneMemoryInfoKHR;
-
-typedef struct VkImagePlaneMemoryRequirementsInfoKHR {
-    VkStructureType          sType;
-    const void*              pNext;
-    VkImageAspectFlagBits    planeAspect;
-} VkImagePlaneMemoryRequirementsInfoKHR;
-
-typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           samplerYcbcrConversion;
-} VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
-
-typedef struct VkSamplerYcbcrConversionImageFormatPropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           combinedImageSamplerDescriptorCount;
-} VkSamplerYcbcrConversionImageFormatPropertiesKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversionKHR* pYcbcrConversion);
-typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversionKHR ycbcrConversion, const VkAllocationCallbacks* pAllocator);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
-    VkDevice                                    device,
-    const VkSamplerYcbcrConversionCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSamplerYcbcrConversionKHR*                pYcbcrConversion);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
-    VkDevice                                    device,
-    VkSamplerYcbcrConversionKHR                 ycbcrConversion,
-    const VkAllocationCallbacks*                pAllocator);
-#endif
-
-#define VK_KHR_bind_memory2 1
-#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
-#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
-
-typedef struct VkBindBufferMemoryInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBuffer           buffer;
-    VkDeviceMemory     memory;
-    VkDeviceSize       memoryOffset;
-} VkBindBufferMemoryInfoKHR;
-
-typedef struct VkBindImageMemoryInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkImage            image;
-    VkDeviceMemory     memory;
-    VkDeviceSize       memoryOffset;
-} VkBindImageMemoryInfoKHR;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfoKHR* pBindInfos);
-typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfoKHR* pBindInfos);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
-    VkDevice                                    device,
-    uint32_t                                    bindInfoCount,
-    const VkBindBufferMemoryInfoKHR*            pBindInfos);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
-    VkDevice                                    device,
-    uint32_t                                    bindInfoCount,
-    const VkBindImageMemoryInfoKHR*             pBindInfos);
-#endif
-
-#define VK_EXT_debug_report 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
-
-#define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9
-#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
-#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
-#define VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
-
-
-typedef enum VkDebugReportObjectTypeEXT {
-    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
-    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
-    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
-    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
-    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
-    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
-    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
-    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
-    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
-    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
-    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
-    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
-    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
-    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
-    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
-    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
-    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
-    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
-    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
-    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
-    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
-    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
-    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
-    VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
-    VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
-    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
-    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
-    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000,
-    VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
-    VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
-    VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
-    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDebugReportObjectTypeEXT;
-
-
-typedef enum VkDebugReportFlagBitsEXT {
-    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
-    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
-    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
-    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
-    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
-    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDebugReportFlagBitsEXT;
-typedef VkFlags VkDebugReportFlagsEXT;
-
-typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
-    VkDebugReportFlagsEXT                       flags,
-    VkDebugReportObjectTypeEXT                  objectType,
-    uint64_t                                    object,
-    size_t                                      location,
-    int32_t                                     messageCode,
-    const char*                                 pLayerPrefix,
-    const char*                                 pMessage,
-    void*                                       pUserData);
-
-typedef struct VkDebugReportCallbackCreateInfoEXT {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkDebugReportFlagsEXT           flags;
-    PFN_vkDebugReportCallbackEXT    pfnCallback;
-    void*                           pUserData;
-} VkDebugReportCallbackCreateInfoEXT;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
-typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
-    VkInstance                                  instance,
-    const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkDebugReportCallbackEXT*                   pCallback);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
-    VkInstance                                  instance,
-    VkDebugReportCallbackEXT                    callback,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
-    VkInstance                                  instance,
-    VkDebugReportFlagsEXT                       flags,
-    VkDebugReportObjectTypeEXT                  objectType,
-    uint64_t                                    object,
-    size_t                                      location,
-    int32_t                                     messageCode,
-    const char*                                 pLayerPrefix,
-    const char*                                 pMessage);
-#endif
-
-#define VK_NV_glsl_shader 1
-#define VK_NV_GLSL_SHADER_SPEC_VERSION    1
-#define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
-
-
-#define VK_EXT_depth_range_unrestricted 1
-#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
-#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
-
-
-#define VK_IMG_filter_cubic 1
-#define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
-#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
-
-
-#define VK_AMD_rasterization_order 1
-#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
-#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
-
-
-typedef enum VkRasterizationOrderAMD {
-    VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
-    VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
-    VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
-    VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
-    VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
-    VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkRasterizationOrderAMD;
-
-typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
-    VkStructureType            sType;
-    const void*                pNext;
-    VkRasterizationOrderAMD    rasterizationOrder;
-} VkPipelineRasterizationStateRasterizationOrderAMD;
-
-
-
-#define VK_AMD_shader_trinary_minmax 1
-#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
-#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
-
-
-#define VK_AMD_shader_explicit_vertex_parameter 1
-#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
-#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
-
-
-#define VK_EXT_debug_marker 1
-#define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
-#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
-
-typedef struct VkDebugMarkerObjectNameInfoEXT {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkDebugReportObjectTypeEXT    objectType;
-    uint64_t                      object;
-    const char*                   pObjectName;
-} VkDebugMarkerObjectNameInfoEXT;
-
-typedef struct VkDebugMarkerObjectTagInfoEXT {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkDebugReportObjectTypeEXT    objectType;
-    uint64_t                      object;
-    uint64_t                      tagName;
-    size_t                        tagSize;
-    const void*                   pTag;
-} VkDebugMarkerObjectTagInfoEXT;
-
-typedef struct VkDebugMarkerMarkerInfoEXT {
-    VkStructureType    sType;
-    const void*        pNext;
-    const char*        pMarkerName;
-    float              color[4];
-} VkDebugMarkerMarkerInfoEXT;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
-typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
-    VkDevice                                    device,
-    const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
-    VkDevice                                    device,
-    const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
-    VkCommandBuffer                             commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
-    VkCommandBuffer                             commandBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
-    VkCommandBuffer                             commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
-#endif
-
-#define VK_AMD_gcn_shader 1
-#define VK_AMD_GCN_SHADER_SPEC_VERSION    1
-#define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
-
-
-#define VK_NV_dedicated_allocation 1
-#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
-#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
-
-typedef struct VkDedicatedAllocationImageCreateInfoNV {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBool32           dedicatedAllocation;
-} VkDedicatedAllocationImageCreateInfoNV;
-
-typedef struct VkDedicatedAllocationBufferCreateInfoNV {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBool32           dedicatedAllocation;
-} VkDedicatedAllocationBufferCreateInfoNV;
-
-typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkImage            image;
-    VkBuffer           buffer;
-} VkDedicatedAllocationMemoryAllocateInfoNV;
-
-
-
-#define VK_AMD_draw_indirect_count 1
-#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
-#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
-
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    buffer,
-    VkDeviceSize                                offset,
-    VkBuffer                                    countBuffer,
-    VkDeviceSize                                countBufferOffset,
-    uint32_t                                    maxDrawCount,
-    uint32_t                                    stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
-    VkCommandBuffer                             commandBuffer,
-    VkBuffer                                    buffer,
-    VkDeviceSize                                offset,
-    VkBuffer                                    countBuffer,
-    VkDeviceSize                                countBufferOffset,
-    uint32_t                                    maxDrawCount,
-    uint32_t                                    stride);
-#endif
-
-#define VK_AMD_negative_viewport_height 1
-#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
-#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
-
-
-#define VK_AMD_gpu_shader_half_float 1
-#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
-#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
-
-
-#define VK_AMD_shader_ballot 1
-#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
-#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
-
-
-#define VK_AMD_texture_gather_bias_lod 1
-#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
-#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
-
-typedef struct VkTextureLODGatherFormatPropertiesAMD {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           supportsTextureGatherLODBiasAMD;
-} VkTextureLODGatherFormatPropertiesAMD;
-
-
-
-#define VK_AMD_shader_info 1
-#define VK_AMD_SHADER_INFO_SPEC_VERSION   1
-#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
-
-
-typedef enum VkShaderInfoTypeAMD {
-    VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
-    VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
-    VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
-    VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
-    VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
-    VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1),
-    VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkShaderInfoTypeAMD;
-
-typedef struct VkShaderResourceUsageAMD {
-    uint32_t    numUsedVgprs;
-    uint32_t    numUsedSgprs;
-    uint32_t    ldsSizePerLocalWorkGroup;
-    size_t      ldsUsageSizeInBytes;
-    size_t      scratchMemUsageInBytes;
-} VkShaderResourceUsageAMD;
-
-typedef struct VkShaderStatisticsInfoAMD {
-    VkShaderStageFlags          shaderStageMask;
-    VkShaderResourceUsageAMD    resourceUsage;
-    uint32_t                    numPhysicalVgprs;
-    uint32_t                    numPhysicalSgprs;
-    uint32_t                    numAvailableVgprs;
-    uint32_t                    numAvailableSgprs;
-    uint32_t                    computeWorkGroupSize[3];
-} VkShaderStatisticsInfoAMD;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
-    VkDevice                                    device,
-    VkPipeline                                  pipeline,
-    VkShaderStageFlagBits                       shaderStage,
-    VkShaderInfoTypeAMD                         infoType,
-    size_t*                                     pInfoSize,
-    void*                                       pInfo);
-#endif
-
-#define VK_AMD_shader_image_load_store_lod 1
-#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
-#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
-
-
-#define VK_KHX_multiview 1
-#define VK_KHX_MULTIVIEW_SPEC_VERSION     1
-#define VK_KHX_MULTIVIEW_EXTENSION_NAME   "VK_KHX_multiview"
-
-typedef struct VkRenderPassMultiviewCreateInfoKHX {
-    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;
-} VkRenderPassMultiviewCreateInfoKHX;
-
-typedef struct VkPhysicalDeviceMultiviewFeaturesKHX {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           multiview;
-    VkBool32           multiviewGeometryShader;
-    VkBool32           multiviewTessellationShader;
-} VkPhysicalDeviceMultiviewFeaturesKHX;
-
-typedef struct VkPhysicalDeviceMultiviewPropertiesKHX {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           maxMultiviewViewCount;
-    uint32_t           maxMultiviewInstanceIndex;
-} VkPhysicalDeviceMultiviewPropertiesKHX;
-
-
-
-#define VK_IMG_format_pvrtc 1
-#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
-#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
-
-
-#define VK_NV_external_memory_capabilities 1
-#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
-
-
-typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
-    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkExternalMemoryHandleTypeFlagBitsNV;
-typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
-
-typedef enum VkExternalMemoryFeatureFlagBitsNV {
-    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
-    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
-    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
-    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkExternalMemoryFeatureFlagBitsNV;
-typedef VkFlags VkExternalMemoryFeatureFlagsNV;
-
-typedef struct VkExternalImageFormatPropertiesNV {
-    VkImageFormatProperties              imageFormatProperties;
-    VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
-    VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
-    VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
-} VkExternalImageFormatPropertiesNV;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
-    VkPhysicalDevice                            physicalDevice,
-    VkFormat                                    format,
-    VkImageType                                 type,
-    VkImageTiling                               tiling,
-    VkImageUsageFlags                           usage,
-    VkImageCreateFlags                          flags,
-    VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
-    VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
-#endif
-
-#define VK_NV_external_memory 1
-#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
-
-typedef struct VkExternalMemoryImageCreateInfoNV {
-    VkStructureType                      sType;
-    const void*                          pNext;
-    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
-} VkExternalMemoryImageCreateInfoNV;
-
-typedef struct VkExportMemoryAllocateInfoNV {
-    VkStructureType                      sType;
-    const void*                          pNext;
-    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
-} VkExportMemoryAllocateInfoNV;
-
-
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_NV_external_memory_win32 1
-#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
-
-typedef struct VkImportMemoryWin32HandleInfoNV {
-    VkStructureType                      sType;
-    const void*                          pNext;
-    VkExternalMemoryHandleTypeFlagsNV    handleType;
-    HANDLE                               handle;
-} VkImportMemoryWin32HandleInfoNV;
-
-typedef struct VkExportMemoryWin32HandleInfoNV {
-    VkStructureType               sType;
-    const void*                   pNext;
-    const SECURITY_ATTRIBUTES*    pAttributes;
-    DWORD                         dwAccess;
-} VkExportMemoryWin32HandleInfoNV;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
-    VkDevice                                    device,
-    VkDeviceMemory                              memory,
-    VkExternalMemoryHandleTypeFlagsNV           handleType,
-    HANDLE*                                     pHandle);
-#endif
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#define VK_NV_win32_keyed_mutex 1
-#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
-#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
-
-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;
-
-
-#endif /* VK_USE_PLATFORM_WIN32_KHR */
-
-#define VK_KHX_device_group 1
-#define VK_KHX_DEVICE_GROUP_SPEC_VERSION  2
-#define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
-#define VK_MAX_DEVICE_GROUP_SIZE_KHX      32
-
-
-typedef enum VkPeerMemoryFeatureFlagBitsKHX {
-    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
-    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
-    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
-    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
-    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
-} VkPeerMemoryFeatureFlagBitsKHX;
-typedef VkFlags VkPeerMemoryFeatureFlagsKHX;
-
-typedef enum VkMemoryAllocateFlagBitsKHX {
-    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
-    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
-} VkMemoryAllocateFlagBitsKHX;
-typedef VkFlags VkMemoryAllocateFlagsKHX;
-
-typedef enum VkDeviceGroupPresentModeFlagBitsKHX {
-    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
-    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
-    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
-    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
-    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
-} VkDeviceGroupPresentModeFlagBitsKHX;
-typedef VkFlags VkDeviceGroupPresentModeFlagsKHX;
-
-typedef struct VkMemoryAllocateFlagsInfoKHX {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkMemoryAllocateFlagsKHX    flags;
-    uint32_t                    deviceMask;
-} VkMemoryAllocateFlagsInfoKHX;
-
-typedef struct VkDeviceGroupRenderPassBeginInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           deviceMask;
-    uint32_t           deviceRenderAreaCount;
-    const VkRect2D*    pDeviceRenderAreas;
-} VkDeviceGroupRenderPassBeginInfoKHX;
-
-typedef struct VkDeviceGroupCommandBufferBeginInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           deviceMask;
-} VkDeviceGroupCommandBufferBeginInfoKHX;
-
-typedef struct VkDeviceGroupSubmitInfoKHX {
-    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;
-} VkDeviceGroupSubmitInfoKHX;
-
-typedef struct VkDeviceGroupBindSparseInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           resourceDeviceIndex;
-    uint32_t           memoryDeviceIndex;
-} VkDeviceGroupBindSparseInfoKHX;
-
-typedef struct VkBindBufferMemoryDeviceGroupInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           deviceIndexCount;
-    const uint32_t*    pDeviceIndices;
-} VkBindBufferMemoryDeviceGroupInfoKHX;
-
-typedef struct VkBindImageMemoryDeviceGroupInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           deviceIndexCount;
-    const uint32_t*    pDeviceIndices;
-    uint32_t           SFRRectCount;
-    const VkRect2D*    pSFRRects;
-} VkBindImageMemoryDeviceGroupInfoKHX;
-
-typedef struct VkDeviceGroupPresentCapabilitiesKHX {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
-    VkDeviceGroupPresentModeFlagsKHX    modes;
-} VkDeviceGroupPresentCapabilitiesKHX;
-
-typedef struct VkImageSwapchainCreateInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkSwapchainKHR     swapchain;
-} VkImageSwapchainCreateInfoKHX;
-
-typedef struct VkBindImageMemorySwapchainInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkSwapchainKHR     swapchain;
-    uint32_t           imageIndex;
-} VkBindImageMemorySwapchainInfoKHX;
-
-typedef struct VkAcquireNextImageInfoKHX {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkSwapchainKHR     swapchain;
-    uint64_t           timeout;
-    VkSemaphore        semaphore;
-    VkFence            fence;
-    uint32_t           deviceMask;
-} VkAcquireNextImageInfoKHX;
-
-typedef struct VkDeviceGroupPresentInfoKHX {
-    VkStructureType                        sType;
-    const void*                            pNext;
-    uint32_t                               swapchainCount;
-    const uint32_t*                        pDeviceMasks;
-    VkDeviceGroupPresentModeFlagBitsKHX    mode;
-} VkDeviceGroupPresentInfoKHX;
-
-typedef struct VkDeviceGroupSwapchainCreateInfoKHX {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkDeviceGroupPresentModeFlagsKHX    modes;
-} VkDeviceGroupSwapchainCreateInfoKHX;
-
-
-typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHX)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHX)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHX)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHX)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHX* pModes);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHX)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHX)(VkDevice device, const VkAcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHX(
-    VkDevice                                    device,
-    uint32_t                                    heapIndex,
-    uint32_t                                    localDeviceIndex,
-    uint32_t                                    remoteDeviceIndex,
-    VkPeerMemoryFeatureFlagsKHX*                pPeerMemoryFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHX(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    deviceMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHX(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    baseGroupX,
-    uint32_t                                    baseGroupY,
-    uint32_t                                    baseGroupZ,
-    uint32_t                                    groupCountX,
-    uint32_t                                    groupCountY,
-    uint32_t                                    groupCountZ);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHX(
-    VkDevice                                    device,
-    VkDeviceGroupPresentCapabilitiesKHX*        pDeviceGroupPresentCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHX(
-    VkDevice                                    device,
-    VkSurfaceKHR                                surface,
-    VkDeviceGroupPresentModeFlagsKHX*           pModes);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHX(
-    VkPhysicalDevice                            physicalDevice,
-    VkSurfaceKHR                                surface,
-    uint32_t*                                   pRectCount,
-    VkRect2D*                                   pRects);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHX(
-    VkDevice                                    device,
-    const VkAcquireNextImageInfoKHX*            pAcquireInfo,
-    uint32_t*                                   pImageIndex);
-#endif
-
-#define VK_EXT_validation_flags 1
-#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
-#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
-
-
-typedef enum VkValidationCheckEXT {
-    VK_VALIDATION_CHECK_ALL_EXT = 0,
-    VK_VALIDATION_CHECK_SHADERS_EXT = 1,
-    VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
-    VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_SHADERS_EXT,
-    VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_SHADERS_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
-    VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkValidationCheckEXT;
-
-typedef struct VkValidationFlagsEXT {
-    VkStructureType          sType;
-    const void*              pNext;
-    uint32_t                 disabledValidationCheckCount;
-    VkValidationCheckEXT*    pDisabledValidationChecks;
-} VkValidationFlagsEXT;
-
-
-
-#ifdef VK_USE_PLATFORM_VI_NN
-#define VK_NN_vi_surface 1
-#define VK_NN_VI_SURFACE_SPEC_VERSION     1
-#define VK_NN_VI_SURFACE_EXTENSION_NAME   "VK_NN_vi_surface"
-
-typedef VkFlags VkViSurfaceCreateFlagsNN;
-
-typedef struct VkViSurfaceCreateInfoNN {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkViSurfaceCreateFlagsNN    flags;
-    void*                       window;
-} VkViSurfaceCreateInfoNN;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
-    VkInstance                                  instance,
-    const VkViSurfaceCreateInfoNN*              pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-#endif
-#endif /* VK_USE_PLATFORM_VI_NN */
-
-#define VK_EXT_shader_subgroup_ballot 1
-#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
-#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
-
-
-#define VK_EXT_shader_subgroup_vote 1
-#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
-#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
-
-
-#define VK_KHX_device_group_creation 1
-#define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
-#define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
-
-typedef struct VkPhysicalDeviceGroupPropertiesKHX {
-    VkStructureType     sType;
-    void*               pNext;
-    uint32_t            physicalDeviceCount;
-    VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
-    VkBool32            subsetAllocation;
-} VkPhysicalDeviceGroupPropertiesKHX;
-
-typedef struct VkDeviceGroupDeviceCreateInfoKHX {
-    VkStructureType            sType;
-    const void*                pNext;
-    uint32_t                   physicalDeviceCount;
-    const VkPhysicalDevice*    pPhysicalDevices;
-} VkDeviceGroupDeviceCreateInfoKHX;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHX)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHX(
-    VkInstance                                  instance,
-    uint32_t*                                   pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupPropertiesKHX*         pPhysicalDeviceGroupProperties);
-#endif
-
-#define VK_NVX_device_generated_commands 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
-
-#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
-#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
-
-
-typedef enum VkIndirectCommandsTokenTypeNVX {
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX,
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1),
-    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
-} VkIndirectCommandsTokenTypeNVX;
-
-typedef enum VkObjectEntryTypeNVX {
-    VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
-    VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
-    VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
-    VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
-    VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
-    VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
-    VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX,
-    VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1),
-    VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
-} VkObjectEntryTypeNVX;
-
-
-typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
-    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
-} VkIndirectCommandsLayoutUsageFlagBitsNVX;
-typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX;
-
-typedef enum VkObjectEntryUsageFlagBitsNVX {
-    VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
-    VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
-    VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
-} VkObjectEntryUsageFlagBitsNVX;
-typedef VkFlags VkObjectEntryUsageFlagsNVX;
-
-typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBool32           computeBindingPointSupport;
-} VkDeviceGeneratedCommandsFeaturesNVX;
-
-typedef struct VkDeviceGeneratedCommandsLimitsNVX {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           maxIndirectCommandsLayoutTokenCount;
-    uint32_t           maxObjectEntryCounts;
-    uint32_t           minSequenceCountBufferOffsetAlignment;
-    uint32_t           minSequenceIndexBufferOffsetAlignment;
-    uint32_t           minCommandsTokenBufferOffsetAlignment;
-} VkDeviceGeneratedCommandsLimitsNVX;
-
-typedef struct VkIndirectCommandsTokenNVX {
-    VkIndirectCommandsTokenTypeNVX    tokenType;
-    VkBuffer                          buffer;
-    VkDeviceSize                      offset;
-} VkIndirectCommandsTokenNVX;
-
-typedef struct VkIndirectCommandsLayoutTokenNVX {
-    VkIndirectCommandsTokenTypeNVX    tokenType;
-    uint32_t                          bindingUnit;
-    uint32_t                          dynamicCount;
-    uint32_t                          divisor;
-} VkIndirectCommandsLayoutTokenNVX;
-
-typedef struct VkIndirectCommandsLayoutCreateInfoNVX {
-    VkStructureType                            sType;
-    const void*                                pNext;
-    VkPipelineBindPoint                        pipelineBindPoint;
-    VkIndirectCommandsLayoutUsageFlagsNVX      flags;
-    uint32_t                                   tokenCount;
-    const VkIndirectCommandsLayoutTokenNVX*    pTokens;
-} VkIndirectCommandsLayoutCreateInfoNVX;
-
-typedef struct VkCmdProcessCommandsInfoNVX {
-    VkStructureType                      sType;
-    const void*                          pNext;
-    VkObjectTableNVX                     objectTable;
-    VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
-    uint32_t                             indirectCommandsTokenCount;
-    const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
-    uint32_t                             maxSequencesCount;
-    VkCommandBuffer                      targetCommandBuffer;
-    VkBuffer                             sequencesCountBuffer;
-    VkDeviceSize                         sequencesCountOffset;
-    VkBuffer                             sequencesIndexBuffer;
-    VkDeviceSize                         sequencesIndexOffset;
-} VkCmdProcessCommandsInfoNVX;
-
-typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
-    VkStructureType                sType;
-    const void*                    pNext;
-    VkObjectTableNVX               objectTable;
-    VkIndirectCommandsLayoutNVX    indirectCommandsLayout;
-    uint32_t                       maxSequencesCount;
-} VkCmdReserveSpaceForCommandsInfoNVX;
-
-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;
-
-typedef struct VkObjectTableEntryNVX {
-    VkObjectEntryTypeNVX          type;
-    VkObjectEntryUsageFlagsNVX    flags;
-} VkObjectTableEntryNVX;
-
-typedef struct VkObjectTablePipelineEntryNVX {
-    VkObjectEntryTypeNVX          type;
-    VkObjectEntryUsageFlagsNVX    flags;
-    VkPipeline                    pipeline;
-} VkObjectTablePipelineEntryNVX;
-
-typedef struct VkObjectTableDescriptorSetEntryNVX {
-    VkObjectEntryTypeNVX          type;
-    VkObjectEntryUsageFlagsNVX    flags;
-    VkPipelineLayout              pipelineLayout;
-    VkDescriptorSet               descriptorSet;
-} VkObjectTableDescriptorSetEntryNVX;
-
-typedef struct VkObjectTableVertexBufferEntryNVX {
-    VkObjectEntryTypeNVX          type;
-    VkObjectEntryUsageFlagsNVX    flags;
-    VkBuffer                      buffer;
-} VkObjectTableVertexBufferEntryNVX;
-
-typedef struct VkObjectTableIndexBufferEntryNVX {
-    VkObjectEntryTypeNVX          type;
-    VkObjectEntryUsageFlagsNVX    flags;
-    VkBuffer                      buffer;
-    VkIndexType                   indexType;
-} VkObjectTableIndexBufferEntryNVX;
-
-typedef struct VkObjectTablePushConstantEntryNVX {
-    VkObjectEntryTypeNVX          type;
-    VkObjectEntryUsageFlagsNVX    flags;
-    VkPipelineLayout              pipelineLayout;
-    VkShaderStageFlags            stageFlags;
-} VkObjectTablePushConstantEntryNVX;
-
-
-typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
-typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
-typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const*    ppObjectTableEntries, const uint32_t* pObjectIndices);
-typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX(
-    VkCommandBuffer                             commandBuffer,
-    const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX(
-    VkCommandBuffer                             commandBuffer,
-    const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX(
-    VkDevice                                    device,
-    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX(
-    VkDevice                                    device,
-    VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX(
-    VkDevice                                    device,
-    const VkObjectTableCreateInfoNVX*           pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkObjectTableNVX*                           pObjectTable);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX(
-    VkDevice                                    device,
-    VkObjectTableNVX                            objectTable,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX(
-    VkDevice                                    device,
-    VkObjectTableNVX                            objectTable,
-    uint32_t                                    objectCount,
-    const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
-    const uint32_t*                             pObjectIndices);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX(
-    VkDevice                                    device,
-    VkObjectTableNVX                            objectTable,
-    uint32_t                                    objectCount,
-    const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
-    const uint32_t*                             pObjectIndices);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
-    VkPhysicalDevice                            physicalDevice,
-    VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
-    VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
-#endif
-
-#define VK_NV_clip_space_w_scaling 1
-#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
-#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
-
-typedef struct VkViewportWScalingNV {
-    float    xcoeff;
-    float    ycoeff;
-} VkViewportWScalingNV;
-
-typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
-    VkStructureType                sType;
-    const void*                    pNext;
-    VkBool32                       viewportWScalingEnable;
-    uint32_t                       viewportCount;
-    const VkViewportWScalingNV*    pViewportWScalings;
-} VkPipelineViewportWScalingStateCreateInfoNV;
-
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    firstViewport,
-    uint32_t                                    viewportCount,
-    const VkViewportWScalingNV*                 pViewportWScalings);
-#endif
-
-#define VK_EXT_direct_mode_display 1
-#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
-#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
-
-typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
-    VkPhysicalDevice                            physicalDevice,
-    VkDisplayKHR                                display);
-#endif
-
-#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
-#define VK_EXT_acquire_xlib_display 1
-#include <X11/extensions/Xrandr.h>
-
-#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
-#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
-
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
-typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
-    VkPhysicalDevice                            physicalDevice,
-    Display*                                    dpy,
-    VkDisplayKHR                                display);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT(
-    VkPhysicalDevice                            physicalDevice,
-    Display*                                    dpy,
-    RROutput                                    rrOutput,
-    VkDisplayKHR*                               pDisplay);
-#endif
-#endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */
-
-#define VK_EXT_display_surface_counter 1
-#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
-#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
-#define VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
-
-
-typedef enum VkSurfaceCounterFlagBitsEXT {
-    VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
-    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSurfaceCounterFlagBitsEXT;
-typedef VkFlags VkSurfaceCounterFlagsEXT;
-
-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;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
-    VkPhysicalDevice                            physicalDevice,
-    VkSurfaceKHR                                surface,
-    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
-#endif
-
-#define VK_EXT_display_control 1
-#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
-#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
-
-
-typedef enum VkDisplayPowerStateEXT {
-    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
-    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
-    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
-    VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT,
-    VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT,
-    VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1),
-    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDisplayPowerStateEXT;
-
-typedef enum VkDeviceEventTypeEXT {
-    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
-    VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
-    VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
-    VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1),
-    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDeviceEventTypeEXT;
-
-typedef enum VkDisplayEventTypeEXT {
-    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
-    VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
-    VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
-    VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1),
-    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDisplayEventTypeEXT;
-
-typedef struct VkDisplayPowerInfoEXT {
-    VkStructureType           sType;
-    const void*               pNext;
-    VkDisplayPowerStateEXT    powerState;
-} VkDisplayPowerInfoEXT;
-
-typedef struct VkDeviceEventInfoEXT {
-    VkStructureType         sType;
-    const void*             pNext;
-    VkDeviceEventTypeEXT    deviceEvent;
-} VkDeviceEventInfoEXT;
-
-typedef struct VkDisplayEventInfoEXT {
-    VkStructureType          sType;
-    const void*              pNext;
-    VkDisplayEventTypeEXT    displayEvent;
-} VkDisplayEventInfoEXT;
-
-typedef struct VkSwapchainCounterCreateInfoEXT {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkSurfaceCounterFlagsEXT    surfaceCounters;
-} VkSwapchainCounterCreateInfoEXT;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
-    VkDevice                                    device,
-    VkDisplayKHR                                display,
-    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
-    VkDevice                                    device,
-    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkFence*                                    pFence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
-    VkDevice                                    device,
-    VkDisplayKHR                                display,
-    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkFence*                                    pFence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain,
-    VkSurfaceCounterFlagBitsEXT                 counter,
-    uint64_t*                                   pCounterValue);
-#endif
-
-#define VK_GOOGLE_display_timing 1
-#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
-#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
-
-typedef struct VkRefreshCycleDurationGOOGLE {
-    uint64_t    refreshDuration;
-} VkRefreshCycleDurationGOOGLE;
-
-typedef struct VkPastPresentationTimingGOOGLE {
-    uint32_t    presentID;
-    uint64_t    desiredPresentTime;
-    uint64_t    actualPresentTime;
-    uint64_t    earliestPresentTime;
-    uint64_t    presentMargin;
-} VkPastPresentationTimingGOOGLE;
-
-typedef struct VkPresentTimeGOOGLE {
-    uint32_t    presentID;
-    uint64_t    desiredPresentTime;
-} VkPresentTimeGOOGLE;
-
-typedef struct VkPresentTimesInfoGOOGLE {
-    VkStructureType               sType;
-    const void*                   pNext;
-    uint32_t                      swapchainCount;
-    const VkPresentTimeGOOGLE*    pTimes;
-} VkPresentTimesInfoGOOGLE;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain,
-    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
-    VkDevice                                    device,
-    VkSwapchainKHR                              swapchain,
-    uint32_t*                                   pPresentationTimingCount,
-    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
-#endif
-
-#define VK_NV_sample_mask_override_coverage 1
-#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
-#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
-
-
-#define VK_NV_geometry_shader_passthrough 1
-#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
-#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
-
-
-#define VK_NV_viewport_array2 1
-#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
-#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
-
-
-#define VK_NVX_multiview_per_view_attributes 1
-#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
-#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
-
-typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           perViewPositionAllComponents;
-} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
-
-
-
-#define VK_NV_viewport_swizzle 1
-#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
-#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
-
-
-typedef enum VkViewportCoordinateSwizzleNV {
-    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV,
-    VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1),
-    VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkViewportCoordinateSwizzleNV;
-
-typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
-
-typedef struct VkViewportSwizzleNV {
-    VkViewportCoordinateSwizzleNV    x;
-    VkViewportCoordinateSwizzleNV    y;
-    VkViewportCoordinateSwizzleNV    z;
-    VkViewportCoordinateSwizzleNV    w;
-} VkViewportSwizzleNV;
-
-typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
-    VkStructureType                                sType;
-    const void*                                    pNext;
-    VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
-    uint32_t                                       viewportCount;
-    const VkViewportSwizzleNV*                     pViewportSwizzles;
-} VkPipelineViewportSwizzleStateCreateInfoNV;
-
-
-
-#define VK_EXT_discard_rectangles 1
-#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
-#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
-
-
-typedef enum VkDiscardRectangleModeEXT {
-    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
-    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
-    VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
-    VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT,
-    VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1),
-    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDiscardRectangleModeEXT;
-
-typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
-
-typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           maxDiscardRectangles;
-} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
-
-typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
-    VkStructureType                                  sType;
-    const void*                                      pNext;
-    VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
-    VkDiscardRectangleModeEXT                        discardRectangleMode;
-    uint32_t                                         discardRectangleCount;
-    const VkRect2D*                                  pDiscardRectangles;
-} VkPipelineDiscardRectangleStateCreateInfoEXT;
-
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
-    VkCommandBuffer                             commandBuffer,
-    uint32_t                                    firstDiscardRectangle,
-    uint32_t                                    discardRectangleCount,
-    const VkRect2D*                             pDiscardRectangles);
-#endif
-
-#define VK_EXT_conservative_rasterization 1
-#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
-#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
-
-
-typedef enum VkConservativeRasterizationModeEXT {
-    VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
-    VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
-    VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
-    VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
-    VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT,
-    VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1),
-    VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkConservativeRasterizationModeEXT;
-
-typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
-
-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;
-
-typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
-    VkStructureType                                           sType;
-    const void*                                               pNext;
-    VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
-    VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
-    float                                                     extraPrimitiveOverestimationSize;
-} VkPipelineRasterizationConservativeStateCreateInfoEXT;
-
-
-
-#define VK_EXT_swapchain_colorspace 1
-#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 3
-#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
-
-
-#define VK_EXT_hdr_metadata 1
-#define VK_EXT_HDR_METADATA_SPEC_VERSION  1
-#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
-
-typedef struct VkXYColorEXT {
-    float    x;
-    float    y;
-} VkXYColorEXT;
-
-typedef struct VkHdrMetadataEXT {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkXYColorEXT       displayPrimaryRed;
-    VkXYColorEXT       displayPrimaryGreen;
-    VkXYColorEXT       displayPrimaryBlue;
-    VkXYColorEXT       whitePoint;
-    float              maxLuminance;
-    float              minLuminance;
-    float              maxContentLightLevel;
-    float              maxFrameAverageLightLevel;
-} VkHdrMetadataEXT;
-
-
-typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
-    VkDevice                                    device,
-    uint32_t                                    swapchainCount,
-    const VkSwapchainKHR*                       pSwapchains,
-    const VkHdrMetadataEXT*                     pMetadata);
-#endif
-
-#ifdef VK_USE_PLATFORM_IOS_MVK
-#define VK_MVK_ios_surface 1
-#define VK_MVK_IOS_SURFACE_SPEC_VERSION   2
-#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
-
-typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
-
-typedef struct VkIOSSurfaceCreateInfoMVK {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkIOSSurfaceCreateFlagsMVK    flags;
-    const void*                   pView;
-} VkIOSSurfaceCreateInfoMVK;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
-    VkInstance                                  instance,
-    const VkIOSSurfaceCreateInfoMVK*            pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-#endif
-#endif /* VK_USE_PLATFORM_IOS_MVK */
-
-#ifdef VK_USE_PLATFORM_MACOS_MVK
-#define VK_MVK_macos_surface 1
-#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2
-#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
-
-typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
-
-typedef struct VkMacOSSurfaceCreateInfoMVK {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkMacOSSurfaceCreateFlagsMVK    flags;
-    const void*                     pView;
-} VkMacOSSurfaceCreateInfoMVK;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
-    VkInstance                                  instance,
-    const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkSurfaceKHR*                               pSurface);
-#endif
-#endif /* VK_USE_PLATFORM_MACOS_MVK */
-
-#define VK_EXT_external_memory_dma_buf 1
-#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
-#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
-
-
-#define VK_EXT_queue_family_foreign 1
-#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
-#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
-#define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2)
-
-
-#define VK_EXT_sampler_filter_minmax 1
-#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
-#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
-
-
-typedef enum VkSamplerReductionModeEXT {
-    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
-    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
-    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
-    VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
-    VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
-    VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
-    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSamplerReductionModeEXT;
-
-typedef struct VkSamplerReductionModeCreateInfoEXT {
-    VkStructureType              sType;
-    const void*                  pNext;
-    VkSamplerReductionModeEXT    reductionMode;
-} VkSamplerReductionModeCreateInfoEXT;
-
-typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           filterMinmaxSingleComponentFormats;
-    VkBool32           filterMinmaxImageComponentMapping;
-} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
-
-
-
-#define VK_AMD_gpu_shader_int16 1
-#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
-#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
-
-
-#define VK_AMD_mixed_attachment_samples 1
-#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
-#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
-
-
-#define VK_AMD_shader_fragment_mask 1
-#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
-#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
-
-
-#define VK_EXT_shader_stencil_export 1
-#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
-#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
-
-
-#define VK_EXT_sample_locations 1
-#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
-#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
-
-typedef struct VkSampleLocationEXT {
-    float    x;
-    float    y;
-} VkSampleLocationEXT;
-
-typedef struct VkSampleLocationsInfoEXT {
-    VkStructureType               sType;
-    const void*                   pNext;
-    VkSampleCountFlagBits         sampleLocationsPerPixel;
-    VkExtent2D                    sampleLocationGridSize;
-    uint32_t                      sampleLocationsCount;
-    const VkSampleLocationEXT*    pSampleLocations;
-} VkSampleLocationsInfoEXT;
-
-typedef struct VkAttachmentSampleLocationsEXT {
-    uint32_t                    attachmentIndex;
-    VkSampleLocationsInfoEXT    sampleLocationsInfo;
-} VkAttachmentSampleLocationsEXT;
-
-typedef struct VkSubpassSampleLocationsEXT {
-    uint32_t                    subpassIndex;
-    VkSampleLocationsInfoEXT    sampleLocationsInfo;
-} VkSubpassSampleLocationsEXT;
-
-typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    uint32_t                                 attachmentInitialSampleLocationsCount;
-    const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
-    uint32_t                                 postSubpassSampleLocationsCount;
-    const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
-} VkRenderPassSampleLocationsBeginInfoEXT;
-
-typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkBool32                    sampleLocationsEnable;
-    VkSampleLocationsInfoEXT    sampleLocationsInfo;
-} VkPipelineSampleLocationsStateCreateInfoEXT;
-
-typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
-    VkStructureType       sType;
-    void*                 pNext;
-    VkSampleCountFlags    sampleLocationSampleCounts;
-    VkExtent2D            maxSampleLocationGridSize;
-    float                 sampleLocationCoordinateRange[2];
-    uint32_t              sampleLocationSubPixelBits;
-    VkBool32              variableSampleLocations;
-} VkPhysicalDeviceSampleLocationsPropertiesEXT;
-
-typedef struct VkMultisamplePropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkExtent2D         maxSampleLocationGridSize;
-} VkMultisamplePropertiesEXT;
-
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
-    VkCommandBuffer                             commandBuffer,
-    const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
-    VkPhysicalDevice                            physicalDevice,
-    VkSampleCountFlagBits                       samples,
-    VkMultisamplePropertiesEXT*                 pMultisampleProperties);
-#endif
-
-#define VK_EXT_blend_operation_advanced 1
-#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
-#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
-
-
-typedef enum VkBlendOverlapEXT {
-    VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
-    VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
-    VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
-    VK_BLEND_OVERLAP_BEGIN_RANGE_EXT = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
-    VK_BLEND_OVERLAP_END_RANGE_EXT = VK_BLEND_OVERLAP_CONJOINT_EXT,
-    VK_BLEND_OVERLAP_RANGE_SIZE_EXT = (VK_BLEND_OVERLAP_CONJOINT_EXT - VK_BLEND_OVERLAP_UNCORRELATED_EXT + 1),
-    VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkBlendOverlapEXT;
-
-typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           advancedBlendCoherentOperations;
-} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
-
-typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           advancedBlendMaxColorAttachments;
-    VkBool32           advancedBlendIndependentBlend;
-    VkBool32           advancedBlendNonPremultipliedSrcColor;
-    VkBool32           advancedBlendNonPremultipliedDstColor;
-    VkBool32           advancedBlendCorrelatedOverlap;
-    VkBool32           advancedBlendAllOperations;
-} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
-
-typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
-    VkStructureType      sType;
-    const void*          pNext;
-    VkBool32             srcPremultiplied;
-    VkBool32             dstPremultiplied;
-    VkBlendOverlapEXT    blendOverlap;
-} VkPipelineColorBlendAdvancedStateCreateInfoEXT;
-
-
-
-#define VK_NV_fragment_coverage_to_color 1
-#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
-#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
-
-typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
-
-typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
-    VkStructureType                                sType;
-    const void*                                    pNext;
-    VkPipelineCoverageToColorStateCreateFlagsNV    flags;
-    VkBool32                                       coverageToColorEnable;
-    uint32_t                                       coverageToColorLocation;
-} VkPipelineCoverageToColorStateCreateInfoNV;
-
-
-
-#define VK_NV_framebuffer_mixed_samples 1
-#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
-#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
-
-
-typedef enum VkCoverageModulationModeNV {
-    VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
-    VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
-    VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
-    VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
-    VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_MODULATION_MODE_NONE_NV,
-    VK_COVERAGE_MODULATION_MODE_END_RANGE_NV = VK_COVERAGE_MODULATION_MODE_RGBA_NV,
-    VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_MODULATION_MODE_RGBA_NV - VK_COVERAGE_MODULATION_MODE_NONE_NV + 1),
-    VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkCoverageModulationModeNV;
-
-typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
-
-typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
-    VkStructureType                                   sType;
-    const void*                                       pNext;
-    VkPipelineCoverageModulationStateCreateFlagsNV    flags;
-    VkCoverageModulationModeNV                        coverageModulationMode;
-    VkBool32                                          coverageModulationTableEnable;
-    uint32_t                                          coverageModulationTableCount;
-    const float*                                      pCoverageModulationTable;
-} VkPipelineCoverageModulationStateCreateInfoNV;
-
-
-
-#define VK_NV_fill_rectangle 1
-#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
-#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
-
-
-#define VK_EXT_post_depth_coverage 1
-#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
-#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
-
-
-#define VK_EXT_validation_cache 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
-
-#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
-#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
-#define VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
-
-
-typedef enum VkValidationCacheHeaderVersionEXT {
-    VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
-    VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
-    VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
-    VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1),
-    VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkValidationCacheHeaderVersionEXT;
-
-typedef VkFlags VkValidationCacheCreateFlagsEXT;
-
-typedef struct VkValidationCacheCreateInfoEXT {
-    VkStructureType                    sType;
-    const void*                        pNext;
-    VkValidationCacheCreateFlagsEXT    flags;
-    size_t                             initialDataSize;
-    const void*                        pInitialData;
-} VkValidationCacheCreateInfoEXT;
-
-typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
-    VkStructureType         sType;
-    const void*             pNext;
-    VkValidationCacheEXT    validationCache;
-} VkShaderModuleValidationCacheCreateInfoEXT;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
-typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
-typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
-    VkDevice                                    device,
-    const VkValidationCacheCreateInfoEXT*       pCreateInfo,
-    const VkAllocationCallbacks*                pAllocator,
-    VkValidationCacheEXT*                       pValidationCache);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
-    VkDevice                                    device,
-    VkValidationCacheEXT                        validationCache,
-    const VkAllocationCallbacks*                pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
-    VkDevice                                    device,
-    VkValidationCacheEXT                        dstCache,
-    uint32_t                                    srcCacheCount,
-    const VkValidationCacheEXT*                 pSrcCaches);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
-    VkDevice                                    device,
-    VkValidationCacheEXT                        validationCache,
-    size_t*                                     pDataSize,
-    void*                                       pData);
-#endif
-
-#define VK_EXT_shader_viewport_index_layer 1
-#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
-#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
-
-
-#define VK_EXT_global_priority 1
-#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
-#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
-
-
-typedef enum VkQueueGlobalPriorityEXT {
-    VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
-    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
-    VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
-    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
-    VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
-    VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT,
-    VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1),
-    VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkQueueGlobalPriorityEXT;
-
-typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
-    VkStructureType             sType;
-    const void*                 pNext;
-    VkQueueGlobalPriorityEXT    globalPriority;
-} VkDeviceQueueGlobalPriorityCreateInfoEXT;
-
-
-
-#define VK_EXT_external_memory_host 1
-#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
-#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
-
-typedef struct VkImportMemoryHostPointerInfoEXT {
-    VkStructureType                          sType;
-    const void*                              pNext;
-    VkExternalMemoryHandleTypeFlagBitsKHR    handleType;
-    void*                                    pHostPointer;
-} VkImportMemoryHostPointerInfoEXT;
-
-typedef struct VkMemoryHostPointerPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           memoryTypeBits;
-} VkMemoryHostPointerPropertiesEXT;
-
-typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkDeviceSize       minImportedHostPointerAlignment;
-} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
-
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
-    VkDevice                                    device,
-    VkExternalMemoryHandleTypeFlagBitsKHR       handleType,
-    const void*                                 pHostPointer,
-    VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
-#endif
-
-#define VK_AMD_buffer_marker 1
-#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
-#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker"
-
-typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
-    VkCommandBuffer                             commandBuffer,
-    VkPipelineStageFlagBits                     pipelineStage,
-    VkBuffer                                    dstBuffer,
-    VkDeviceSize                                dstOffset,
-    uint32_t                                    marker);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+#include "vk_platform.h"
+#include "vulkan_core.h"
+
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+#include "vulkan_android.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_IOS_MVK
+#include "vulkan_ios.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_MACOS_MVK
+#include "vulkan_macos.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_MIR_KHR
+#include <mir_toolkit/client_types.h>
+#include "vulkan_mir.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_VI_NN
+#include "vulkan_vi.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
+#include <wayland-client.h>
+#include "vulkan_wayland.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+#include <windows.h>
+#include "vulkan_win32.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_XCB_KHR
+#include <xcb/xcb.h>
+#include "vulkan_xcb.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_XLIB_KHR
+#include <X11/Xlib.h>
+#include "vulkan_xlib.h"
+#endif
+
+
+#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
+#include <X11/Xlib.h>
+#include <X11/extensions/Xrandr.h>
+#include "vulkan_xlib_xrandr.h"
+#endif
+
+#endif // VULKAN_H_
diff --git a/include/vulkan/vulkan_android.h b/include/vulkan/vulkan_android.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_android.h
@@ -0,0 +1,126 @@
+#ifndef VULKAN_ANDROID_H_
+#define VULKAN_ANDROID_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_KHR_android_surface 1
+struct ANativeWindow;
+
+#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
+#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
+
+typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
+
+typedef struct VkAndroidSurfaceCreateInfoKHR {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkAndroidSurfaceCreateFlagsKHR    flags;
+    struct ANativeWindow*             window;
+} VkAndroidSurfaceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
+    VkInstance                                  instance,
+    const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+#endif
+
+#define VK_ANDROID_external_memory_android_hardware_buffer 1
+struct AHardwareBuffer;
+
+#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3
+#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
+
+typedef struct VkAndroidHardwareBufferUsageANDROID {
+    VkStructureType    sType;
+    void*              pNext;
+    uint64_t           androidHardwareBufferUsage;
+} VkAndroidHardwareBufferUsageANDROID;
+
+typedef struct VkAndroidHardwareBufferPropertiesANDROID {
+    VkStructureType    sType;
+    void*              pNext;
+    VkDeviceSize       allocationSize;
+    uint32_t           memoryTypeBits;
+} VkAndroidHardwareBufferPropertiesANDROID;
+
+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;
+
+typedef struct VkImportAndroidHardwareBufferInfoANDROID {
+    VkStructureType            sType;
+    const void*                pNext;
+    struct AHardwareBuffer*    buffer;
+} VkImportAndroidHardwareBufferInfoANDROID;
+
+typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceMemory     memory;
+} VkMemoryGetAndroidHardwareBufferInfoANDROID;
+
+typedef struct VkExternalFormatANDROID {
+    VkStructureType    sType;
+    void*              pNext;
+    uint64_t           externalFormat;
+} VkExternalFormatANDROID;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
+    VkDevice                                    device,
+    const struct AHardwareBuffer*               buffer,
+    VkAndroidHardwareBufferPropertiesANDROID*   pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
+    VkDevice                                    device,
+    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+    struct AHardwareBuffer**                    pBuffer);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_core.h
@@ -0,0 +1,7341 @@
+#ifndef VULKAN_CORE_H_
+#define VULKAN_CORE_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_VERSION_1_0 1
+#include "vk_platform.h"
+
+#define VK_MAKE_VERSION(major, minor, patch) \
+    (((major) << 22) | ((minor) << 12) | (patch))
+
+// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
+//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
+
+// Vulkan 1.0 version number
+#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
+
+#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
+#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
+#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
+// Version of this file
+#define VK_HEADER_VERSION 71
+
+
+#define VK_NULL_HANDLE 0
+        
+
+
+#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
+
+
+#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
+#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
+        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
+#else
+        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
+#endif
+#endif
+        
+
+
+typedef uint32_t VkFlags;
+typedef uint32_t VkBool32;
+typedef uint64_t VkDeviceSize;
+typedef uint32_t VkSampleMask;
+
+VK_DEFINE_HANDLE(VkInstance)
+VK_DEFINE_HANDLE(VkPhysicalDevice)
+VK_DEFINE_HANDLE(VkDevice)
+VK_DEFINE_HANDLE(VkQueue)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
+VK_DEFINE_HANDLE(VkCommandBuffer)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
+
+#define VK_LOD_CLAMP_NONE                 1000.0f
+#define VK_REMAINING_MIP_LEVELS           (~0U)
+#define VK_REMAINING_ARRAY_LAYERS         (~0U)
+#define VK_WHOLE_SIZE                     (~0ULL)
+#define VK_ATTACHMENT_UNUSED              (~0U)
+#define VK_TRUE                           1
+#define VK_FALSE                          0
+#define VK_QUEUE_FAMILY_IGNORED           (~0U)
+#define VK_SUBPASS_EXTERNAL               (~0U)
+#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
+#define VK_UUID_SIZE                      16
+#define VK_MAX_MEMORY_TYPES               32
+#define VK_MAX_MEMORY_HEAPS               16
+#define VK_MAX_EXTENSION_NAME_SIZE        256
+#define VK_MAX_DESCRIPTION_SIZE           256
+
+
+typedef enum VkPipelineCacheHeaderVersion {
+    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
+    VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
+    VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
+    VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1),
+    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
+} VkPipelineCacheHeaderVersion;
+
+typedef enum VkResult {
+    VK_SUCCESS = 0,
+    VK_NOT_READY = 1,
+    VK_TIMEOUT = 2,
+    VK_EVENT_SET = 3,
+    VK_EVENT_RESET = 4,
+    VK_INCOMPLETE = 5,
+    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
+    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
+    VK_ERROR_INITIALIZATION_FAILED = -3,
+    VK_ERROR_DEVICE_LOST = -4,
+    VK_ERROR_MEMORY_MAP_FAILED = -5,
+    VK_ERROR_LAYER_NOT_PRESENT = -6,
+    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
+    VK_ERROR_FEATURE_NOT_PRESENT = -8,
+    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
+    VK_ERROR_TOO_MANY_OBJECTS = -10,
+    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
+    VK_ERROR_FRAGMENTED_POOL = -12,
+    VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
+    VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
+    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
+    VK_SUBOPTIMAL_KHR = 1000001003,
+    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
+    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
+    VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
+    VK_ERROR_INVALID_SHADER_NV = -1000012000,
+    VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
+    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
+    VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+    VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
+    VK_RESULT_END_RANGE = VK_INCOMPLETE,
+    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
+    VK_RESULT_MAX_ENUM = 0x7FFFFFFF
+} VkResult;
+
+typedef enum VkStructureType {
+    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
+    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
+    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
+    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
+    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
+    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
+    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
+    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
+    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
+    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
+    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
+    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
+    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
+    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
+    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
+    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
+    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
+    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
+    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
+    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
+    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
+    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
+    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
+    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
+    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
+    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
+    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
+    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
+    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
+    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
+    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
+    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
+    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000,
+    VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
+    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
+    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
+    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
+    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
+    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
+    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
+    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000,
+    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
+    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
+    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
+    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
+    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
+    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
+    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
+    VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
+    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
+    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
+    VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
+    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
+    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
+    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
+    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
+    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
+    VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
+    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
+    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
+    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
+    VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
+    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
+    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
+    VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
+    VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
+    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
+    VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
+    VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
+    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
+    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
+    VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
+    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
+    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
+    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
+    VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
+    VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
+    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
+    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
+    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
+    VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
+    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
+    VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
+    VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
+    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
+    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
+    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
+    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
+    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
+    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
+    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
+    VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
+    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
+    VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
+    VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
+    VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
+    VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
+    VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
+    VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
+    VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
+    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
+    VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
+    VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
+    VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
+    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
+    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
+    VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
+    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
+    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
+    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
+    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
+    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
+    VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
+    VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
+    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
+    VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
+    VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
+    VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
+    VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
+    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
+    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
+    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
+    VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
+    VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
+    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
+    VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
+    VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
+    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
+    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
+    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
+    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
+    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+    VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
+    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
+    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkStructureType;
+
+typedef enum VkSystemAllocationScope {
+    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
+    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
+    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
+    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
+    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
+    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
+    VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
+    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
+    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
+} VkSystemAllocationScope;
+
+typedef enum VkInternalAllocationType {
+    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
+    VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
+    VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
+    VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
+    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkInternalAllocationType;
+
+typedef enum VkFormat {
+    VK_FORMAT_UNDEFINED = 0,
+    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
+    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
+    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
+    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
+    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
+    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
+    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
+    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
+    VK_FORMAT_R8_UNORM = 9,
+    VK_FORMAT_R8_SNORM = 10,
+    VK_FORMAT_R8_USCALED = 11,
+    VK_FORMAT_R8_SSCALED = 12,
+    VK_FORMAT_R8_UINT = 13,
+    VK_FORMAT_R8_SINT = 14,
+    VK_FORMAT_R8_SRGB = 15,
+    VK_FORMAT_R8G8_UNORM = 16,
+    VK_FORMAT_R8G8_SNORM = 17,
+    VK_FORMAT_R8G8_USCALED = 18,
+    VK_FORMAT_R8G8_SSCALED = 19,
+    VK_FORMAT_R8G8_UINT = 20,
+    VK_FORMAT_R8G8_SINT = 21,
+    VK_FORMAT_R8G8_SRGB = 22,
+    VK_FORMAT_R8G8B8_UNORM = 23,
+    VK_FORMAT_R8G8B8_SNORM = 24,
+    VK_FORMAT_R8G8B8_USCALED = 25,
+    VK_FORMAT_R8G8B8_SSCALED = 26,
+    VK_FORMAT_R8G8B8_UINT = 27,
+    VK_FORMAT_R8G8B8_SINT = 28,
+    VK_FORMAT_R8G8B8_SRGB = 29,
+    VK_FORMAT_B8G8R8_UNORM = 30,
+    VK_FORMAT_B8G8R8_SNORM = 31,
+    VK_FORMAT_B8G8R8_USCALED = 32,
+    VK_FORMAT_B8G8R8_SSCALED = 33,
+    VK_FORMAT_B8G8R8_UINT = 34,
+    VK_FORMAT_B8G8R8_SINT = 35,
+    VK_FORMAT_B8G8R8_SRGB = 36,
+    VK_FORMAT_R8G8B8A8_UNORM = 37,
+    VK_FORMAT_R8G8B8A8_SNORM = 38,
+    VK_FORMAT_R8G8B8A8_USCALED = 39,
+    VK_FORMAT_R8G8B8A8_SSCALED = 40,
+    VK_FORMAT_R8G8B8A8_UINT = 41,
+    VK_FORMAT_R8G8B8A8_SINT = 42,
+    VK_FORMAT_R8G8B8A8_SRGB = 43,
+    VK_FORMAT_B8G8R8A8_UNORM = 44,
+    VK_FORMAT_B8G8R8A8_SNORM = 45,
+    VK_FORMAT_B8G8R8A8_USCALED = 46,
+    VK_FORMAT_B8G8R8A8_SSCALED = 47,
+    VK_FORMAT_B8G8R8A8_UINT = 48,
+    VK_FORMAT_B8G8R8A8_SINT = 49,
+    VK_FORMAT_B8G8R8A8_SRGB = 50,
+    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
+    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
+    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
+    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
+    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
+    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
+    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
+    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
+    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
+    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
+    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
+    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
+    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
+    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
+    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
+    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
+    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
+    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
+    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
+    VK_FORMAT_R16_UNORM = 70,
+    VK_FORMAT_R16_SNORM = 71,
+    VK_FORMAT_R16_USCALED = 72,
+    VK_FORMAT_R16_SSCALED = 73,
+    VK_FORMAT_R16_UINT = 74,
+    VK_FORMAT_R16_SINT = 75,
+    VK_FORMAT_R16_SFLOAT = 76,
+    VK_FORMAT_R16G16_UNORM = 77,
+    VK_FORMAT_R16G16_SNORM = 78,
+    VK_FORMAT_R16G16_USCALED = 79,
+    VK_FORMAT_R16G16_SSCALED = 80,
+    VK_FORMAT_R16G16_UINT = 81,
+    VK_FORMAT_R16G16_SINT = 82,
+    VK_FORMAT_R16G16_SFLOAT = 83,
+    VK_FORMAT_R16G16B16_UNORM = 84,
+    VK_FORMAT_R16G16B16_SNORM = 85,
+    VK_FORMAT_R16G16B16_USCALED = 86,
+    VK_FORMAT_R16G16B16_SSCALED = 87,
+    VK_FORMAT_R16G16B16_UINT = 88,
+    VK_FORMAT_R16G16B16_SINT = 89,
+    VK_FORMAT_R16G16B16_SFLOAT = 90,
+    VK_FORMAT_R16G16B16A16_UNORM = 91,
+    VK_FORMAT_R16G16B16A16_SNORM = 92,
+    VK_FORMAT_R16G16B16A16_USCALED = 93,
+    VK_FORMAT_R16G16B16A16_SSCALED = 94,
+    VK_FORMAT_R16G16B16A16_UINT = 95,
+    VK_FORMAT_R16G16B16A16_SINT = 96,
+    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
+    VK_FORMAT_R32_UINT = 98,
+    VK_FORMAT_R32_SINT = 99,
+    VK_FORMAT_R32_SFLOAT = 100,
+    VK_FORMAT_R32G32_UINT = 101,
+    VK_FORMAT_R32G32_SINT = 102,
+    VK_FORMAT_R32G32_SFLOAT = 103,
+    VK_FORMAT_R32G32B32_UINT = 104,
+    VK_FORMAT_R32G32B32_SINT = 105,
+    VK_FORMAT_R32G32B32_SFLOAT = 106,
+    VK_FORMAT_R32G32B32A32_UINT = 107,
+    VK_FORMAT_R32G32B32A32_SINT = 108,
+    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
+    VK_FORMAT_R64_UINT = 110,
+    VK_FORMAT_R64_SINT = 111,
+    VK_FORMAT_R64_SFLOAT = 112,
+    VK_FORMAT_R64G64_UINT = 113,
+    VK_FORMAT_R64G64_SINT = 114,
+    VK_FORMAT_R64G64_SFLOAT = 115,
+    VK_FORMAT_R64G64B64_UINT = 116,
+    VK_FORMAT_R64G64B64_SINT = 117,
+    VK_FORMAT_R64G64B64_SFLOAT = 118,
+    VK_FORMAT_R64G64B64A64_UINT = 119,
+    VK_FORMAT_R64G64B64A64_SINT = 120,
+    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
+    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
+    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
+    VK_FORMAT_D16_UNORM = 124,
+    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
+    VK_FORMAT_D32_SFLOAT = 126,
+    VK_FORMAT_S8_UINT = 127,
+    VK_FORMAT_D16_UNORM_S8_UINT = 128,
+    VK_FORMAT_D24_UNORM_S8_UINT = 129,
+    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
+    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
+    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
+    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
+    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
+    VK_FORMAT_BC2_UNORM_BLOCK = 135,
+    VK_FORMAT_BC2_SRGB_BLOCK = 136,
+    VK_FORMAT_BC3_UNORM_BLOCK = 137,
+    VK_FORMAT_BC3_SRGB_BLOCK = 138,
+    VK_FORMAT_BC4_UNORM_BLOCK = 139,
+    VK_FORMAT_BC4_SNORM_BLOCK = 140,
+    VK_FORMAT_BC5_UNORM_BLOCK = 141,
+    VK_FORMAT_BC5_SNORM_BLOCK = 142,
+    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
+    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
+    VK_FORMAT_BC7_UNORM_BLOCK = 145,
+    VK_FORMAT_BC7_SRGB_BLOCK = 146,
+    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
+    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
+    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
+    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
+    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
+    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
+    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
+    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
+    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
+    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
+    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
+    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
+    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
+    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
+    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
+    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
+    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
+    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
+    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
+    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
+    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
+    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
+    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
+    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
+    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
+    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
+    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
+    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
+    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
+    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
+    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
+    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
+    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
+    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
+    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
+    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
+    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
+    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
+    VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
+    VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
+    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
+    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
+    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
+    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
+    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
+    VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
+    VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
+    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
+    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
+    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
+    VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
+    VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
+    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
+    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
+    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
+    VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
+    VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
+    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
+    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
+    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
+    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
+    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
+    VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
+    VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
+    VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
+    VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
+    VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
+    VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
+    VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
+    VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
+    VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
+    VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
+    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
+    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
+    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
+    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
+    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
+    VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
+    VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
+    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
+    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
+    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
+    VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
+    VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
+    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
+    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
+    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
+    VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
+    VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
+    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
+    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
+    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
+    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
+    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
+    VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
+    VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
+    VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
+    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
+} VkFormat;
+
+typedef enum VkImageType {
+    VK_IMAGE_TYPE_1D = 0,
+    VK_IMAGE_TYPE_2D = 1,
+    VK_IMAGE_TYPE_3D = 2,
+    VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
+    VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
+    VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
+    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkImageType;
+
+typedef enum VkImageTiling {
+    VK_IMAGE_TILING_OPTIMAL = 0,
+    VK_IMAGE_TILING_LINEAR = 1,
+    VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
+    VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
+    VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
+    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
+} VkImageTiling;
+
+typedef enum VkPhysicalDeviceType {
+    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
+    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
+    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
+    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
+    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
+    VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
+    VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
+    VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
+    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkPhysicalDeviceType;
+
+typedef enum VkQueryType {
+    VK_QUERY_TYPE_OCCLUSION = 0,
+    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
+    VK_QUERY_TYPE_TIMESTAMP = 2,
+    VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
+    VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
+    VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
+    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkQueryType;
+
+typedef enum VkSharingMode {
+    VK_SHARING_MODE_EXCLUSIVE = 0,
+    VK_SHARING_MODE_CONCURRENT = 1,
+    VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
+    VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
+    VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
+    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSharingMode;
+
+typedef enum VkImageLayout {
+    VK_IMAGE_LAYOUT_UNDEFINED = 0,
+    VK_IMAGE_LAYOUT_GENERAL = 1,
+    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
+    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
+    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
+    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
+    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
+    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
+    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
+    VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
+    VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
+    VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
+    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
+} VkImageLayout;
+
+typedef enum VkImageViewType {
+    VK_IMAGE_VIEW_TYPE_1D = 0,
+    VK_IMAGE_VIEW_TYPE_2D = 1,
+    VK_IMAGE_VIEW_TYPE_3D = 2,
+    VK_IMAGE_VIEW_TYPE_CUBE = 3,
+    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
+    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
+    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
+    VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
+    VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
+    VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
+    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkImageViewType;
+
+typedef enum VkComponentSwizzle {
+    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
+    VK_COMPONENT_SWIZZLE_ZERO = 1,
+    VK_COMPONENT_SWIZZLE_ONE = 2,
+    VK_COMPONENT_SWIZZLE_R = 3,
+    VK_COMPONENT_SWIZZLE_G = 4,
+    VK_COMPONENT_SWIZZLE_B = 5,
+    VK_COMPONENT_SWIZZLE_A = 6,
+    VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
+    VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
+    VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
+    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
+} VkComponentSwizzle;
+
+typedef enum VkVertexInputRate {
+    VK_VERTEX_INPUT_RATE_VERTEX = 0,
+    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
+    VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
+    VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
+    VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
+    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
+} VkVertexInputRate;
+
+typedef enum VkPrimitiveTopology {
+    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
+    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
+    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
+    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
+    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
+    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
+    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
+    VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
+    VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
+    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
+    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
+} VkPrimitiveTopology;
+
+typedef enum VkPolygonMode {
+    VK_POLYGON_MODE_FILL = 0,
+    VK_POLYGON_MODE_LINE = 1,
+    VK_POLYGON_MODE_POINT = 2,
+    VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
+    VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
+    VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
+    VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
+    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkPolygonMode;
+
+typedef enum VkFrontFace {
+    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
+    VK_FRONT_FACE_CLOCKWISE = 1,
+    VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
+    VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
+    VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
+    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
+} VkFrontFace;
+
+typedef enum VkCompareOp {
+    VK_COMPARE_OP_NEVER = 0,
+    VK_COMPARE_OP_LESS = 1,
+    VK_COMPARE_OP_EQUAL = 2,
+    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
+    VK_COMPARE_OP_GREATER = 4,
+    VK_COMPARE_OP_NOT_EQUAL = 5,
+    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
+    VK_COMPARE_OP_ALWAYS = 7,
+    VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
+    VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
+    VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
+    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
+} VkCompareOp;
+
+typedef enum VkStencilOp {
+    VK_STENCIL_OP_KEEP = 0,
+    VK_STENCIL_OP_ZERO = 1,
+    VK_STENCIL_OP_REPLACE = 2,
+    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
+    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
+    VK_STENCIL_OP_INVERT = 5,
+    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
+    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
+    VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
+    VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
+    VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
+    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
+} VkStencilOp;
+
+typedef enum VkLogicOp {
+    VK_LOGIC_OP_CLEAR = 0,
+    VK_LOGIC_OP_AND = 1,
+    VK_LOGIC_OP_AND_REVERSE = 2,
+    VK_LOGIC_OP_COPY = 3,
+    VK_LOGIC_OP_AND_INVERTED = 4,
+    VK_LOGIC_OP_NO_OP = 5,
+    VK_LOGIC_OP_XOR = 6,
+    VK_LOGIC_OP_OR = 7,
+    VK_LOGIC_OP_NOR = 8,
+    VK_LOGIC_OP_EQUIVALENT = 9,
+    VK_LOGIC_OP_INVERT = 10,
+    VK_LOGIC_OP_OR_REVERSE = 11,
+    VK_LOGIC_OP_COPY_INVERTED = 12,
+    VK_LOGIC_OP_OR_INVERTED = 13,
+    VK_LOGIC_OP_NAND = 14,
+    VK_LOGIC_OP_SET = 15,
+    VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
+    VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
+    VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
+    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
+} VkLogicOp;
+
+typedef enum VkBlendFactor {
+    VK_BLEND_FACTOR_ZERO = 0,
+    VK_BLEND_FACTOR_ONE = 1,
+    VK_BLEND_FACTOR_SRC_COLOR = 2,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
+    VK_BLEND_FACTOR_DST_COLOR = 4,
+    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
+    VK_BLEND_FACTOR_SRC_ALPHA = 6,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
+    VK_BLEND_FACTOR_DST_ALPHA = 8,
+    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
+    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
+    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
+    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
+    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
+    VK_BLEND_FACTOR_SRC1_COLOR = 15,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
+    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
+    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
+    VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
+    VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
+    VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
+    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
+} VkBlendFactor;
+
+typedef enum VkBlendOp {
+    VK_BLEND_OP_ADD = 0,
+    VK_BLEND_OP_SUBTRACT = 1,
+    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
+    VK_BLEND_OP_MIN = 3,
+    VK_BLEND_OP_MAX = 4,
+    VK_BLEND_OP_ZERO_EXT = 1000148000,
+    VK_BLEND_OP_SRC_EXT = 1000148001,
+    VK_BLEND_OP_DST_EXT = 1000148002,
+    VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
+    VK_BLEND_OP_DST_OVER_EXT = 1000148004,
+    VK_BLEND_OP_SRC_IN_EXT = 1000148005,
+    VK_BLEND_OP_DST_IN_EXT = 1000148006,
+    VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
+    VK_BLEND_OP_DST_OUT_EXT = 1000148008,
+    VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
+    VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
+    VK_BLEND_OP_XOR_EXT = 1000148011,
+    VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
+    VK_BLEND_OP_SCREEN_EXT = 1000148013,
+    VK_BLEND_OP_OVERLAY_EXT = 1000148014,
+    VK_BLEND_OP_DARKEN_EXT = 1000148015,
+    VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
+    VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
+    VK_BLEND_OP_COLORBURN_EXT = 1000148018,
+    VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
+    VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
+    VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
+    VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
+    VK_BLEND_OP_INVERT_EXT = 1000148023,
+    VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
+    VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
+    VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
+    VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
+    VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
+    VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
+    VK_BLEND_OP_HARDMIX_EXT = 1000148030,
+    VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
+    VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
+    VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
+    VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
+    VK_BLEND_OP_PLUS_EXT = 1000148035,
+    VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
+    VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
+    VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
+    VK_BLEND_OP_MINUS_EXT = 1000148039,
+    VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
+    VK_BLEND_OP_CONTRAST_EXT = 1000148041,
+    VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
+    VK_BLEND_OP_RED_EXT = 1000148043,
+    VK_BLEND_OP_GREEN_EXT = 1000148044,
+    VK_BLEND_OP_BLUE_EXT = 1000148045,
+    VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
+    VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
+    VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
+    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
+} VkBlendOp;
+
+typedef enum VkDynamicState {
+    VK_DYNAMIC_STATE_VIEWPORT = 0,
+    VK_DYNAMIC_STATE_SCISSOR = 1,
+    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
+    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
+    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
+    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
+    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
+    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
+    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
+    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
+    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
+    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
+    VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
+    VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
+    VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
+    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
+} VkDynamicState;
+
+typedef enum VkFilter {
+    VK_FILTER_NEAREST = 0,
+    VK_FILTER_LINEAR = 1,
+    VK_FILTER_CUBIC_IMG = 1000015000,
+    VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
+    VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
+    VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
+    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
+} VkFilter;
+
+typedef enum VkSamplerMipmapMode {
+    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
+    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
+    VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
+    VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
+    VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
+    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerMipmapMode;
+
+typedef enum VkSamplerAddressMode {
+    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
+    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
+    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
+    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
+    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
+    VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
+    VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
+    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerAddressMode;
+
+typedef enum VkBorderColor {
+    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
+    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
+    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
+    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
+    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
+    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
+    VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
+    VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
+    VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
+    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
+} VkBorderColor;
+
+typedef enum VkDescriptorType {
+    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
+    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
+    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
+    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
+    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
+    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
+    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
+    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
+    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
+    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
+    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
+    VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
+    VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
+    VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
+    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorType;
+
+typedef enum VkAttachmentLoadOp {
+    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
+    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
+    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
+    VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
+    VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+    VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
+    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
+} VkAttachmentLoadOp;
+
+typedef enum VkAttachmentStoreOp {
+    VK_ATTACHMENT_STORE_OP_STORE = 0,
+    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
+    VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
+    VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
+    VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
+    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
+} VkAttachmentStoreOp;
+
+typedef enum VkPipelineBindPoint {
+    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
+    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
+    VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
+    VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
+    VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
+    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
+} VkPipelineBindPoint;
+
+typedef enum VkCommandBufferLevel {
+    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
+    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
+    VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
+    VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
+    VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
+    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
+} VkCommandBufferLevel;
+
+typedef enum VkIndexType {
+    VK_INDEX_TYPE_UINT16 = 0,
+    VK_INDEX_TYPE_UINT32 = 1,
+    VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
+    VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
+    VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
+    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkIndexType;
+
+typedef enum VkSubpassContents {
+    VK_SUBPASS_CONTENTS_INLINE = 0,
+    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
+    VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
+    VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
+    VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
+    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
+} VkSubpassContents;
+
+typedef enum VkObjectType {
+    VK_OBJECT_TYPE_UNKNOWN = 0,
+    VK_OBJECT_TYPE_INSTANCE = 1,
+    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
+    VK_OBJECT_TYPE_DEVICE = 3,
+    VK_OBJECT_TYPE_QUEUE = 4,
+    VK_OBJECT_TYPE_SEMAPHORE = 5,
+    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
+    VK_OBJECT_TYPE_FENCE = 7,
+    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
+    VK_OBJECT_TYPE_BUFFER = 9,
+    VK_OBJECT_TYPE_IMAGE = 10,
+    VK_OBJECT_TYPE_EVENT = 11,
+    VK_OBJECT_TYPE_QUERY_POOL = 12,
+    VK_OBJECT_TYPE_BUFFER_VIEW = 13,
+    VK_OBJECT_TYPE_IMAGE_VIEW = 14,
+    VK_OBJECT_TYPE_SHADER_MODULE = 15,
+    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
+    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
+    VK_OBJECT_TYPE_RENDER_PASS = 18,
+    VK_OBJECT_TYPE_PIPELINE = 19,
+    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
+    VK_OBJECT_TYPE_SAMPLER = 21,
+    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
+    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
+    VK_OBJECT_TYPE_FRAMEBUFFER = 24,
+    VK_OBJECT_TYPE_COMMAND_POOL = 25,
+    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
+    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
+    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
+    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
+    VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
+    VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
+    VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
+    VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
+    VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
+    VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
+    VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
+    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
+    VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN,
+    VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL,
+    VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1),
+    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkObjectType;
+
+typedef VkFlags VkInstanceCreateFlags;
+
+typedef enum VkFormatFeatureFlagBits {
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
+    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
+    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
+    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
+    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
+    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
+    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
+    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
+    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
+    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
+    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
+    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
+    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
+    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
+    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
+    VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
+    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
+    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
+    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
+    VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
+    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
+    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkFormatFeatureFlagBits;
+typedef VkFlags VkFormatFeatureFlags;
+
+typedef enum VkImageUsageFlagBits {
+    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
+    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
+    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
+    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
+    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
+    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
+    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
+    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
+    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkImageUsageFlagBits;
+typedef VkFlags VkImageUsageFlags;
+
+typedef enum VkImageCreateFlagBits {
+    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
+    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
+    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
+    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
+    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
+    VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
+    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
+    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
+    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
+    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
+    VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
+    VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
+    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
+    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
+    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
+    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
+    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
+    VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
+    VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
+    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkImageCreateFlagBits;
+typedef VkFlags VkImageCreateFlags;
+
+typedef enum VkSampleCountFlagBits {
+    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
+    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
+    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
+    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
+    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
+    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
+    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
+    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSampleCountFlagBits;
+typedef VkFlags VkSampleCountFlags;
+
+typedef enum VkQueueFlagBits {
+    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
+    VK_QUEUE_COMPUTE_BIT = 0x00000002,
+    VK_QUEUE_TRANSFER_BIT = 0x00000004,
+    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
+    VK_QUEUE_PROTECTED_BIT = 0x00000010,
+    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkQueueFlagBits;
+typedef VkFlags VkQueueFlags;
+
+typedef enum VkMemoryPropertyFlagBits {
+    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
+    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
+    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
+    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
+    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
+    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
+    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkMemoryPropertyFlagBits;
+typedef VkFlags VkMemoryPropertyFlags;
+
+typedef enum VkMemoryHeapFlagBits {
+    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
+    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
+    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
+    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkMemoryHeapFlagBits;
+typedef VkFlags VkMemoryHeapFlags;
+typedef VkFlags VkDeviceCreateFlags;
+
+typedef enum VkDeviceQueueCreateFlagBits {
+    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
+    VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDeviceQueueCreateFlagBits;
+typedef VkFlags VkDeviceQueueCreateFlags;
+
+typedef enum VkPipelineStageFlagBits {
+    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
+    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
+    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
+    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
+    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
+    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
+    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
+    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
+    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
+    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
+    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
+    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
+    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
+    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
+    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
+    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
+    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
+    VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
+    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkPipelineStageFlagBits;
+typedef VkFlags VkPipelineStageFlags;
+typedef VkFlags VkMemoryMapFlags;
+
+typedef enum VkImageAspectFlagBits {
+    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
+    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
+    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
+    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
+    VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
+    VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
+    VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
+    VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
+    VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
+    VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
+    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkImageAspectFlagBits;
+typedef VkFlags VkImageAspectFlags;
+
+typedef enum VkSparseImageFormatFlagBits {
+    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
+    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
+    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
+    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSparseImageFormatFlagBits;
+typedef VkFlags VkSparseImageFormatFlags;
+
+typedef enum VkSparseMemoryBindFlagBits {
+    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
+    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSparseMemoryBindFlagBits;
+typedef VkFlags VkSparseMemoryBindFlags;
+
+typedef enum VkFenceCreateFlagBits {
+    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
+    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkFenceCreateFlagBits;
+typedef VkFlags VkFenceCreateFlags;
+typedef VkFlags VkSemaphoreCreateFlags;
+typedef VkFlags VkEventCreateFlags;
+typedef VkFlags VkQueryPoolCreateFlags;
+
+typedef enum VkQueryPipelineStatisticFlagBits {
+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
+    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
+    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
+    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
+    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
+    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
+    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
+    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
+    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkQueryPipelineStatisticFlagBits;
+typedef VkFlags VkQueryPipelineStatisticFlags;
+
+typedef enum VkQueryResultFlagBits {
+    VK_QUERY_RESULT_64_BIT = 0x00000001,
+    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
+    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
+    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
+    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkQueryResultFlagBits;
+typedef VkFlags VkQueryResultFlags;
+
+typedef enum VkBufferCreateFlagBits {
+    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
+    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
+    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
+    VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
+    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkBufferCreateFlagBits;
+typedef VkFlags VkBufferCreateFlags;
+
+typedef enum VkBufferUsageFlagBits {
+    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
+    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
+    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
+    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
+    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
+    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
+    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
+    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
+    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkBufferUsageFlagBits;
+typedef VkFlags VkBufferUsageFlags;
+typedef VkFlags VkBufferViewCreateFlags;
+typedef VkFlags VkImageViewCreateFlags;
+typedef VkFlags VkShaderModuleCreateFlags;
+typedef VkFlags VkPipelineCacheCreateFlags;
+
+typedef enum VkPipelineCreateFlagBits {
+    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
+    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
+    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
+    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
+    VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
+    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
+    VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
+    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkPipelineCreateFlagBits;
+typedef VkFlags VkPipelineCreateFlags;
+typedef VkFlags VkPipelineShaderStageCreateFlags;
+
+typedef enum VkShaderStageFlagBits {
+    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
+    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
+    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
+    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
+    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
+    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
+    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
+    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
+    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkShaderStageFlagBits;
+typedef VkFlags VkPipelineVertexInputStateCreateFlags;
+typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
+typedef VkFlags VkPipelineTessellationStateCreateFlags;
+typedef VkFlags VkPipelineViewportStateCreateFlags;
+typedef VkFlags VkPipelineRasterizationStateCreateFlags;
+
+typedef enum VkCullModeFlagBits {
+    VK_CULL_MODE_NONE = 0,
+    VK_CULL_MODE_FRONT_BIT = 0x00000001,
+    VK_CULL_MODE_BACK_BIT = 0x00000002,
+    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
+    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkCullModeFlagBits;
+typedef VkFlags VkCullModeFlags;
+typedef VkFlags VkPipelineMultisampleStateCreateFlags;
+typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
+typedef VkFlags VkPipelineColorBlendStateCreateFlags;
+
+typedef enum VkColorComponentFlagBits {
+    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
+    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
+    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
+    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
+    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkColorComponentFlagBits;
+typedef VkFlags VkColorComponentFlags;
+typedef VkFlags VkPipelineDynamicStateCreateFlags;
+typedef VkFlags VkPipelineLayoutCreateFlags;
+typedef VkFlags VkShaderStageFlags;
+typedef VkFlags VkSamplerCreateFlags;
+
+typedef enum VkDescriptorSetLayoutCreateFlagBits {
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorSetLayoutCreateFlagBits;
+typedef VkFlags VkDescriptorSetLayoutCreateFlags;
+
+typedef enum VkDescriptorPoolCreateFlagBits {
+    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
+    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorPoolCreateFlagBits;
+typedef VkFlags VkDescriptorPoolCreateFlags;
+typedef VkFlags VkDescriptorPoolResetFlags;
+typedef VkFlags VkFramebufferCreateFlags;
+typedef VkFlags VkRenderPassCreateFlags;
+
+typedef enum VkAttachmentDescriptionFlagBits {
+    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
+    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkAttachmentDescriptionFlagBits;
+typedef VkFlags VkAttachmentDescriptionFlags;
+
+typedef enum VkSubpassDescriptionFlagBits {
+    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
+    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
+    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSubpassDescriptionFlagBits;
+typedef VkFlags VkSubpassDescriptionFlags;
+
+typedef enum VkAccessFlagBits {
+    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
+    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
+    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
+    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
+    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
+    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
+    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
+    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
+    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
+    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
+    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
+    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
+    VK_ACCESS_HOST_READ_BIT = 0x00002000,
+    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
+    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
+    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
+    VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
+    VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
+    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
+    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkAccessFlagBits;
+typedef VkFlags VkAccessFlags;
+
+typedef enum VkDependencyFlagBits {
+    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
+    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
+    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
+    VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,
+    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
+    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDependencyFlagBits;
+typedef VkFlags VkDependencyFlags;
+
+typedef enum VkCommandPoolCreateFlagBits {
+    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
+    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
+    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
+    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkCommandPoolCreateFlagBits;
+typedef VkFlags VkCommandPoolCreateFlags;
+
+typedef enum VkCommandPoolResetFlagBits {
+    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
+    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkCommandPoolResetFlagBits;
+typedef VkFlags VkCommandPoolResetFlags;
+
+typedef enum VkCommandBufferUsageFlagBits {
+    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
+    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
+    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
+    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkCommandBufferUsageFlagBits;
+typedef VkFlags VkCommandBufferUsageFlags;
+
+typedef enum VkQueryControlFlagBits {
+    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
+    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkQueryControlFlagBits;
+typedef VkFlags VkQueryControlFlags;
+
+typedef enum VkCommandBufferResetFlagBits {
+    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
+    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkCommandBufferResetFlagBits;
+typedef VkFlags VkCommandBufferResetFlags;
+
+typedef enum VkStencilFaceFlagBits {
+    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
+    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
+    VK_STENCIL_FRONT_AND_BACK = 0x00000003,
+    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkStencilFaceFlagBits;
+typedef VkFlags VkStencilFaceFlags;
+
+typedef struct VkApplicationInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    const char*        pApplicationName;
+    uint32_t           applicationVersion;
+    const char*        pEngineName;
+    uint32_t           engineVersion;
+    uint32_t           apiVersion;
+} VkApplicationInfo;
+
+typedef struct VkInstanceCreateInfo {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkInstanceCreateFlags       flags;
+    const VkApplicationInfo*    pApplicationInfo;
+    uint32_t                    enabledLayerCount;
+    const char* const*          ppEnabledLayerNames;
+    uint32_t                    enabledExtensionCount;
+    const char* const*          ppEnabledExtensionNames;
+} VkInstanceCreateInfo;
+
+typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
+    void*                                       pUserData,
+    size_t                                      size,
+    size_t                                      alignment,
+    VkSystemAllocationScope                     allocationScope);
+
+typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
+    void*                                       pUserData,
+    void*                                       pOriginal,
+    size_t                                      size,
+    size_t                                      alignment,
+    VkSystemAllocationScope                     allocationScope);
+
+typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
+    void*                                       pUserData,
+    void*                                       pMemory);
+
+typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
+    void*                                       pUserData,
+    size_t                                      size,
+    VkInternalAllocationType                    allocationType,
+    VkSystemAllocationScope                     allocationScope);
+
+typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
+    void*                                       pUserData,
+    size_t                                      size,
+    VkInternalAllocationType                    allocationType,
+    VkSystemAllocationScope                     allocationScope);
+
+typedef struct VkAllocationCallbacks {
+    void*                                   pUserData;
+    PFN_vkAllocationFunction                pfnAllocation;
+    PFN_vkReallocationFunction              pfnReallocation;
+    PFN_vkFreeFunction                      pfnFree;
+    PFN_vkInternalAllocationNotification    pfnInternalAllocation;
+    PFN_vkInternalFreeNotification          pfnInternalFree;
+} VkAllocationCallbacks;
+
+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;
+
+typedef struct VkFormatProperties {
+    VkFormatFeatureFlags    linearTilingFeatures;
+    VkFormatFeatureFlags    optimalTilingFeatures;
+    VkFormatFeatureFlags    bufferFeatures;
+} VkFormatProperties;
+
+typedef struct VkExtent3D {
+    uint32_t    width;
+    uint32_t    height;
+    uint32_t    depth;
+} VkExtent3D;
+
+typedef struct VkImageFormatProperties {
+    VkExtent3D            maxExtent;
+    uint32_t              maxMipLevels;
+    uint32_t              maxArrayLayers;
+    VkSampleCountFlags    sampleCounts;
+    VkDeviceSize          maxResourceSize;
+} VkImageFormatProperties;
+
+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;
+
+typedef struct VkPhysicalDeviceSparseProperties {
+    VkBool32    residencyStandard2DBlockShape;
+    VkBool32    residencyStandard2DMultisampleBlockShape;
+    VkBool32    residencyStandard3DBlockShape;
+    VkBool32    residencyAlignedMipSize;
+    VkBool32    residencyNonResidentStrict;
+} VkPhysicalDeviceSparseProperties;
+
+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;
+
+typedef struct VkQueueFamilyProperties {
+    VkQueueFlags    queueFlags;
+    uint32_t        queueCount;
+    uint32_t        timestampValidBits;
+    VkExtent3D      minImageTransferGranularity;
+} VkQueueFamilyProperties;
+
+typedef struct VkMemoryType {
+    VkMemoryPropertyFlags    propertyFlags;
+    uint32_t                 heapIndex;
+} VkMemoryType;
+
+typedef struct VkMemoryHeap {
+    VkDeviceSize         size;
+    VkMemoryHeapFlags    flags;
+} VkMemoryHeap;
+
+typedef struct VkPhysicalDeviceMemoryProperties {
+    uint32_t        memoryTypeCount;
+    VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
+    uint32_t        memoryHeapCount;
+    VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
+} VkPhysicalDeviceMemoryProperties;
+
+typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
+typedef struct VkDeviceQueueCreateInfo {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkDeviceQueueCreateFlags    flags;
+    uint32_t                    queueFamilyIndex;
+    uint32_t                    queueCount;
+    const float*                pQueuePriorities;
+} VkDeviceQueueCreateInfo;
+
+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;
+
+typedef struct VkExtensionProperties {
+    char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
+    uint32_t    specVersion;
+} VkExtensionProperties;
+
+typedef struct VkLayerProperties {
+    char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
+    uint32_t    specVersion;
+    uint32_t    implementationVersion;
+    char        description[VK_MAX_DESCRIPTION_SIZE];
+} VkLayerProperties;
+
+typedef struct VkSubmitInfo {
+    VkStructureType                sType;
+    const void*                    pNext;
+    uint32_t                       waitSemaphoreCount;
+    const VkSemaphore*             pWaitSemaphores;
+    const VkPipelineStageFlags*    pWaitDstStageMask;
+    uint32_t                       commandBufferCount;
+    const VkCommandBuffer*         pCommandBuffers;
+    uint32_t                       signalSemaphoreCount;
+    const VkSemaphore*             pSignalSemaphores;
+} VkSubmitInfo;
+
+typedef struct VkMemoryAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceSize       allocationSize;
+    uint32_t           memoryTypeIndex;
+} VkMemoryAllocateInfo;
+
+typedef struct VkMappedMemoryRange {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceMemory     memory;
+    VkDeviceSize       offset;
+    VkDeviceSize       size;
+} VkMappedMemoryRange;
+
+typedef struct VkMemoryRequirements {
+    VkDeviceSize    size;
+    VkDeviceSize    alignment;
+    uint32_t        memoryTypeBits;
+} VkMemoryRequirements;
+
+typedef struct VkSparseImageFormatProperties {
+    VkImageAspectFlags          aspectMask;
+    VkExtent3D                  imageGranularity;
+    VkSparseImageFormatFlags    flags;
+} VkSparseImageFormatProperties;
+
+typedef struct VkSparseImageMemoryRequirements {
+    VkSparseImageFormatProperties    formatProperties;
+    uint32_t                         imageMipTailFirstLod;
+    VkDeviceSize                     imageMipTailSize;
+    VkDeviceSize                     imageMipTailOffset;
+    VkDeviceSize                     imageMipTailStride;
+} VkSparseImageMemoryRequirements;
+
+typedef struct VkSparseMemoryBind {
+    VkDeviceSize               resourceOffset;
+    VkDeviceSize               size;
+    VkDeviceMemory             memory;
+    VkDeviceSize               memoryOffset;
+    VkSparseMemoryBindFlags    flags;
+} VkSparseMemoryBind;
+
+typedef struct VkSparseBufferMemoryBindInfo {
+    VkBuffer                     buffer;
+    uint32_t                     bindCount;
+    const VkSparseMemoryBind*    pBinds;
+} VkSparseBufferMemoryBindInfo;
+
+typedef struct VkSparseImageOpaqueMemoryBindInfo {
+    VkImage                      image;
+    uint32_t                     bindCount;
+    const VkSparseMemoryBind*    pBinds;
+} VkSparseImageOpaqueMemoryBindInfo;
+
+typedef struct VkImageSubresource {
+    VkImageAspectFlags    aspectMask;
+    uint32_t              mipLevel;
+    uint32_t              arrayLayer;
+} VkImageSubresource;
+
+typedef struct VkOffset3D {
+    int32_t    x;
+    int32_t    y;
+    int32_t    z;
+} VkOffset3D;
+
+typedef struct VkSparseImageMemoryBind {
+    VkImageSubresource         subresource;
+    VkOffset3D                 offset;
+    VkExtent3D                 extent;
+    VkDeviceMemory             memory;
+    VkDeviceSize               memoryOffset;
+    VkSparseMemoryBindFlags    flags;
+} VkSparseImageMemoryBind;
+
+typedef struct VkSparseImageMemoryBindInfo {
+    VkImage                           image;
+    uint32_t                          bindCount;
+    const VkSparseImageMemoryBind*    pBinds;
+} VkSparseImageMemoryBindInfo;
+
+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;
+
+typedef struct VkFenceCreateInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkFenceCreateFlags    flags;
+} VkFenceCreateInfo;
+
+typedef struct VkSemaphoreCreateInfo {
+    VkStructureType           sType;
+    const void*               pNext;
+    VkSemaphoreCreateFlags    flags;
+} VkSemaphoreCreateInfo;
+
+typedef struct VkEventCreateInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkEventCreateFlags    flags;
+} VkEventCreateInfo;
+
+typedef struct VkQueryPoolCreateInfo {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkQueryPoolCreateFlags           flags;
+    VkQueryType                      queryType;
+    uint32_t                         queryCount;
+    VkQueryPipelineStatisticFlags    pipelineStatistics;
+} VkQueryPoolCreateInfo;
+
+typedef struct VkBufferCreateInfo {
+    VkStructureType        sType;
+    const void*            pNext;
+    VkBufferCreateFlags    flags;
+    VkDeviceSize           size;
+    VkBufferUsageFlags     usage;
+    VkSharingMode          sharingMode;
+    uint32_t               queueFamilyIndexCount;
+    const uint32_t*        pQueueFamilyIndices;
+} VkBufferCreateInfo;
+
+typedef struct VkBufferViewCreateInfo {
+    VkStructureType            sType;
+    const void*                pNext;
+    VkBufferViewCreateFlags    flags;
+    VkBuffer                   buffer;
+    VkFormat                   format;
+    VkDeviceSize               offset;
+    VkDeviceSize               range;
+} VkBufferViewCreateInfo;
+
+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;
+
+typedef struct VkSubresourceLayout {
+    VkDeviceSize    offset;
+    VkDeviceSize    size;
+    VkDeviceSize    rowPitch;
+    VkDeviceSize    arrayPitch;
+    VkDeviceSize    depthPitch;
+} VkSubresourceLayout;
+
+typedef struct VkComponentMapping {
+    VkComponentSwizzle    r;
+    VkComponentSwizzle    g;
+    VkComponentSwizzle    b;
+    VkComponentSwizzle    a;
+} VkComponentMapping;
+
+typedef struct VkImageSubresourceRange {
+    VkImageAspectFlags    aspectMask;
+    uint32_t              baseMipLevel;
+    uint32_t              levelCount;
+    uint32_t              baseArrayLayer;
+    uint32_t              layerCount;
+} VkImageSubresourceRange;
+
+typedef struct VkImageViewCreateInfo {
+    VkStructureType            sType;
+    const void*                pNext;
+    VkImageViewCreateFlags     flags;
+    VkImage                    image;
+    VkImageViewType            viewType;
+    VkFormat                   format;
+    VkComponentMapping         components;
+    VkImageSubresourceRange    subresourceRange;
+} VkImageViewCreateInfo;
+
+typedef struct VkShaderModuleCreateInfo {
+    VkStructureType              sType;
+    const void*                  pNext;
+    VkShaderModuleCreateFlags    flags;
+    size_t                       codeSize;
+    const uint32_t*              pCode;
+} VkShaderModuleCreateInfo;
+
+typedef struct VkPipelineCacheCreateInfo {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkPipelineCacheCreateFlags    flags;
+    size_t                        initialDataSize;
+    const void*                   pInitialData;
+} VkPipelineCacheCreateInfo;
+
+typedef struct VkSpecializationMapEntry {
+    uint32_t    constantID;
+    uint32_t    offset;
+    size_t      size;
+} VkSpecializationMapEntry;
+
+typedef struct VkSpecializationInfo {
+    uint32_t                           mapEntryCount;
+    const VkSpecializationMapEntry*    pMapEntries;
+    size_t                             dataSize;
+    const void*                        pData;
+} VkSpecializationInfo;
+
+typedef struct VkPipelineShaderStageCreateInfo {
+    VkStructureType                     sType;
+    const void*                         pNext;
+    VkPipelineShaderStageCreateFlags    flags;
+    VkShaderStageFlagBits               stage;
+    VkShaderModule                      module;
+    const char*                         pName;
+    const VkSpecializationInfo*         pSpecializationInfo;
+} VkPipelineShaderStageCreateInfo;
+
+typedef struct VkVertexInputBindingDescription {
+    uint32_t             binding;
+    uint32_t             stride;
+    VkVertexInputRate    inputRate;
+} VkVertexInputBindingDescription;
+
+typedef struct VkVertexInputAttributeDescription {
+    uint32_t    location;
+    uint32_t    binding;
+    VkFormat    format;
+    uint32_t    offset;
+} VkVertexInputAttributeDescription;
+
+typedef struct VkPipelineVertexInputStateCreateInfo {
+    VkStructureType                             sType;
+    const void*                                 pNext;
+    VkPipelineVertexInputStateCreateFlags       flags;
+    uint32_t                                    vertexBindingDescriptionCount;
+    const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
+    uint32_t                                    vertexAttributeDescriptionCount;
+    const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
+} VkPipelineVertexInputStateCreateInfo;
+
+typedef struct VkPipelineInputAssemblyStateCreateInfo {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    VkPipelineInputAssemblyStateCreateFlags    flags;
+    VkPrimitiveTopology                        topology;
+    VkBool32                                   primitiveRestartEnable;
+} VkPipelineInputAssemblyStateCreateInfo;
+
+typedef struct VkPipelineTessellationStateCreateInfo {
+    VkStructureType                           sType;
+    const void*                               pNext;
+    VkPipelineTessellationStateCreateFlags    flags;
+    uint32_t                                  patchControlPoints;
+} VkPipelineTessellationStateCreateInfo;
+
+typedef struct VkViewport {
+    float    x;
+    float    y;
+    float    width;
+    float    height;
+    float    minDepth;
+    float    maxDepth;
+} VkViewport;
+
+typedef struct VkOffset2D {
+    int32_t    x;
+    int32_t    y;
+} VkOffset2D;
+
+typedef struct VkExtent2D {
+    uint32_t    width;
+    uint32_t    height;
+} VkExtent2D;
+
+typedef struct VkRect2D {
+    VkOffset2D    offset;
+    VkExtent2D    extent;
+} VkRect2D;
+
+typedef struct VkPipelineViewportStateCreateInfo {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkPipelineViewportStateCreateFlags    flags;
+    uint32_t                              viewportCount;
+    const VkViewport*                     pViewports;
+    uint32_t                              scissorCount;
+    const VkRect2D*                       pScissors;
+} VkPipelineViewportStateCreateInfo;
+
+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;
+
+typedef struct VkPipelineMultisampleStateCreateInfo {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkPipelineMultisampleStateCreateFlags    flags;
+    VkSampleCountFlagBits                    rasterizationSamples;
+    VkBool32                                 sampleShadingEnable;
+    float                                    minSampleShading;
+    const VkSampleMask*                      pSampleMask;
+    VkBool32                                 alphaToCoverageEnable;
+    VkBool32                                 alphaToOneEnable;
+} VkPipelineMultisampleStateCreateInfo;
+
+typedef struct VkStencilOpState {
+    VkStencilOp    failOp;
+    VkStencilOp    passOp;
+    VkStencilOp    depthFailOp;
+    VkCompareOp    compareOp;
+    uint32_t       compareMask;
+    uint32_t       writeMask;
+    uint32_t       reference;
+} VkStencilOpState;
+
+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;
+
+typedef struct VkPipelineColorBlendAttachmentState {
+    VkBool32                 blendEnable;
+    VkBlendFactor            srcColorBlendFactor;
+    VkBlendFactor            dstColorBlendFactor;
+    VkBlendOp                colorBlendOp;
+    VkBlendFactor            srcAlphaBlendFactor;
+    VkBlendFactor            dstAlphaBlendFactor;
+    VkBlendOp                alphaBlendOp;
+    VkColorComponentFlags    colorWriteMask;
+} VkPipelineColorBlendAttachmentState;
+
+typedef struct VkPipelineColorBlendStateCreateInfo {
+    VkStructureType                               sType;
+    const void*                                   pNext;
+    VkPipelineColorBlendStateCreateFlags          flags;
+    VkBool32                                      logicOpEnable;
+    VkLogicOp                                     logicOp;
+    uint32_t                                      attachmentCount;
+    const VkPipelineColorBlendAttachmentState*    pAttachments;
+    float                                         blendConstants[4];
+} VkPipelineColorBlendStateCreateInfo;
+
+typedef struct VkPipelineDynamicStateCreateInfo {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkPipelineDynamicStateCreateFlags    flags;
+    uint32_t                             dynamicStateCount;
+    const VkDynamicState*                pDynamicStates;
+} VkPipelineDynamicStateCreateInfo;
+
+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;
+
+typedef struct VkComputePipelineCreateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkPipelineCreateFlags              flags;
+    VkPipelineShaderStageCreateInfo    stage;
+    VkPipelineLayout                   layout;
+    VkPipeline                         basePipelineHandle;
+    int32_t                            basePipelineIndex;
+} VkComputePipelineCreateInfo;
+
+typedef struct VkPushConstantRange {
+    VkShaderStageFlags    stageFlags;
+    uint32_t              offset;
+    uint32_t              size;
+} VkPushConstantRange;
+
+typedef struct VkPipelineLayoutCreateInfo {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkPipelineLayoutCreateFlags     flags;
+    uint32_t                        setLayoutCount;
+    const VkDescriptorSetLayout*    pSetLayouts;
+    uint32_t                        pushConstantRangeCount;
+    const VkPushConstantRange*      pPushConstantRanges;
+} VkPipelineLayoutCreateInfo;
+
+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;
+
+typedef struct VkDescriptorSetLayoutBinding {
+    uint32_t              binding;
+    VkDescriptorType      descriptorType;
+    uint32_t              descriptorCount;
+    VkShaderStageFlags    stageFlags;
+    const VkSampler*      pImmutableSamplers;
+} VkDescriptorSetLayoutBinding;
+
+typedef struct VkDescriptorSetLayoutCreateInfo {
+    VkStructureType                        sType;
+    const void*                            pNext;
+    VkDescriptorSetLayoutCreateFlags       flags;
+    uint32_t                               bindingCount;
+    const VkDescriptorSetLayoutBinding*    pBindings;
+} VkDescriptorSetLayoutCreateInfo;
+
+typedef struct VkDescriptorPoolSize {
+    VkDescriptorType    type;
+    uint32_t            descriptorCount;
+} VkDescriptorPoolSize;
+
+typedef struct VkDescriptorPoolCreateInfo {
+    VkStructureType                sType;
+    const void*                    pNext;
+    VkDescriptorPoolCreateFlags    flags;
+    uint32_t                       maxSets;
+    uint32_t                       poolSizeCount;
+    const VkDescriptorPoolSize*    pPoolSizes;
+} VkDescriptorPoolCreateInfo;
+
+typedef struct VkDescriptorSetAllocateInfo {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkDescriptorPool                descriptorPool;
+    uint32_t                        descriptorSetCount;
+    const VkDescriptorSetLayout*    pSetLayouts;
+} VkDescriptorSetAllocateInfo;
+
+typedef struct VkDescriptorImageInfo {
+    VkSampler        sampler;
+    VkImageView      imageView;
+    VkImageLayout    imageLayout;
+} VkDescriptorImageInfo;
+
+typedef struct VkDescriptorBufferInfo {
+    VkBuffer        buffer;
+    VkDeviceSize    offset;
+    VkDeviceSize    range;
+} VkDescriptorBufferInfo;
+
+typedef struct VkWriteDescriptorSet {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkDescriptorSet                  dstSet;
+    uint32_t                         dstBinding;
+    uint32_t                         dstArrayElement;
+    uint32_t                         descriptorCount;
+    VkDescriptorType                 descriptorType;
+    const VkDescriptorImageInfo*     pImageInfo;
+    const VkDescriptorBufferInfo*    pBufferInfo;
+    const VkBufferView*              pTexelBufferView;
+} VkWriteDescriptorSet;
+
+typedef struct VkCopyDescriptorSet {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDescriptorSet    srcSet;
+    uint32_t           srcBinding;
+    uint32_t           srcArrayElement;
+    VkDescriptorSet    dstSet;
+    uint32_t           dstBinding;
+    uint32_t           dstArrayElement;
+    uint32_t           descriptorCount;
+} VkCopyDescriptorSet;
+
+typedef struct VkFramebufferCreateInfo {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkFramebufferCreateFlags    flags;
+    VkRenderPass                renderPass;
+    uint32_t                    attachmentCount;
+    const VkImageView*          pAttachments;
+    uint32_t                    width;
+    uint32_t                    height;
+    uint32_t                    layers;
+} VkFramebufferCreateInfo;
+
+typedef struct VkAttachmentDescription {
+    VkAttachmentDescriptionFlags    flags;
+    VkFormat                        format;
+    VkSampleCountFlagBits           samples;
+    VkAttachmentLoadOp              loadOp;
+    VkAttachmentStoreOp             storeOp;
+    VkAttachmentLoadOp              stencilLoadOp;
+    VkAttachmentStoreOp             stencilStoreOp;
+    VkImageLayout                   initialLayout;
+    VkImageLayout                   finalLayout;
+} VkAttachmentDescription;
+
+typedef struct VkAttachmentReference {
+    uint32_t         attachment;
+    VkImageLayout    layout;
+} VkAttachmentReference;
+
+typedef struct VkSubpassDescription {
+    VkSubpassDescriptionFlags       flags;
+    VkPipelineBindPoint             pipelineBindPoint;
+    uint32_t                        inputAttachmentCount;
+    const VkAttachmentReference*    pInputAttachments;
+    uint32_t                        colorAttachmentCount;
+    const VkAttachmentReference*    pColorAttachments;
+    const VkAttachmentReference*    pResolveAttachments;
+    const VkAttachmentReference*    pDepthStencilAttachment;
+    uint32_t                        preserveAttachmentCount;
+    const uint32_t*                 pPreserveAttachments;
+} VkSubpassDescription;
+
+typedef struct VkSubpassDependency {
+    uint32_t                srcSubpass;
+    uint32_t                dstSubpass;
+    VkPipelineStageFlags    srcStageMask;
+    VkPipelineStageFlags    dstStageMask;
+    VkAccessFlags           srcAccessMask;
+    VkAccessFlags           dstAccessMask;
+    VkDependencyFlags       dependencyFlags;
+} VkSubpassDependency;
+
+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;
+
+typedef struct VkCommandPoolCreateInfo {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkCommandPoolCreateFlags    flags;
+    uint32_t                    queueFamilyIndex;
+} VkCommandPoolCreateInfo;
+
+typedef struct VkCommandBufferAllocateInfo {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkCommandPool           commandPool;
+    VkCommandBufferLevel    level;
+    uint32_t                commandBufferCount;
+} VkCommandBufferAllocateInfo;
+
+typedef struct VkCommandBufferInheritanceInfo {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkRenderPass                     renderPass;
+    uint32_t                         subpass;
+    VkFramebuffer                    framebuffer;
+    VkBool32                         occlusionQueryEnable;
+    VkQueryControlFlags              queryFlags;
+    VkQueryPipelineStatisticFlags    pipelineStatistics;
+} VkCommandBufferInheritanceInfo;
+
+typedef struct VkCommandBufferBeginInfo {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkCommandBufferUsageFlags                flags;
+    const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
+} VkCommandBufferBeginInfo;
+
+typedef struct VkBufferCopy {
+    VkDeviceSize    srcOffset;
+    VkDeviceSize    dstOffset;
+    VkDeviceSize    size;
+} VkBufferCopy;
+
+typedef struct VkImageSubresourceLayers {
+    VkImageAspectFlags    aspectMask;
+    uint32_t              mipLevel;
+    uint32_t              baseArrayLayer;
+    uint32_t              layerCount;
+} VkImageSubresourceLayers;
+
+typedef struct VkImageCopy {
+    VkImageSubresourceLayers    srcSubresource;
+    VkOffset3D                  srcOffset;
+    VkImageSubresourceLayers    dstSubresource;
+    VkOffset3D                  dstOffset;
+    VkExtent3D                  extent;
+} VkImageCopy;
+
+typedef struct VkImageBlit {
+    VkImageSubresourceLayers    srcSubresource;
+    VkOffset3D                  srcOffsets[2];
+    VkImageSubresourceLayers    dstSubresource;
+    VkOffset3D                  dstOffsets[2];
+} VkImageBlit;
+
+typedef struct VkBufferImageCopy {
+    VkDeviceSize                bufferOffset;
+    uint32_t                    bufferRowLength;
+    uint32_t                    bufferImageHeight;
+    VkImageSubresourceLayers    imageSubresource;
+    VkOffset3D                  imageOffset;
+    VkExtent3D                  imageExtent;
+} VkBufferImageCopy;
+
+typedef union VkClearColorValue {
+    float       float32[4];
+    int32_t     int32[4];
+    uint32_t    uint32[4];
+} VkClearColorValue;
+
+typedef struct VkClearDepthStencilValue {
+    float       depth;
+    uint32_t    stencil;
+} VkClearDepthStencilValue;
+
+typedef union VkClearValue {
+    VkClearColorValue           color;
+    VkClearDepthStencilValue    depthStencil;
+} VkClearValue;
+
+typedef struct VkClearAttachment {
+    VkImageAspectFlags    aspectMask;
+    uint32_t              colorAttachment;
+    VkClearValue          clearValue;
+} VkClearAttachment;
+
+typedef struct VkClearRect {
+    VkRect2D    rect;
+    uint32_t    baseArrayLayer;
+    uint32_t    layerCount;
+} VkClearRect;
+
+typedef struct VkImageResolve {
+    VkImageSubresourceLayers    srcSubresource;
+    VkOffset3D                  srcOffset;
+    VkImageSubresourceLayers    dstSubresource;
+    VkOffset3D                  dstOffset;
+    VkExtent3D                  extent;
+} VkImageResolve;
+
+typedef struct VkMemoryBarrier {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkAccessFlags      srcAccessMask;
+    VkAccessFlags      dstAccessMask;
+} VkMemoryBarrier;
+
+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;
+
+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;
+
+typedef struct VkRenderPassBeginInfo {
+    VkStructureType        sType;
+    const void*            pNext;
+    VkRenderPass           renderPass;
+    VkFramebuffer          framebuffer;
+    VkRect2D               renderArea;
+    uint32_t               clearValueCount;
+    const VkClearValue*    pClearValues;
+} VkRenderPassBeginInfo;
+
+typedef struct VkDispatchIndirectCommand {
+    uint32_t    x;
+    uint32_t    y;
+    uint32_t    z;
+} VkDispatchIndirectCommand;
+
+typedef struct VkDrawIndexedIndirectCommand {
+    uint32_t    indexCount;
+    uint32_t    instanceCount;
+    uint32_t    firstIndex;
+    int32_t     vertexOffset;
+    uint32_t    firstInstance;
+} VkDrawIndexedIndirectCommand;
+
+typedef struct VkDrawIndirectCommand {
+    uint32_t    vertexCount;
+    uint32_t    instanceCount;
+    uint32_t    firstVertex;
+    uint32_t    firstInstance;
+} VkDrawIndirectCommand;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
+typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
+typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
+typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
+typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
+typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
+typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
+typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
+typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
+typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
+typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
+typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
+typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
+typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
+typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
+typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
+typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
+typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
+typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
+typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
+typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
+typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
+typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
+typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
+typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
+typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
+typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
+typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
+typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
+typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
+typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
+typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
+typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
+typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
+typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
+typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
+typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
+typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
+typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
+typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
+typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
+typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
+typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
+typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
+typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
+typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
+typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
+typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
+typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
+typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
+typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
+typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
+typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
+typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
+typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
+typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
+typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
+typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
+typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
+typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
+typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
+typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
+typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
+typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
+typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
+typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
+typedef void (VKAPI_PTR *PFN_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);
+typedef void (VKAPI_PTR *PFN_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);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
+typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
+typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
+typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
+typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
+typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
+    const VkInstanceCreateInfo*                 pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkInstance*                                 pInstance);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
+    VkInstance                                  instance,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
+    VkInstance                                  instance,
+    uint32_t*                                   pPhysicalDeviceCount,
+    VkPhysicalDevice*                           pPhysicalDevices);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceFeatures*                   pFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkFormatProperties*                         pFormatProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkImageType                                 type,
+    VkImageTiling                               tiling,
+    VkImageUsageFlags                           usage,
+    VkImageCreateFlags                          flags,
+    VkImageFormatProperties*                    pImageFormatProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceProperties*                 pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties*                    pQueueFamilyProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
+
+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
+    VkInstance                                  instance,
+    const char*                                 pName);
+
+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
+    VkDevice                                    device,
+    const char*                                 pName);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
+    VkPhysicalDevice                            physicalDevice,
+    const VkDeviceCreateInfo*                   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDevice*                                   pDevice);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
+    VkDevice                                    device,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
+    const char*                                 pLayerName,
+    uint32_t*                                   pPropertyCount,
+    VkExtensionProperties*                      pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
+    VkPhysicalDevice                            physicalDevice,
+    const char*                                 pLayerName,
+    uint32_t*                                   pPropertyCount,
+    VkExtensionProperties*                      pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
+    uint32_t*                                   pPropertyCount,
+    VkLayerProperties*                          pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pPropertyCount,
+    VkLayerProperties*                          pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
+    VkDevice                                    device,
+    uint32_t                                    queueFamilyIndex,
+    uint32_t                                    queueIndex,
+    VkQueue*                                    pQueue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
+    VkQueue                                     queue,
+    uint32_t                                    submitCount,
+    const VkSubmitInfo*                         pSubmits,
+    VkFence                                     fence);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
+    VkQueue                                     queue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
+    VkDevice                                    device);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
+    VkDevice                                    device,
+    const VkMemoryAllocateInfo*                 pAllocateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDeviceMemory*                             pMemory);
+
+VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
+    VkDevice                                    device,
+    VkDeviceMemory                              memory,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
+    VkDevice                                    device,
+    VkDeviceMemory                              memory,
+    VkDeviceSize                                offset,
+    VkDeviceSize                                size,
+    VkMemoryMapFlags                            flags,
+    void**                                      ppData);
+
+VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
+    VkDevice                                    device,
+    VkDeviceMemory                              memory);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
+    VkDevice                                    device,
+    uint32_t                                    memoryRangeCount,
+    const VkMappedMemoryRange*                  pMemoryRanges);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
+    VkDevice                                    device,
+    uint32_t                                    memoryRangeCount,
+    const VkMappedMemoryRange*                  pMemoryRanges);
+
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
+    VkDevice                                    device,
+    VkDeviceMemory                              memory,
+    VkDeviceSize*                               pCommittedMemoryInBytes);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
+    VkDevice                                    device,
+    VkBuffer                                    buffer,
+    VkDeviceMemory                              memory,
+    VkDeviceSize                                memoryOffset);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
+    VkDevice                                    device,
+    VkImage                                     image,
+    VkDeviceMemory                              memory,
+    VkDeviceSize                                memoryOffset);
+
+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
+    VkDevice                                    device,
+    VkBuffer                                    buffer,
+    VkMemoryRequirements*                       pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
+    VkDevice                                    device,
+    VkImage                                     image,
+    VkMemoryRequirements*                       pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
+    VkDevice                                    device,
+    VkImage                                     image,
+    uint32_t*                                   pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkImageType                                 type,
+    VkSampleCountFlagBits                       samples,
+    VkImageUsageFlags                           usage,
+    VkImageTiling                               tiling,
+    uint32_t*                                   pPropertyCount,
+    VkSparseImageFormatProperties*              pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
+    VkQueue                                     queue,
+    uint32_t                                    bindInfoCount,
+    const VkBindSparseInfo*                     pBindInfo,
+    VkFence                                     fence);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
+    VkDevice                                    device,
+    const VkFenceCreateInfo*                    pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkFence*                                    pFence);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
+    VkDevice                                    device,
+    VkFence                                     fence,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
+    VkDevice                                    device,
+    uint32_t                                    fenceCount,
+    const VkFence*                              pFences);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
+    VkDevice                                    device,
+    VkFence                                     fence);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
+    VkDevice                                    device,
+    uint32_t                                    fenceCount,
+    const VkFence*                              pFences,
+    VkBool32                                    waitAll,
+    uint64_t                                    timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
+    VkDevice                                    device,
+    const VkSemaphoreCreateInfo*                pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSemaphore*                                pSemaphore);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
+    VkDevice                                    device,
+    VkSemaphore                                 semaphore,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
+    VkDevice                                    device,
+    const VkEventCreateInfo*                    pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkEvent*                                    pEvent);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
+    VkDevice                                    device,
+    VkEvent                                     event,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
+    VkDevice                                    device,
+    VkEvent                                     event);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
+    VkDevice                                    device,
+    VkEvent                                     event);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
+    VkDevice                                    device,
+    VkEvent                                     event);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
+    VkDevice                                    device,
+    const VkQueryPoolCreateInfo*                pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkQueryPool*                                pQueryPool);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    firstQuery,
+    uint32_t                                    queryCount,
+    size_t                                      dataSize,
+    void*                                       pData,
+    VkDeviceSize                                stride,
+    VkQueryResultFlags                          flags);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
+    VkDevice                                    device,
+    const VkBufferCreateInfo*                   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkBuffer*                                   pBuffer);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
+    VkDevice                                    device,
+    VkBuffer                                    buffer,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
+    VkDevice                                    device,
+    const VkBufferViewCreateInfo*               pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkBufferView*                               pView);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
+    VkDevice                                    device,
+    VkBufferView                                bufferView,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
+    VkDevice                                    device,
+    const VkImageCreateInfo*                    pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkImage*                                    pImage);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
+    VkDevice                                    device,
+    VkImage                                     image,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
+    VkDevice                                    device,
+    VkImage                                     image,
+    const VkImageSubresource*                   pSubresource,
+    VkSubresourceLayout*                        pLayout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
+    VkDevice                                    device,
+    const VkImageViewCreateInfo*                pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkImageView*                                pView);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
+    VkDevice                                    device,
+    VkImageView                                 imageView,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
+    VkDevice                                    device,
+    const VkShaderModuleCreateInfo*             pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkShaderModule*                             pShaderModule);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
+    VkDevice                                    device,
+    VkShaderModule                              shaderModule,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
+    VkDevice                                    device,
+    const VkPipelineCacheCreateInfo*            pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipelineCache*                            pPipelineCache);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    size_t*                                     pDataSize,
+    void*                                       pData);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
+    VkDevice                                    device,
+    VkPipelineCache                             dstCache,
+    uint32_t                                    srcCacheCount,
+    const VkPipelineCache*                      pSrcCaches);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    uint32_t                                    createInfoCount,
+    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipeline*                                 pPipelines);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    uint32_t                                    createInfoCount,
+    const VkComputePipelineCreateInfo*          pCreateInfos,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipeline*                                 pPipelines);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
+    VkDevice                                    device,
+    const VkPipelineLayoutCreateInfo*           pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipelineLayout*                           pPipelineLayout);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
+    VkDevice                                    device,
+    VkPipelineLayout                            pipelineLayout,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
+    VkDevice                                    device,
+    const VkSamplerCreateInfo*                  pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSampler*                                  pSampler);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
+    VkDevice                                    device,
+    VkSampler                                   sampler,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
+    VkDevice                                    device,
+    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDescriptorSetLayout*                      pSetLayout);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
+    VkDevice                                    device,
+    VkDescriptorSetLayout                       descriptorSetLayout,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
+    VkDevice                                    device,
+    const VkDescriptorPoolCreateInfo*           pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDescriptorPool*                           pDescriptorPool);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
+    VkDevice                                    device,
+    VkDescriptorPool                            descriptorPool,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
+    VkDevice                                    device,
+    VkDescriptorPool                            descriptorPool,
+    VkDescriptorPoolResetFlags                  flags);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
+    VkDevice                                    device,
+    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
+    VkDescriptorSet*                            pDescriptorSets);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
+    VkDevice                                    device,
+    VkDescriptorPool                            descriptorPool,
+    uint32_t                                    descriptorSetCount,
+    const VkDescriptorSet*                      pDescriptorSets);
+
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
+    VkDevice                                    device,
+    uint32_t                                    descriptorWriteCount,
+    const VkWriteDescriptorSet*                 pDescriptorWrites,
+    uint32_t                                    descriptorCopyCount,
+    const VkCopyDescriptorSet*                  pDescriptorCopies);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
+    VkDevice                                    device,
+    const VkFramebufferCreateInfo*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkFramebuffer*                              pFramebuffer);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
+    VkDevice                                    device,
+    VkFramebuffer                               framebuffer,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
+    VkDevice                                    device,
+    const VkRenderPassCreateInfo*               pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkRenderPass*                               pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
+    VkDevice                                    device,
+    VkRenderPass                                renderPass,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
+    VkDevice                                    device,
+    VkRenderPass                                renderPass,
+    VkExtent2D*                                 pGranularity);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
+    VkDevice                                    device,
+    const VkCommandPoolCreateInfo*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkCommandPool*                              pCommandPool);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    VkCommandPoolResetFlags                     flags);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
+    VkDevice                                    device,
+    const VkCommandBufferAllocateInfo*          pAllocateInfo,
+    VkCommandBuffer*                            pCommandBuffers);
+
+VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    uint32_t                                    commandBufferCount,
+    const VkCommandBuffer*                      pCommandBuffers);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
+    VkCommandBuffer                             commandBuffer,
+    const VkCommandBufferBeginInfo*             pBeginInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
+    VkCommandBuffer                             commandBuffer);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
+    VkCommandBuffer                             commandBuffer,
+    VkCommandBufferResetFlags                   flags);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineBindPoint                         pipelineBindPoint,
+    VkPipeline                                  pipeline);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    firstViewport,
+    uint32_t                                    viewportCount,
+    const VkViewport*                           pViewports);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    firstScissor,
+    uint32_t                                    scissorCount,
+    const VkRect2D*                             pScissors);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
+    VkCommandBuffer                             commandBuffer,
+    float                                       lineWidth);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
+    VkCommandBuffer                             commandBuffer,
+    float                                       depthBiasConstantFactor,
+    float                                       depthBiasClamp,
+    float                                       depthBiasSlopeFactor);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
+    VkCommandBuffer                             commandBuffer,
+    const float                                 blendConstants[4]);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
+    VkCommandBuffer                             commandBuffer,
+    float                                       minDepthBounds,
+    float                                       maxDepthBounds);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
+    VkCommandBuffer                             commandBuffer,
+    VkStencilFaceFlags                          faceMask,
+    uint32_t                                    compareMask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
+    VkCommandBuffer                             commandBuffer,
+    VkStencilFaceFlags                          faceMask,
+    uint32_t                                    writeMask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
+    VkCommandBuffer                             commandBuffer,
+    VkStencilFaceFlags                          faceMask,
+    uint32_t                                    reference);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineBindPoint                         pipelineBindPoint,
+    VkPipelineLayout                            layout,
+    uint32_t                                    firstSet,
+    uint32_t                                    descriptorSetCount,
+    const VkDescriptorSet*                      pDescriptorSets,
+    uint32_t                                    dynamicOffsetCount,
+    const uint32_t*                             pDynamicOffsets);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkIndexType                                 indexType);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    firstBinding,
+    uint32_t                                    bindingCount,
+    const VkBuffer*                             pBuffers,
+    const VkDeviceSize*                         pOffsets);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    vertexCount,
+    uint32_t                                    instanceCount,
+    uint32_t                                    firstVertex,
+    uint32_t                                    firstInstance);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    indexCount,
+    uint32_t                                    instanceCount,
+    uint32_t                                    firstIndex,
+    int32_t                                     vertexOffset,
+    uint32_t                                    firstInstance);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    uint32_t                                    drawCount,
+    uint32_t                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    uint32_t                                    drawCount,
+    uint32_t                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    groupCountX,
+    uint32_t                                    groupCountY,
+    uint32_t                                    groupCountZ);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    srcBuffer,
+    VkBuffer                                    dstBuffer,
+    uint32_t                                    regionCount,
+    const VkBufferCopy*                         pRegions);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
+    VkCommandBuffer                             commandBuffer,
+    VkImage                                     srcImage,
+    VkImageLayout                               srcImageLayout,
+    VkImage                                     dstImage,
+    VkImageLayout                               dstImageLayout,
+    uint32_t                                    regionCount,
+    const VkImageCopy*                          pRegions);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
+    VkCommandBuffer                             commandBuffer,
+    VkImage                                     srcImage,
+    VkImageLayout                               srcImageLayout,
+    VkImage                                     dstImage,
+    VkImageLayout                               dstImageLayout,
+    uint32_t                                    regionCount,
+    const VkImageBlit*                          pRegions,
+    VkFilter                                    filter);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    srcBuffer,
+    VkImage                                     dstImage,
+    VkImageLayout                               dstImageLayout,
+    uint32_t                                    regionCount,
+    const VkBufferImageCopy*                    pRegions);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
+    VkCommandBuffer                             commandBuffer,
+    VkImage                                     srcImage,
+    VkImageLayout                               srcImageLayout,
+    VkBuffer                                    dstBuffer,
+    uint32_t                                    regionCount,
+    const VkBufferImageCopy*                    pRegions);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    dstBuffer,
+    VkDeviceSize                                dstOffset,
+    VkDeviceSize                                dataSize,
+    const void*                                 pData);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    dstBuffer,
+    VkDeviceSize                                dstOffset,
+    VkDeviceSize                                size,
+    uint32_t                                    data);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
+    VkCommandBuffer                             commandBuffer,
+    VkImage                                     image,
+    VkImageLayout                               imageLayout,
+    const VkClearColorValue*                    pColor,
+    uint32_t                                    rangeCount,
+    const VkImageSubresourceRange*              pRanges);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
+    VkCommandBuffer                             commandBuffer,
+    VkImage                                     image,
+    VkImageLayout                               imageLayout,
+    const VkClearDepthStencilValue*             pDepthStencil,
+    uint32_t                                    rangeCount,
+    const VkImageSubresourceRange*              pRanges);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    attachmentCount,
+    const VkClearAttachment*                    pAttachments,
+    uint32_t                                    rectCount,
+    const VkClearRect*                          pRects);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
+    VkCommandBuffer                             commandBuffer,
+    VkImage                                     srcImage,
+    VkImageLayout                               srcImageLayout,
+    VkImage                                     dstImage,
+    VkImageLayout                               dstImageLayout,
+    uint32_t                                    regionCount,
+    const VkImageResolve*                       pRegions);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
+    VkCommandBuffer                             commandBuffer,
+    VkEvent                                     event,
+    VkPipelineStageFlags                        stageMask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
+    VkCommandBuffer                             commandBuffer,
+    VkEvent                                     event,
+    VkPipelineStageFlags                        stageMask);
+
+VKAPI_ATTR void VKAPI_CALL 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);
+
+VKAPI_ATTR void VKAPI_CALL 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);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
+    VkCommandBuffer                             commandBuffer,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    query,
+    VkQueryControlFlags                         flags);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
+    VkCommandBuffer                             commandBuffer,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    query);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
+    VkCommandBuffer                             commandBuffer,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    firstQuery,
+    uint32_t                                    queryCount);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineStageFlagBits                     pipelineStage,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    query);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
+    VkCommandBuffer                             commandBuffer,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    firstQuery,
+    uint32_t                                    queryCount,
+    VkBuffer                                    dstBuffer,
+    VkDeviceSize                                dstOffset,
+    VkDeviceSize                                stride,
+    VkQueryResultFlags                          flags);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineLayout                            layout,
+    VkShaderStageFlags                          stageFlags,
+    uint32_t                                    offset,
+    uint32_t                                    size,
+    const void*                                 pValues);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
+    VkCommandBuffer                             commandBuffer,
+    const VkRenderPassBeginInfo*                pRenderPassBegin,
+    VkSubpassContents                           contents);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
+    VkCommandBuffer                             commandBuffer,
+    VkSubpassContents                           contents);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
+    VkCommandBuffer                             commandBuffer);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    commandBufferCount,
+    const VkCommandBuffer*                      pCommandBuffers);
+#endif
+
+#define VK_VERSION_1_1 1
+// Vulkan 1.1 version number
+#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
+
+
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)
+
+#define VK_MAX_DEVICE_GROUP_SIZE          32
+#define VK_LUID_SIZE                      8
+#define VK_QUEUE_FAMILY_EXTERNAL          (~0U-1)
+
+
+typedef enum VkPointClippingBehavior {
+    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
+    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
+    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
+    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
+    VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
+    VK_POINT_CLIPPING_BEHAVIOR_END_RANGE = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
+    VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES + 1),
+    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
+} VkPointClippingBehavior;
+
+typedef enum VkTessellationDomainOrigin {
+    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
+    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
+    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
+    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
+    VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
+    VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
+    VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = (VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT + 1),
+    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
+} VkTessellationDomainOrigin;
+
+typedef enum VkSamplerYcbcrModelConversion {
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = (VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY + 1),
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerYcbcrModelConversion;
+
+typedef enum VkSamplerYcbcrRange {
+    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
+    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
+    VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
+    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
+    VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
+    VK_SAMPLER_YCBCR_RANGE_END_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
+    VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE = (VK_SAMPLER_YCBCR_RANGE_ITU_NARROW - VK_SAMPLER_YCBCR_RANGE_ITU_FULL + 1),
+    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerYcbcrRange;
+
+typedef enum VkChromaLocation {
+    VK_CHROMA_LOCATION_COSITED_EVEN = 0,
+    VK_CHROMA_LOCATION_MIDPOINT = 1,
+    VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,
+    VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,
+    VK_CHROMA_LOCATION_BEGIN_RANGE = VK_CHROMA_LOCATION_COSITED_EVEN,
+    VK_CHROMA_LOCATION_END_RANGE = VK_CHROMA_LOCATION_MIDPOINT,
+    VK_CHROMA_LOCATION_RANGE_SIZE = (VK_CHROMA_LOCATION_MIDPOINT - VK_CHROMA_LOCATION_COSITED_EVEN + 1),
+    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
+} VkChromaLocation;
+
+typedef enum VkDescriptorUpdateTemplateType {
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET + 1),
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorUpdateTemplateType;
+
+
+typedef enum VkSubgroupFeatureFlagBits {
+    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
+    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
+    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
+    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
+    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
+    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
+    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
+    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
+    VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSubgroupFeatureFlagBits;
+typedef VkFlags VkSubgroupFeatureFlags;
+
+typedef enum VkPeerMemoryFeatureFlagBits {
+    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
+    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
+    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
+    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
+    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
+    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
+    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
+    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
+    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkPeerMemoryFeatureFlagBits;
+typedef VkFlags VkPeerMemoryFeatureFlags;
+
+typedef enum VkMemoryAllocateFlagBits {
+    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkMemoryAllocateFlagBits;
+typedef VkFlags VkMemoryAllocateFlags;
+typedef VkFlags VkCommandPoolTrimFlags;
+typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
+
+typedef enum VkExternalMemoryHandleTypeFlagBits {
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkExternalMemoryHandleTypeFlagBits;
+typedef VkFlags VkExternalMemoryHandleTypeFlags;
+
+typedef enum VkExternalMemoryFeatureFlagBits {
+    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
+    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
+    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
+    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
+    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
+    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
+    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkExternalMemoryFeatureFlagBits;
+typedef VkFlags VkExternalMemoryFeatureFlags;
+
+typedef enum VkExternalFenceHandleTypeFlagBits {
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkExternalFenceHandleTypeFlagBits;
+typedef VkFlags VkExternalFenceHandleTypeFlags;
+
+typedef enum VkExternalFenceFeatureFlagBits {
+    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
+    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
+    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
+    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
+    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkExternalFenceFeatureFlagBits;
+typedef VkFlags VkExternalFenceFeatureFlags;
+
+typedef enum VkFenceImportFlagBits {
+    VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
+    VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,
+    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkFenceImportFlagBits;
+typedef VkFlags VkFenceImportFlags;
+
+typedef enum VkSemaphoreImportFlagBits {
+    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
+    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
+    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreImportFlagBits;
+typedef VkFlags VkSemaphoreImportFlags;
+
+typedef enum VkExternalSemaphoreHandleTypeFlagBits {
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkExternalSemaphoreHandleTypeFlagBits;
+typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
+
+typedef enum VkExternalSemaphoreFeatureFlagBits {
+    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
+    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
+    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
+    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
+    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkExternalSemaphoreFeatureFlagBits;
+typedef VkFlags VkExternalSemaphoreFeatureFlags;
+
+typedef struct VkPhysicalDeviceSubgroupProperties {
+    VkStructureType           sType;
+    void*                     pNext;
+    uint32_t                  subgroupSize;
+    VkShaderStageFlags        supportedStages;
+    VkSubgroupFeatureFlags    supportedOperations;
+    VkBool32                  quadOperationsInAllStages;
+} VkPhysicalDeviceSubgroupProperties;
+
+typedef struct VkBindBufferMemoryInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           buffer;
+    VkDeviceMemory     memory;
+    VkDeviceSize       memoryOffset;
+} VkBindBufferMemoryInfo;
+
+typedef struct VkBindImageMemoryInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+    VkDeviceMemory     memory;
+    VkDeviceSize       memoryOffset;
+} VkBindImageMemoryInfo;
+
+typedef struct VkPhysicalDevice16BitStorageFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer16BitAccess;
+    VkBool32           uniformAndStorageBuffer16BitAccess;
+    VkBool32           storagePushConstant16;
+    VkBool32           storageInputOutput16;
+} VkPhysicalDevice16BitStorageFeatures;
+
+typedef struct VkMemoryDedicatedRequirements {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           prefersDedicatedAllocation;
+    VkBool32           requiresDedicatedAllocation;
+} VkMemoryDedicatedRequirements;
+
+typedef struct VkMemoryDedicatedAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+    VkBuffer           buffer;
+} VkMemoryDedicatedAllocateInfo;
+
+typedef struct VkMemoryAllocateFlagsInfo {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkMemoryAllocateFlags    flags;
+    uint32_t                 deviceMask;
+} VkMemoryAllocateFlagsInfo;
+
+typedef struct VkDeviceGroupRenderPassBeginInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           deviceMask;
+    uint32_t           deviceRenderAreaCount;
+    const VkRect2D*    pDeviceRenderAreas;
+} VkDeviceGroupRenderPassBeginInfo;
+
+typedef struct VkDeviceGroupCommandBufferBeginInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           deviceMask;
+} VkDeviceGroupCommandBufferBeginInfo;
+
+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;
+
+typedef struct VkDeviceGroupBindSparseInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           resourceDeviceIndex;
+    uint32_t           memoryDeviceIndex;
+} VkDeviceGroupBindSparseInfo;
+
+typedef struct VkBindBufferMemoryDeviceGroupInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           deviceIndexCount;
+    const uint32_t*    pDeviceIndices;
+} VkBindBufferMemoryDeviceGroupInfo;
+
+typedef struct VkBindImageMemoryDeviceGroupInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           deviceIndexCount;
+    const uint32_t*    pDeviceIndices;
+    uint32_t           splitInstanceBindRegionCount;
+    const VkRect2D*    pSplitInstanceBindRegions;
+} VkBindImageMemoryDeviceGroupInfo;
+
+typedef struct VkPhysicalDeviceGroupProperties {
+    VkStructureType     sType;
+    void*               pNext;
+    uint32_t            physicalDeviceCount;
+    VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
+    VkBool32            subsetAllocation;
+} VkPhysicalDeviceGroupProperties;
+
+typedef struct VkDeviceGroupDeviceCreateInfo {
+    VkStructureType            sType;
+    const void*                pNext;
+    uint32_t                   physicalDeviceCount;
+    const VkPhysicalDevice*    pPhysicalDevices;
+} VkDeviceGroupDeviceCreateInfo;
+
+typedef struct VkBufferMemoryRequirementsInfo2 {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           buffer;
+} VkBufferMemoryRequirementsInfo2;
+
+typedef struct VkImageMemoryRequirementsInfo2 {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+} VkImageMemoryRequirementsInfo2;
+
+typedef struct VkImageSparseMemoryRequirementsInfo2 {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+} VkImageSparseMemoryRequirementsInfo2;
+
+typedef struct VkMemoryRequirements2 {
+    VkStructureType         sType;
+    void*                   pNext;
+    VkMemoryRequirements    memoryRequirements;
+} VkMemoryRequirements2;
+
+typedef struct VkSparseImageMemoryRequirements2 {
+    VkStructureType                    sType;
+    void*                              pNext;
+    VkSparseImageMemoryRequirements    memoryRequirements;
+} VkSparseImageMemoryRequirements2;
+
+typedef struct VkPhysicalDeviceFeatures2 {
+    VkStructureType             sType;
+    void*                       pNext;
+    VkPhysicalDeviceFeatures    features;
+} VkPhysicalDeviceFeatures2;
+
+typedef struct VkPhysicalDeviceProperties2 {
+    VkStructureType               sType;
+    void*                         pNext;
+    VkPhysicalDeviceProperties    properties;
+} VkPhysicalDeviceProperties2;
+
+typedef struct VkFormatProperties2 {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkFormatProperties    formatProperties;
+} VkFormatProperties2;
+
+typedef struct VkImageFormatProperties2 {
+    VkStructureType            sType;
+    void*                      pNext;
+    VkImageFormatProperties    imageFormatProperties;
+} VkImageFormatProperties2;
+
+typedef struct VkPhysicalDeviceImageFormatInfo2 {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkFormat              format;
+    VkImageType           type;
+    VkImageTiling         tiling;
+    VkImageUsageFlags     usage;
+    VkImageCreateFlags    flags;
+} VkPhysicalDeviceImageFormatInfo2;
+
+typedef struct VkQueueFamilyProperties2 {
+    VkStructureType            sType;
+    void*                      pNext;
+    VkQueueFamilyProperties    queueFamilyProperties;
+} VkQueueFamilyProperties2;
+
+typedef struct VkPhysicalDeviceMemoryProperties2 {
+    VkStructureType                     sType;
+    void*                               pNext;
+    VkPhysicalDeviceMemoryProperties    memoryProperties;
+} VkPhysicalDeviceMemoryProperties2;
+
+typedef struct VkSparseImageFormatProperties2 {
+    VkStructureType                  sType;
+    void*                            pNext;
+    VkSparseImageFormatProperties    properties;
+} VkSparseImageFormatProperties2;
+
+typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkFormat                 format;
+    VkImageType              type;
+    VkSampleCountFlagBits    samples;
+    VkImageUsageFlags        usage;
+    VkImageTiling            tiling;
+} VkPhysicalDeviceSparseImageFormatInfo2;
+
+typedef struct VkPhysicalDevicePointClippingProperties {
+    VkStructureType            sType;
+    void*                      pNext;
+    VkPointClippingBehavior    pointClippingBehavior;
+} VkPhysicalDevicePointClippingProperties;
+
+typedef struct VkInputAttachmentAspectReference {
+    uint32_t              subpass;
+    uint32_t              inputAttachmentIndex;
+    VkImageAspectFlags    aspectMask;
+} VkInputAttachmentAspectReference;
+
+typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    uint32_t                                   aspectReferenceCount;
+    const VkInputAttachmentAspectReference*    pAspectReferences;
+} VkRenderPassInputAttachmentAspectCreateInfo;
+
+typedef struct VkImageViewUsageCreateInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkImageUsageFlags    usage;
+} VkImageViewUsageCreateInfo;
+
+typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkTessellationDomainOrigin    domainOrigin;
+} VkPipelineTessellationDomainOriginStateCreateInfo;
+
+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;
+
+typedef struct VkPhysicalDeviceMultiviewFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           multiview;
+    VkBool32           multiviewGeometryShader;
+    VkBool32           multiviewTessellationShader;
+} VkPhysicalDeviceMultiviewFeatures;
+
+typedef struct VkPhysicalDeviceMultiviewProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxMultiviewViewCount;
+    uint32_t           maxMultiviewInstanceIndex;
+} VkPhysicalDeviceMultiviewProperties;
+
+typedef struct VkPhysicalDeviceVariablePointerFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           variablePointersStorageBuffer;
+    VkBool32           variablePointers;
+} VkPhysicalDeviceVariablePointerFeatures;
+
+typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           protectedMemory;
+} VkPhysicalDeviceProtectedMemoryFeatures;
+
+typedef struct VkPhysicalDeviceProtectedMemoryProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           protectedNoFault;
+} VkPhysicalDeviceProtectedMemoryProperties;
+
+typedef struct VkDeviceQueueInfo2 {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkDeviceQueueCreateFlags    flags;
+    uint32_t                    queueFamilyIndex;
+    uint32_t                    queueIndex;
+} VkDeviceQueueInfo2;
+
+typedef struct VkProtectedSubmitInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           protectedSubmit;
+} VkProtectedSubmitInfo;
+
+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;
+
+typedef struct VkSamplerYcbcrConversionInfo {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkSamplerYcbcrConversion    conversion;
+} VkSamplerYcbcrConversionInfo;
+
+typedef struct VkBindImagePlaneMemoryInfo {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkImageAspectFlagBits    planeAspect;
+} VkBindImagePlaneMemoryInfo;
+
+typedef struct VkImagePlaneMemoryRequirementsInfo {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkImageAspectFlagBits    planeAspect;
+} VkImagePlaneMemoryRequirementsInfo;
+
+typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           samplerYcbcrConversion;
+} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
+
+typedef struct VkSamplerYcbcrConversionImageFormatProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           combinedImageSamplerDescriptorCount;
+} VkSamplerYcbcrConversionImageFormatProperties;
+
+typedef struct VkDescriptorUpdateTemplateEntry {
+    uint32_t            dstBinding;
+    uint32_t            dstArrayElement;
+    uint32_t            descriptorCount;
+    VkDescriptorType    descriptorType;
+    size_t              offset;
+    size_t              stride;
+} VkDescriptorUpdateTemplateEntry;
+
+typedef struct VkDescriptorUpdateTemplateCreateInfo {
+    VkStructureType                           sType;
+    void*                                     pNext;
+    VkDescriptorUpdateTemplateCreateFlags     flags;
+    uint32_t                                  descriptorUpdateEntryCount;
+    const VkDescriptorUpdateTemplateEntry*    pDescriptorUpdateEntries;
+    VkDescriptorUpdateTemplateType            templateType;
+    VkDescriptorSetLayout                     descriptorSetLayout;
+    VkPipelineBindPoint                       pipelineBindPoint;
+    VkPipelineLayout                          pipelineLayout;
+    uint32_t                                  set;
+} VkDescriptorUpdateTemplateCreateInfo;
+
+typedef struct VkExternalMemoryProperties {
+    VkExternalMemoryFeatureFlags       externalMemoryFeatures;
+    VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
+    VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
+} VkExternalMemoryProperties;
+
+typedef struct VkPhysicalDeviceExternalImageFormatInfo {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+} VkPhysicalDeviceExternalImageFormatInfo;
+
+typedef struct VkExternalImageFormatProperties {
+    VkStructureType               sType;
+    void*                         pNext;
+    VkExternalMemoryProperties    externalMemoryProperties;
+} VkExternalImageFormatProperties;
+
+typedef struct VkPhysicalDeviceExternalBufferInfo {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkBufferCreateFlags                   flags;
+    VkBufferUsageFlags                    usage;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+} VkPhysicalDeviceExternalBufferInfo;
+
+typedef struct VkExternalBufferProperties {
+    VkStructureType               sType;
+    void*                         pNext;
+    VkExternalMemoryProperties    externalMemoryProperties;
+} VkExternalBufferProperties;
+
+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;
+
+typedef struct VkExternalMemoryImageCreateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkExternalMemoryHandleTypeFlags    handleTypes;
+} VkExternalMemoryImageCreateInfo;
+
+typedef struct VkExternalMemoryBufferCreateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkExternalMemoryHandleTypeFlags    handleTypes;
+} VkExternalMemoryBufferCreateInfo;
+
+typedef struct VkExportMemoryAllocateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkExternalMemoryHandleTypeFlags    handleTypes;
+} VkExportMemoryAllocateInfo;
+
+typedef struct VkPhysicalDeviceExternalFenceInfo {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkExternalFenceHandleTypeFlagBits    handleType;
+} VkPhysicalDeviceExternalFenceInfo;
+
+typedef struct VkExternalFenceProperties {
+    VkStructureType                   sType;
+    void*                             pNext;
+    VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
+    VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
+    VkExternalFenceFeatureFlags       externalFenceFeatures;
+} VkExternalFenceProperties;
+
+typedef struct VkExportFenceCreateInfo {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkExternalFenceHandleTypeFlags    handleTypes;
+} VkExportFenceCreateInfo;
+
+typedef struct VkExportSemaphoreCreateInfo {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkExternalSemaphoreHandleTypeFlags    handleTypes;
+} VkExportSemaphoreCreateInfo;
+
+typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkExternalSemaphoreHandleTypeFlagBits    handleType;
+} VkPhysicalDeviceExternalSemaphoreInfo;
+
+typedef struct VkExternalSemaphoreProperties {
+    VkStructureType                       sType;
+    void*                                 pNext;
+    VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
+    VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
+    VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
+} VkExternalSemaphoreProperties;
+
+typedef struct VkPhysicalDeviceMaintenance3Properties {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxPerSetDescriptors;
+    VkDeviceSize       maxMemoryAllocationSize;
+} VkPhysicalDeviceMaintenance3Properties;
+
+typedef struct VkDescriptorSetLayoutSupport {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           supported;
+} VkDescriptorSetLayoutSupport;
+
+typedef struct VkPhysicalDeviceShaderDrawParameterFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderDrawParameters;
+} VkPhysicalDeviceShaderDrawParameterFeatures;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
+typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
+typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
+typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
+typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
+typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
+    uint32_t*                                   pApiVersion);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
+    VkDevice                                    device,
+    uint32_t                                    bindInfoCount,
+    const VkBindBufferMemoryInfo*               pBindInfos);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
+    VkDevice                                    device,
+    uint32_t                                    bindInfoCount,
+    const VkBindImageMemoryInfo*                pBindInfos);
+
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
+    VkDevice                                    device,
+    uint32_t                                    heapIndex,
+    uint32_t                                    localDeviceIndex,
+    uint32_t                                    remoteDeviceIndex,
+    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    deviceMask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    baseGroupX,
+    uint32_t                                    baseGroupY,
+    uint32_t                                    baseGroupZ,
+    uint32_t                                    groupCountX,
+    uint32_t                                    groupCountY,
+    uint32_t                                    groupCountZ);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
+    VkInstance                                  instance,
+    uint32_t*                                   pPhysicalDeviceGroupCount,
+    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
+    VkDevice                                    device,
+    const VkImageMemoryRequirementsInfo2*       pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
+    VkDevice                                    device,
+    const VkBufferMemoryRequirementsInfo2*      pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
+    VkDevice                                    device,
+    const VkImageSparseMemoryRequirementsInfo2* pInfo,
+    uint32_t*                                   pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceFeatures2*                  pFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceProperties2*                pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkFormatProperties2*                        pFormatProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
+    VkImageFormatProperties2*                   pImageFormatProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+    uint32_t*                                   pPropertyCount,
+    VkSparseImageFormatProperties2*             pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    VkCommandPoolTrimFlags                      flags);
+
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
+    VkDevice                                    device,
+    const VkDeviceQueueInfo2*                   pQueueInfo,
+    VkQueue*                                    pQueue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
+    VkDevice                                    device,
+    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSamplerYcbcrConversion*                   pYcbcrConversion);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
+    VkDevice                                    device,
+    VkSamplerYcbcrConversion                    ycbcrConversion,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(
+    VkDevice                                    device,
+    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(
+    VkDevice                                    device,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(
+    VkDevice                                    device,
+    VkDescriptorSet                             descriptorSet,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const void*                                 pData);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
+    VkExternalBufferProperties*                 pExternalBufferProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
+    VkExternalFenceProperties*                  pExternalFenceProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
+    VkDevice                                    device,
+    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
+    VkDescriptorSetLayoutSupport*               pSupport);
+#endif
+
+#define VK_KHR_surface 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
+
+#define VK_KHR_SURFACE_SPEC_VERSION       25
+#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
+#define VK_COLORSPACE_SRGB_NONLINEAR_KHR  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
+
+
+typedef enum VkColorSpaceKHR {
+    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
+    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
+    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
+    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
+    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
+    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
+    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
+    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
+    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
+    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
+    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
+    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
+    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
+    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
+    VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
+    VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
+    VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
+    VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
+    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkColorSpaceKHR;
+
+typedef enum VkPresentModeKHR {
+    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
+    VK_PRESENT_MODE_MAILBOX_KHR = 1,
+    VK_PRESENT_MODE_FIFO_KHR = 2,
+    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
+    VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
+    VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
+    VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
+    VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
+    VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
+    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPresentModeKHR;
+
+
+typedef enum VkSurfaceTransformFlagBitsKHR {
+    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
+    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
+    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
+    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
+    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
+    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
+    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkSurfaceTransformFlagBitsKHR;
+typedef VkFlags VkSurfaceTransformFlagsKHR;
+
+typedef enum VkCompositeAlphaFlagBitsKHR {
+    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
+    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
+    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
+    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
+    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkCompositeAlphaFlagBitsKHR;
+typedef VkFlags VkCompositeAlphaFlagsKHR;
+
+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;
+
+typedef struct VkSurfaceFormatKHR {
+    VkFormat           format;
+    VkColorSpaceKHR    colorSpace;
+} VkSurfaceFormatKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
+    VkInstance                                  instance,
+    VkSurfaceKHR                                surface,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex,
+    VkSurfaceKHR                                surface,
+    VkBool32*                                   pSupported);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkSurfaceKHR                                surface,
+    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkSurfaceKHR                                surface,
+    uint32_t*                                   pSurfaceFormatCount,
+    VkSurfaceFormatKHR*                         pSurfaceFormats);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkSurfaceKHR                                surface,
+    uint32_t*                                   pPresentModeCount,
+    VkPresentModeKHR*                           pPresentModes);
+#endif
+
+#define VK_KHR_swapchain 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
+
+#define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
+#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
+
+
+typedef enum VkSwapchainCreateFlagBitsKHR {
+    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
+    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
+    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkSwapchainCreateFlagBitsKHR;
+typedef VkFlags VkSwapchainCreateFlagsKHR;
+
+typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
+    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
+    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
+    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
+    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
+    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkDeviceGroupPresentModeFlagBitsKHR;
+typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
+
+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;
+
+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;
+
+typedef struct VkImageSwapchainCreateInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSwapchainKHR     swapchain;
+} VkImageSwapchainCreateInfoKHR;
+
+typedef struct VkBindImageMemorySwapchainInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSwapchainKHR     swapchain;
+    uint32_t           imageIndex;
+} VkBindImageMemorySwapchainInfoKHR;
+
+typedef struct VkAcquireNextImageInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSwapchainKHR     swapchain;
+    uint64_t           timeout;
+    VkSemaphore        semaphore;
+    VkFence            fence;
+    uint32_t           deviceMask;
+} VkAcquireNextImageInfoKHR;
+
+typedef struct VkDeviceGroupPresentCapabilitiesKHR {
+    VkStructureType                     sType;
+    const void*                         pNext;
+    uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
+    VkDeviceGroupPresentModeFlagsKHR    modes;
+} VkDeviceGroupPresentCapabilitiesKHR;
+
+typedef struct VkDeviceGroupPresentInfoKHR {
+    VkStructureType                        sType;
+    const void*                            pNext;
+    uint32_t                               swapchainCount;
+    const uint32_t*                        pDeviceMasks;
+    VkDeviceGroupPresentModeFlagBitsKHR    mode;
+} VkDeviceGroupPresentInfoKHR;
+
+typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
+    VkStructureType                     sType;
+    const void*                         pNext;
+    VkDeviceGroupPresentModeFlagsKHR    modes;
+} VkDeviceGroupSwapchainCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
+typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
+typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
+    VkDevice                                    device,
+    const VkSwapchainCreateInfoKHR*             pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSwapchainKHR*                             pSwapchain);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    uint32_t*                                   pSwapchainImageCount,
+    VkImage*                                    pSwapchainImages);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    uint64_t                                    timeout,
+    VkSemaphore                                 semaphore,
+    VkFence                                     fence,
+    uint32_t*                                   pImageIndex);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
+    VkQueue                                     queue,
+    const VkPresentInfoKHR*                     pPresentInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
+    VkDevice                                    device,
+    VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
+    VkDevice                                    device,
+    VkSurfaceKHR                                surface,
+    VkDeviceGroupPresentModeFlagsKHR*           pModes);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkSurfaceKHR                                surface,
+    uint32_t*                                   pRectCount,
+    VkRect2D*                                   pRects);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
+    VkDevice                                    device,
+    const VkAcquireNextImageInfoKHR*            pAcquireInfo,
+    uint32_t*                                   pImageIndex);
+#endif
+
+#define VK_KHR_display 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
+
+#define VK_KHR_DISPLAY_SPEC_VERSION       21
+#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
+
+
+typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
+    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
+    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
+    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
+    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkDisplayPlaneAlphaFlagBitsKHR;
+typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
+typedef VkFlags VkDisplayModeCreateFlagsKHR;
+typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
+
+typedef struct VkDisplayPropertiesKHR {
+    VkDisplayKHR                  display;
+    const char*                   displayName;
+    VkExtent2D                    physicalDimensions;
+    VkExtent2D                    physicalResolution;
+    VkSurfaceTransformFlagsKHR    supportedTransforms;
+    VkBool32                      planeReorderPossible;
+    VkBool32                      persistentContent;
+} VkDisplayPropertiesKHR;
+
+typedef struct VkDisplayModeParametersKHR {
+    VkExtent2D    visibleRegion;
+    uint32_t      refreshRate;
+} VkDisplayModeParametersKHR;
+
+typedef struct VkDisplayModePropertiesKHR {
+    VkDisplayModeKHR              displayMode;
+    VkDisplayModeParametersKHR    parameters;
+} VkDisplayModePropertiesKHR;
+
+typedef struct VkDisplayModeCreateInfoKHR {
+    VkStructureType                sType;
+    const void*                    pNext;
+    VkDisplayModeCreateFlagsKHR    flags;
+    VkDisplayModeParametersKHR     parameters;
+} VkDisplayModeCreateInfoKHR;
+
+typedef struct VkDisplayPlaneCapabilitiesKHR {
+    VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
+    VkOffset2D                     minSrcPosition;
+    VkOffset2D                     maxSrcPosition;
+    VkExtent2D                     minSrcExtent;
+    VkExtent2D                     maxSrcExtent;
+    VkOffset2D                     minDstPosition;
+    VkOffset2D                     maxDstPosition;
+    VkExtent2D                     minDstExtent;
+    VkExtent2D                     maxDstExtent;
+} VkDisplayPlaneCapabilitiesKHR;
+
+typedef struct VkDisplayPlanePropertiesKHR {
+    VkDisplayKHR    currentDisplay;
+    uint32_t        currentStackIndex;
+} VkDisplayPlanePropertiesKHR;
+
+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;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pPropertyCount,
+    VkDisplayPropertiesKHR*                     pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pPropertyCount,
+    VkDisplayPlanePropertiesKHR*                pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    planeIndex,
+    uint32_t*                                   pDisplayCount,
+    VkDisplayKHR*                               pDisplays);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkDisplayKHR                                display,
+    uint32_t*                                   pPropertyCount,
+    VkDisplayModePropertiesKHR*                 pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkDisplayKHR                                display,
+    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDisplayModeKHR*                           pMode);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkDisplayModeKHR                            mode,
+    uint32_t                                    planeIndex,
+    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
+    VkInstance                                  instance,
+    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+#endif
+
+#define VK_KHR_display_swapchain 1
+#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
+#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
+
+typedef struct VkDisplayPresentInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkRect2D           srcRect;
+    VkRect2D           dstRect;
+    VkBool32           persistent;
+} VkDisplayPresentInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
+    VkDevice                                    device,
+    uint32_t                                    swapchainCount,
+    const VkSwapchainCreateInfoKHR*             pCreateInfos,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSwapchainKHR*                             pSwapchains);
+#endif
+
+#define VK_KHR_sampler_mirror_clamp_to_edge 1
+#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
+#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
+
+
+#define VK_KHR_multiview 1
+#define VK_KHR_MULTIVIEW_SPEC_VERSION     1
+#define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
+
+typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
+
+typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
+
+typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
+
+
+
+#define VK_KHR_get_physical_device_properties2 1
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
+
+typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
+
+typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
+
+typedef VkFormatProperties2 VkFormatProperties2KHR;
+
+typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
+
+typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
+
+typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
+
+typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
+
+typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
+
+typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceFeatures2*                  pFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceProperties2*                pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkFormatProperties2*                        pFormatProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
+    VkImageFormatProperties2*                   pImageFormatProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+    uint32_t*                                   pPropertyCount,
+    VkSparseImageFormatProperties2*             pProperties);
+#endif
+
+#define VK_KHR_device_group 1
+#define VK_KHR_DEVICE_GROUP_SPEC_VERSION  3
+#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
+
+typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
+
+typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;
+
+typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
+
+typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
+
+
+typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
+
+typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
+
+typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
+
+typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
+
+typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
+
+typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
+
+typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR(
+    VkDevice                                    device,
+    uint32_t                                    heapIndex,
+    uint32_t                                    localDeviceIndex,
+    uint32_t                                    remoteDeviceIndex,
+    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    deviceMask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    baseGroupX,
+    uint32_t                                    baseGroupY,
+    uint32_t                                    baseGroupZ,
+    uint32_t                                    groupCountX,
+    uint32_t                                    groupCountY,
+    uint32_t                                    groupCountZ);
+#endif
+
+#define VK_KHR_shader_draw_parameters 1
+#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
+#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
+
+
+#define VK_KHR_maintenance1 1
+#define VK_KHR_MAINTENANCE1_SPEC_VERSION  2
+#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
+
+typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    VkCommandPoolTrimFlags                      flags);
+#endif
+
+#define VK_KHR_device_group_creation 1
+#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
+#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
+#define VK_MAX_DEVICE_GROUP_SIZE_KHR      VK_MAX_DEVICE_GROUP_SIZE
+
+typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
+
+typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR(
+    VkInstance                                  instance,
+    uint32_t*                                   pPhysicalDeviceGroupCount,
+    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
+#endif
+
+#define VK_KHR_external_memory_capabilities 1
+#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
+#define VK_LUID_SIZE_KHR                  VK_LUID_SIZE
+
+typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
+
+typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;
+
+typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
+
+typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;
+
+
+typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
+
+typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
+
+typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
+
+typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
+
+typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
+
+typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
+    VkExternalBufferProperties*                 pExternalBufferProperties);
+#endif
+
+#define VK_KHR_external_memory 1
+#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
+#define VK_QUEUE_FAMILY_EXTERNAL_KHR      VK_QUEUE_FAMILY_EXTERNAL
+
+typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
+
+typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
+
+typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
+
+
+
+#define VK_KHR_external_memory_fd 1
+#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
+
+typedef struct VkImportMemoryFdInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+    int                                   fd;
+} VkImportMemoryFdInfoKHR;
+
+typedef struct VkMemoryFdPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           memoryTypeBits;
+} VkMemoryFdPropertiesKHR;
+
+typedef struct VkMemoryGetFdInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkDeviceMemory                        memory;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+} VkMemoryGetFdInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
+    VkDevice                                    device,
+    const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
+    int*                                        pFd);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
+    VkDevice                                    device,
+    VkExternalMemoryHandleTypeFlagBits          handleType,
+    int                                         fd,
+    VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
+#endif
+
+#define VK_KHR_external_semaphore_capabilities 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
+
+typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
+
+typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;
+
+typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
+
+typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;
+
+
+typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
+
+typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
+#endif
+
+#define VK_KHR_external_semaphore 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
+
+typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
+
+typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;
+
+
+typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
+
+
+
+#define VK_KHR_external_semaphore_fd 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
+
+typedef struct VkImportSemaphoreFdInfoKHR {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkSemaphore                              semaphore;
+    VkSemaphoreImportFlags                   flags;
+    VkExternalSemaphoreHandleTypeFlagBits    handleType;
+    int                                      fd;
+} VkImportSemaphoreFdInfoKHR;
+
+typedef struct VkSemaphoreGetFdInfoKHR {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkSemaphore                              semaphore;
+    VkExternalSemaphoreHandleTypeFlagBits    handleType;
+} VkSemaphoreGetFdInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
+    VkDevice                                    device,
+    const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
+    VkDevice                                    device,
+    const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
+    int*                                        pFd);
+#endif
+
+#define VK_KHR_push_descriptor 1
+#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
+#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
+
+typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxPushDescriptors;
+} VkPhysicalDevicePushDescriptorPropertiesKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
+typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineBindPoint                         pipelineBindPoint,
+    VkPipelineLayout                            layout,
+    uint32_t                                    set,
+    uint32_t                                    descriptorWriteCount,
+    const VkWriteDescriptorSet*                 pDescriptorWrites);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    VkPipelineLayout                            layout,
+    uint32_t                                    set,
+    const void*                                 pData);
+#endif
+
+#define VK_KHR_16bit_storage 1
+#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
+#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
+
+typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
+
+
+
+#define VK_KHR_incremental_present 1
+#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
+#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
+
+typedef struct VkRectLayerKHR {
+    VkOffset2D    offset;
+    VkExtent2D    extent;
+    uint32_t      layer;
+} VkRectLayerKHR;
+
+typedef struct VkPresentRegionKHR {
+    uint32_t                 rectangleCount;
+    const VkRectLayerKHR*    pRectangles;
+} VkPresentRegionKHR;
+
+typedef struct VkPresentRegionsKHR {
+    VkStructureType              sType;
+    const void*                  pNext;
+    uint32_t                     swapchainCount;
+    const VkPresentRegionKHR*    pRegions;
+} VkPresentRegionsKHR;
+
+
+
+#define VK_KHR_descriptor_update_template 1
+typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
+
+
+#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
+#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
+
+typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
+
+
+typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
+
+
+typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
+
+typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
+    VkDevice                                    device,
+    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
+    VkDevice                                    device,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
+    VkDevice                                    device,
+    VkDescriptorSet                             descriptorSet,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const void*                                 pData);
+#endif
+
+#define VK_KHR_shared_presentable_image 1
+#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
+#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
+
+typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
+    VkStructureType      sType;
+    void*                pNext;
+    VkImageUsageFlags    sharedPresentSupportedUsageFlags;
+} VkSharedPresentSurfaceCapabilitiesKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain);
+#endif
+
+#define VK_KHR_external_fence_capabilities 1
+#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
+
+typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
+
+typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;
+
+typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
+
+typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;
+
+
+typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
+
+typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
+    VkExternalFenceProperties*                  pExternalFenceProperties);
+#endif
+
+#define VK_KHR_external_fence 1
+#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
+
+typedef VkFenceImportFlags VkFenceImportFlagsKHR;
+
+typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;
+
+
+typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
+
+
+
+#define VK_KHR_external_fence_fd 1
+#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
+
+typedef struct VkImportFenceFdInfoKHR {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkFence                              fence;
+    VkFenceImportFlags                   flags;
+    VkExternalFenceHandleTypeFlagBits    handleType;
+    int                                  fd;
+} VkImportFenceFdInfoKHR;
+
+typedef struct VkFenceGetFdInfoKHR {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkFence                              fence;
+    VkExternalFenceHandleTypeFlagBits    handleType;
+} VkFenceGetFdInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
+    VkDevice                                    device,
+    const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
+    VkDevice                                    device,
+    const VkFenceGetFdInfoKHR*                  pGetFdInfo,
+    int*                                        pFd);
+#endif
+
+#define VK_KHR_maintenance2 1
+#define VK_KHR_MAINTENANCE2_SPEC_VERSION  1
+#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
+
+typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
+
+typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
+
+
+typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
+
+typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
+
+typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
+
+typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
+
+typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
+
+
+
+#define VK_KHR_get_surface_capabilities2 1
+#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
+#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
+
+typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSurfaceKHR       surface;
+} VkPhysicalDeviceSurfaceInfo2KHR;
+
+typedef struct VkSurfaceCapabilities2KHR {
+    VkStructureType             sType;
+    void*                       pNext;
+    VkSurfaceCapabilitiesKHR    surfaceCapabilities;
+} VkSurfaceCapabilities2KHR;
+
+typedef struct VkSurfaceFormat2KHR {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkSurfaceFormatKHR    surfaceFormat;
+} VkSurfaceFormat2KHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
+    VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
+    uint32_t*                                   pSurfaceFormatCount,
+    VkSurfaceFormat2KHR*                        pSurfaceFormats);
+#endif
+
+#define VK_KHR_variable_pointers 1
+#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
+#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
+
+typedef VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
+
+
+
+#define VK_KHR_dedicated_allocation 1
+#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
+#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
+
+typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
+
+typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
+
+
+
+#define VK_KHR_storage_buffer_storage_class 1
+#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
+#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
+
+
+#define VK_KHR_relaxed_block_layout 1
+#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
+
+
+#define VK_KHR_get_memory_requirements2 1
+#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
+#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
+
+typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
+
+typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
+
+typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
+
+typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
+
+typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
+    VkDevice                                    device,
+    const VkImageMemoryRequirementsInfo2*       pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
+    VkDevice                                    device,
+    const VkBufferMemoryRequirementsInfo2*      pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
+    VkDevice                                    device,
+    const VkImageSparseMemoryRequirementsInfo2* pInfo,
+    uint32_t*                                   pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
+#endif
+
+#define VK_KHR_image_format_list 1
+#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
+#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
+
+typedef struct VkImageFormatListCreateInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           viewFormatCount;
+    const VkFormat*    pViewFormats;
+} VkImageFormatListCreateInfoKHR;
+
+
+
+#define VK_KHR_sampler_ycbcr_conversion 1
+typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
+
+
+#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
+#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
+
+typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
+
+typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
+
+typedef VkChromaLocation VkChromaLocationKHR;
+
+
+typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
+
+typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
+
+typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
+
+typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
+
+typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
+
+typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
+typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
+    VkDevice                                    device,
+    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSamplerYcbcrConversion*                   pYcbcrConversion);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
+    VkDevice                                    device,
+    VkSamplerYcbcrConversion                    ycbcrConversion,
+    const VkAllocationCallbacks*                pAllocator);
+#endif
+
+#define VK_KHR_bind_memory2 1
+#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
+#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
+
+typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
+
+typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
+typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
+    VkDevice                                    device,
+    uint32_t                                    bindInfoCount,
+    const VkBindBufferMemoryInfo*               pBindInfos);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
+    VkDevice                                    device,
+    uint32_t                                    bindInfoCount,
+    const VkBindImageMemoryInfo*                pBindInfos);
+#endif
+
+#define VK_KHR_maintenance3 1
+#define VK_KHR_MAINTENANCE3_SPEC_VERSION  1
+#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
+
+typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
+
+typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(
+    VkDevice                                    device,
+    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
+    VkDescriptorSetLayoutSupport*               pSupport);
+#endif
+
+#define VK_EXT_debug_report 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
+
+#define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9
+#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
+#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
+#define VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
+
+
+typedef enum VkDebugReportObjectTypeEXT {
+    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
+    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
+    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
+    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
+    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
+    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
+    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
+    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
+    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
+    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
+    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
+    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
+    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
+    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
+    VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
+    VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
+    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
+    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDebugReportObjectTypeEXT;
+
+
+typedef enum VkDebugReportFlagBitsEXT {
+    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
+    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
+    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
+    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
+    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
+    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDebugReportFlagBitsEXT;
+typedef VkFlags VkDebugReportFlagsEXT;
+
+typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
+    VkDebugReportFlagsEXT                       flags,
+    VkDebugReportObjectTypeEXT                  objectType,
+    uint64_t                                    object,
+    size_t                                      location,
+    int32_t                                     messageCode,
+    const char*                                 pLayerPrefix,
+    const char*                                 pMessage,
+    void*                                       pUserData);
+
+typedef struct VkDebugReportCallbackCreateInfoEXT {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkDebugReportFlagsEXT           flags;
+    PFN_vkDebugReportCallbackEXT    pfnCallback;
+    void*                           pUserData;
+} VkDebugReportCallbackCreateInfoEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
+typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
+    VkInstance                                  instance,
+    const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDebugReportCallbackEXT*                   pCallback);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
+    VkInstance                                  instance,
+    VkDebugReportCallbackEXT                    callback,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
+    VkInstance                                  instance,
+    VkDebugReportFlagsEXT                       flags,
+    VkDebugReportObjectTypeEXT                  objectType,
+    uint64_t                                    object,
+    size_t                                      location,
+    int32_t                                     messageCode,
+    const char*                                 pLayerPrefix,
+    const char*                                 pMessage);
+#endif
+
+#define VK_NV_glsl_shader 1
+#define VK_NV_GLSL_SHADER_SPEC_VERSION    1
+#define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
+
+
+#define VK_EXT_depth_range_unrestricted 1
+#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
+#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
+
+
+#define VK_IMG_filter_cubic 1
+#define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
+#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
+
+
+#define VK_AMD_rasterization_order 1
+#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
+#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
+
+
+typedef enum VkRasterizationOrderAMD {
+    VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
+    VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
+    VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
+    VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
+    VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
+    VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkRasterizationOrderAMD;
+
+typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
+    VkStructureType            sType;
+    const void*                pNext;
+    VkRasterizationOrderAMD    rasterizationOrder;
+} VkPipelineRasterizationStateRasterizationOrderAMD;
+
+
+
+#define VK_AMD_shader_trinary_minmax 1
+#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
+#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
+
+
+#define VK_AMD_shader_explicit_vertex_parameter 1
+#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
+#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
+
+
+#define VK_EXT_debug_marker 1
+#define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
+#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
+
+typedef struct VkDebugMarkerObjectNameInfoEXT {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkDebugReportObjectTypeEXT    objectType;
+    uint64_t                      object;
+    const char*                   pObjectName;
+} VkDebugMarkerObjectNameInfoEXT;
+
+typedef struct VkDebugMarkerObjectTagInfoEXT {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkDebugReportObjectTypeEXT    objectType;
+    uint64_t                      object;
+    uint64_t                      tagName;
+    size_t                        tagSize;
+    const void*                   pTag;
+} VkDebugMarkerObjectTagInfoEXT;
+
+typedef struct VkDebugMarkerMarkerInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    const char*        pMarkerName;
+    float              color[4];
+} VkDebugMarkerMarkerInfoEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
+typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
+    VkDevice                                    device,
+    const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
+    VkDevice                                    device,
+    const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
+    VkCommandBuffer                             commandBuffer);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
+#endif
+
+#define VK_AMD_gcn_shader 1
+#define VK_AMD_GCN_SHADER_SPEC_VERSION    1
+#define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
+
+
+#define VK_NV_dedicated_allocation 1
+#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
+#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
+
+typedef struct VkDedicatedAllocationImageCreateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           dedicatedAllocation;
+} VkDedicatedAllocationImageCreateInfoNV;
+
+typedef struct VkDedicatedAllocationBufferCreateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           dedicatedAllocation;
+} VkDedicatedAllocationBufferCreateInfoNV;
+
+typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+    VkBuffer           buffer;
+} VkDedicatedAllocationMemoryAllocateInfoNV;
+
+
+
+#define VK_AMD_draw_indirect_count 1
+#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
+#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    uint32_t                                    maxDrawCount,
+    uint32_t                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    uint32_t                                    maxDrawCount,
+    uint32_t                                    stride);
+#endif
+
+#define VK_AMD_negative_viewport_height 1
+#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
+#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
+
+
+#define VK_AMD_gpu_shader_half_float 1
+#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
+#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
+
+
+#define VK_AMD_shader_ballot 1
+#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
+#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
+
+
+#define VK_AMD_texture_gather_bias_lod 1
+#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
+#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
+
+typedef struct VkTextureLODGatherFormatPropertiesAMD {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           supportsTextureGatherLODBiasAMD;
+} VkTextureLODGatherFormatPropertiesAMD;
+
+
+
+#define VK_AMD_shader_info 1
+#define VK_AMD_SHADER_INFO_SPEC_VERSION   1
+#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
+
+
+typedef enum VkShaderInfoTypeAMD {
+    VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
+    VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
+    VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
+    VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
+    VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
+    VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1),
+    VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkShaderInfoTypeAMD;
+
+typedef struct VkShaderResourceUsageAMD {
+    uint32_t    numUsedVgprs;
+    uint32_t    numUsedSgprs;
+    uint32_t    ldsSizePerLocalWorkGroup;
+    size_t      ldsUsageSizeInBytes;
+    size_t      scratchMemUsageInBytes;
+} VkShaderResourceUsageAMD;
+
+typedef struct VkShaderStatisticsInfoAMD {
+    VkShaderStageFlags          shaderStageMask;
+    VkShaderResourceUsageAMD    resourceUsage;
+    uint32_t                    numPhysicalVgprs;
+    uint32_t                    numPhysicalSgprs;
+    uint32_t                    numAvailableVgprs;
+    uint32_t                    numAvailableSgprs;
+    uint32_t                    computeWorkGroupSize[3];
+} VkShaderStatisticsInfoAMD;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    VkShaderStageFlagBits                       shaderStage,
+    VkShaderInfoTypeAMD                         infoType,
+    size_t*                                     pInfoSize,
+    void*                                       pInfo);
+#endif
+
+#define VK_AMD_shader_image_load_store_lod 1
+#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
+#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
+
+
+#define VK_IMG_format_pvrtc 1
+#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
+#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
+
+
+#define VK_NV_external_memory_capabilities 1
+#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
+
+
+typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkExternalMemoryHandleTypeFlagBitsNV;
+typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
+
+typedef enum VkExternalMemoryFeatureFlagBitsNV {
+    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
+    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
+    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
+    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkExternalMemoryFeatureFlagBitsNV;
+typedef VkFlags VkExternalMemoryFeatureFlagsNV;
+
+typedef struct VkExternalImageFormatPropertiesNV {
+    VkImageFormatProperties              imageFormatProperties;
+    VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
+    VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
+    VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
+} VkExternalImageFormatPropertiesNV;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkImageType                                 type,
+    VkImageTiling                               tiling,
+    VkImageUsageFlags                           usage,
+    VkImageCreateFlags                          flags,
+    VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
+    VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
+#endif
+
+#define VK_NV_external_memory 1
+#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
+
+typedef struct VkExternalMemoryImageCreateInfoNV {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
+} VkExternalMemoryImageCreateInfoNV;
+
+typedef struct VkExportMemoryAllocateInfoNV {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
+} VkExportMemoryAllocateInfoNV;
+
+
+
+#define VK_EXT_validation_flags 1
+#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
+
+
+typedef enum VkValidationCheckEXT {
+    VK_VALIDATION_CHECK_ALL_EXT = 0,
+    VK_VALIDATION_CHECK_SHADERS_EXT = 1,
+    VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
+    VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_SHADERS_EXT,
+    VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_SHADERS_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
+    VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkValidationCheckEXT;
+
+typedef struct VkValidationFlagsEXT {
+    VkStructureType          sType;
+    const void*              pNext;
+    uint32_t                 disabledValidationCheckCount;
+    VkValidationCheckEXT*    pDisabledValidationChecks;
+} VkValidationFlagsEXT;
+
+
+
+#define VK_EXT_shader_subgroup_ballot 1
+#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
+#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
+
+
+#define VK_EXT_shader_subgroup_vote 1
+#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
+#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
+
+
+#define VK_NVX_device_generated_commands 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
+
+#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
+#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
+
+
+typedef enum VkIndirectCommandsTokenTypeNVX {
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1),
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
+} VkIndirectCommandsTokenTypeNVX;
+
+typedef enum VkObjectEntryTypeNVX {
+    VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
+    VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
+    VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
+    VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
+    VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
+    VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
+    VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX,
+    VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1),
+    VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
+} VkObjectEntryTypeNVX;
+
+
+typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
+} VkIndirectCommandsLayoutUsageFlagBitsNVX;
+typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX;
+
+typedef enum VkObjectEntryUsageFlagBitsNVX {
+    VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
+    VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
+    VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
+} VkObjectEntryUsageFlagBitsNVX;
+typedef VkFlags VkObjectEntryUsageFlagsNVX;
+
+typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           computeBindingPointSupport;
+} VkDeviceGeneratedCommandsFeaturesNVX;
+
+typedef struct VkDeviceGeneratedCommandsLimitsNVX {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           maxIndirectCommandsLayoutTokenCount;
+    uint32_t           maxObjectEntryCounts;
+    uint32_t           minSequenceCountBufferOffsetAlignment;
+    uint32_t           minSequenceIndexBufferOffsetAlignment;
+    uint32_t           minCommandsTokenBufferOffsetAlignment;
+} VkDeviceGeneratedCommandsLimitsNVX;
+
+typedef struct VkIndirectCommandsTokenNVX {
+    VkIndirectCommandsTokenTypeNVX    tokenType;
+    VkBuffer                          buffer;
+    VkDeviceSize                      offset;
+} VkIndirectCommandsTokenNVX;
+
+typedef struct VkIndirectCommandsLayoutTokenNVX {
+    VkIndirectCommandsTokenTypeNVX    tokenType;
+    uint32_t                          bindingUnit;
+    uint32_t                          dynamicCount;
+    uint32_t                          divisor;
+} VkIndirectCommandsLayoutTokenNVX;
+
+typedef struct VkIndirectCommandsLayoutCreateInfoNVX {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    VkPipelineBindPoint                        pipelineBindPoint;
+    VkIndirectCommandsLayoutUsageFlagsNVX      flags;
+    uint32_t                                   tokenCount;
+    const VkIndirectCommandsLayoutTokenNVX*    pTokens;
+} VkIndirectCommandsLayoutCreateInfoNVX;
+
+typedef struct VkCmdProcessCommandsInfoNVX {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkObjectTableNVX                     objectTable;
+    VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
+    uint32_t                             indirectCommandsTokenCount;
+    const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
+    uint32_t                             maxSequencesCount;
+    VkCommandBuffer                      targetCommandBuffer;
+    VkBuffer                             sequencesCountBuffer;
+    VkDeviceSize                         sequencesCountOffset;
+    VkBuffer                             sequencesIndexBuffer;
+    VkDeviceSize                         sequencesIndexOffset;
+} VkCmdProcessCommandsInfoNVX;
+
+typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
+    VkStructureType                sType;
+    const void*                    pNext;
+    VkObjectTableNVX               objectTable;
+    VkIndirectCommandsLayoutNVX    indirectCommandsLayout;
+    uint32_t                       maxSequencesCount;
+} VkCmdReserveSpaceForCommandsInfoNVX;
+
+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;
+
+typedef struct VkObjectTableEntryNVX {
+    VkObjectEntryTypeNVX          type;
+    VkObjectEntryUsageFlagsNVX    flags;
+} VkObjectTableEntryNVX;
+
+typedef struct VkObjectTablePipelineEntryNVX {
+    VkObjectEntryTypeNVX          type;
+    VkObjectEntryUsageFlagsNVX    flags;
+    VkPipeline                    pipeline;
+} VkObjectTablePipelineEntryNVX;
+
+typedef struct VkObjectTableDescriptorSetEntryNVX {
+    VkObjectEntryTypeNVX          type;
+    VkObjectEntryUsageFlagsNVX    flags;
+    VkPipelineLayout              pipelineLayout;
+    VkDescriptorSet               descriptorSet;
+} VkObjectTableDescriptorSetEntryNVX;
+
+typedef struct VkObjectTableVertexBufferEntryNVX {
+    VkObjectEntryTypeNVX          type;
+    VkObjectEntryUsageFlagsNVX    flags;
+    VkBuffer                      buffer;
+} VkObjectTableVertexBufferEntryNVX;
+
+typedef struct VkObjectTableIndexBufferEntryNVX {
+    VkObjectEntryTypeNVX          type;
+    VkObjectEntryUsageFlagsNVX    flags;
+    VkBuffer                      buffer;
+    VkIndexType                   indexType;
+} VkObjectTableIndexBufferEntryNVX;
+
+typedef struct VkObjectTablePushConstantEntryNVX {
+    VkObjectEntryTypeNVX          type;
+    VkObjectEntryUsageFlagsNVX    flags;
+    VkPipelineLayout              pipelineLayout;
+    VkShaderStageFlags            stageFlags;
+} VkObjectTablePushConstantEntryNVX;
+
+
+typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
+typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
+typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const*    ppObjectTableEntries, const uint32_t* pObjectIndices);
+typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX(
+    VkCommandBuffer                             commandBuffer,
+    const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX(
+    VkCommandBuffer                             commandBuffer,
+    const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX(
+    VkDevice                                    device,
+    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX(
+    VkDevice                                    device,
+    VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX(
+    VkDevice                                    device,
+    const VkObjectTableCreateInfoNVX*           pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkObjectTableNVX*                           pObjectTable);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX(
+    VkDevice                                    device,
+    VkObjectTableNVX                            objectTable,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX(
+    VkDevice                                    device,
+    VkObjectTableNVX                            objectTable,
+    uint32_t                                    objectCount,
+    const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
+    const uint32_t*                             pObjectIndices);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX(
+    VkDevice                                    device,
+    VkObjectTableNVX                            objectTable,
+    uint32_t                                    objectCount,
+    const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
+    const uint32_t*                             pObjectIndices);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+    VkPhysicalDevice                            physicalDevice,
+    VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
+    VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
+#endif
+
+#define VK_NV_clip_space_w_scaling 1
+#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
+#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
+
+typedef struct VkViewportWScalingNV {
+    float    xcoeff;
+    float    ycoeff;
+} VkViewportWScalingNV;
+
+typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
+    VkStructureType                sType;
+    const void*                    pNext;
+    VkBool32                       viewportWScalingEnable;
+    uint32_t                       viewportCount;
+    const VkViewportWScalingNV*    pViewportWScalings;
+} VkPipelineViewportWScalingStateCreateInfoNV;
+
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    firstViewport,
+    uint32_t                                    viewportCount,
+    const VkViewportWScalingNV*                 pViewportWScalings);
+#endif
+
+#define VK_EXT_direct_mode_display 1
+#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
+#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
+
+typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
+    VkPhysicalDevice                            physicalDevice,
+    VkDisplayKHR                                display);
+#endif
+
+#define VK_EXT_display_surface_counter 1
+#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
+#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
+#define VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
+
+
+typedef enum VkSurfaceCounterFlagBitsEXT {
+    VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
+    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkSurfaceCounterFlagBitsEXT;
+typedef VkFlags VkSurfaceCounterFlagsEXT;
+
+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;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+    VkPhysicalDevice                            physicalDevice,
+    VkSurfaceKHR                                surface,
+    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
+#endif
+
+#define VK_EXT_display_control 1
+#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
+#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
+
+
+typedef enum VkDisplayPowerStateEXT {
+    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
+    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
+    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
+    VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT,
+    VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT,
+    VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1),
+    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDisplayPowerStateEXT;
+
+typedef enum VkDeviceEventTypeEXT {
+    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
+    VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
+    VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
+    VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1),
+    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDeviceEventTypeEXT;
+
+typedef enum VkDisplayEventTypeEXT {
+    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
+    VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
+    VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
+    VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1),
+    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDisplayEventTypeEXT;
+
+typedef struct VkDisplayPowerInfoEXT {
+    VkStructureType           sType;
+    const void*               pNext;
+    VkDisplayPowerStateEXT    powerState;
+} VkDisplayPowerInfoEXT;
+
+typedef struct VkDeviceEventInfoEXT {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkDeviceEventTypeEXT    deviceEvent;
+} VkDeviceEventInfoEXT;
+
+typedef struct VkDisplayEventInfoEXT {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkDisplayEventTypeEXT    displayEvent;
+} VkDisplayEventInfoEXT;
+
+typedef struct VkSwapchainCounterCreateInfoEXT {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkSurfaceCounterFlagsEXT    surfaceCounters;
+} VkSwapchainCounterCreateInfoEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
+typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
+    VkDevice                                    device,
+    VkDisplayKHR                                display,
+    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
+    VkDevice                                    device,
+    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkFence*                                    pFence);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
+    VkDevice                                    device,
+    VkDisplayKHR                                display,
+    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkFence*                                    pFence);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    VkSurfaceCounterFlagBitsEXT                 counter,
+    uint64_t*                                   pCounterValue);
+#endif
+
+#define VK_GOOGLE_display_timing 1
+#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
+#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
+
+typedef struct VkRefreshCycleDurationGOOGLE {
+    uint64_t    refreshDuration;
+} VkRefreshCycleDurationGOOGLE;
+
+typedef struct VkPastPresentationTimingGOOGLE {
+    uint32_t    presentID;
+    uint64_t    desiredPresentTime;
+    uint64_t    actualPresentTime;
+    uint64_t    earliestPresentTime;
+    uint64_t    presentMargin;
+} VkPastPresentationTimingGOOGLE;
+
+typedef struct VkPresentTimeGOOGLE {
+    uint32_t    presentID;
+    uint64_t    desiredPresentTime;
+} VkPresentTimeGOOGLE;
+
+typedef struct VkPresentTimesInfoGOOGLE {
+    VkStructureType               sType;
+    const void*                   pNext;
+    uint32_t                      swapchainCount;
+    const VkPresentTimeGOOGLE*    pTimes;
+} VkPresentTimesInfoGOOGLE;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    uint32_t*                                   pPresentationTimingCount,
+    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
+#endif
+
+#define VK_NV_sample_mask_override_coverage 1
+#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
+#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
+
+
+#define VK_NV_geometry_shader_passthrough 1
+#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
+#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
+
+
+#define VK_NV_viewport_array2 1
+#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
+#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
+
+
+#define VK_NVX_multiview_per_view_attributes 1
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
+
+typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           perViewPositionAllComponents;
+} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
+
+
+
+#define VK_NV_viewport_swizzle 1
+#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
+#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
+
+
+typedef enum VkViewportCoordinateSwizzleNV {
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1),
+    VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkViewportCoordinateSwizzleNV;
+
+typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
+
+typedef struct VkViewportSwizzleNV {
+    VkViewportCoordinateSwizzleNV    x;
+    VkViewportCoordinateSwizzleNV    y;
+    VkViewportCoordinateSwizzleNV    z;
+    VkViewportCoordinateSwizzleNV    w;
+} VkViewportSwizzleNV;
+
+typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
+    VkStructureType                                sType;
+    const void*                                    pNext;
+    VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
+    uint32_t                                       viewportCount;
+    const VkViewportSwizzleNV*                     pViewportSwizzles;
+} VkPipelineViewportSwizzleStateCreateInfoNV;
+
+
+
+#define VK_EXT_discard_rectangles 1
+#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
+#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
+
+
+typedef enum VkDiscardRectangleModeEXT {
+    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
+    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
+    VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
+    VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT,
+    VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1),
+    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDiscardRectangleModeEXT;
+
+typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
+
+typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxDiscardRectangles;
+} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
+
+typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
+    VkStructureType                                  sType;
+    const void*                                      pNext;
+    VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
+    VkDiscardRectangleModeEXT                        discardRectangleMode;
+    uint32_t                                         discardRectangleCount;
+    const VkRect2D*                                  pDiscardRectangles;
+} VkPipelineDiscardRectangleStateCreateInfoEXT;
+
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
+    VkCommandBuffer                             commandBuffer,
+    uint32_t                                    firstDiscardRectangle,
+    uint32_t                                    discardRectangleCount,
+    const VkRect2D*                             pDiscardRectangles);
+#endif
+
+#define VK_EXT_conservative_rasterization 1
+#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
+#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
+
+
+typedef enum VkConservativeRasterizationModeEXT {
+    VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
+    VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
+    VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
+    VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
+    VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT,
+    VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1),
+    VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkConservativeRasterizationModeEXT;
+
+typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
+
+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;
+
+typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
+    VkStructureType                                           sType;
+    const void*                                               pNext;
+    VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
+    VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
+    float                                                     extraPrimitiveOverestimationSize;
+} VkPipelineRasterizationConservativeStateCreateInfoEXT;
+
+
+
+#define VK_EXT_swapchain_colorspace 1
+#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 3
+#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
+
+
+#define VK_EXT_hdr_metadata 1
+#define VK_EXT_HDR_METADATA_SPEC_VERSION  1
+#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
+
+typedef struct VkXYColorEXT {
+    float    x;
+    float    y;
+} VkXYColorEXT;
+
+typedef struct VkHdrMetadataEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkXYColorEXT       displayPrimaryRed;
+    VkXYColorEXT       displayPrimaryGreen;
+    VkXYColorEXT       displayPrimaryBlue;
+    VkXYColorEXT       whitePoint;
+    float              maxLuminance;
+    float              minLuminance;
+    float              maxContentLightLevel;
+    float              maxFrameAverageLightLevel;
+} VkHdrMetadataEXT;
+
+
+typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
+    VkDevice                                    device,
+    uint32_t                                    swapchainCount,
+    const VkSwapchainKHR*                       pSwapchains,
+    const VkHdrMetadataEXT*                     pMetadata);
+#endif
+
+#define VK_EXT_external_memory_dma_buf 1
+#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
+#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
+
+
+#define VK_EXT_queue_family_foreign 1
+#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
+#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
+#define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2)
+
+
+#define VK_EXT_debug_utils 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
+
+#define VK_EXT_DEBUG_UTILS_SPEC_VERSION   1
+#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
+
+typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
+typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
+
+typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
+    VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDebugUtilsMessageSeverityFlagBitsEXT;
+typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
+
+typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
+    VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
+    VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
+    VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
+    VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDebugUtilsMessageTypeFlagBitsEXT;
+typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
+
+typedef struct VkDebugUtilsObjectNameInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkObjectType       objectType;
+    uint64_t           objectHandle;
+    const char*        pObjectName;
+} VkDebugUtilsObjectNameInfoEXT;
+
+typedef struct VkDebugUtilsObjectTagInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkObjectType       objectType;
+    uint64_t           objectHandle;
+    uint64_t           tagName;
+    size_t             tagSize;
+    const void*        pTag;
+} VkDebugUtilsObjectTagInfoEXT;
+
+typedef struct VkDebugUtilsLabelEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    const char*        pLabelName;
+    float              color[4];
+} VkDebugUtilsLabelEXT;
+
+typedef struct VkDebugUtilsMessengerCallbackDataEXT {
+    VkStructureType                              sType;
+    const void*                                  pNext;
+    VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
+    const char*                                  pMessageIdName;
+    int32_t                                      messageIdNumber;
+    const char*                                  pMessage;
+    uint32_t                                     queueLabelCount;
+    VkDebugUtilsLabelEXT*                        pQueueLabels;
+    uint32_t                                     cmdBufLabelCount;
+    VkDebugUtilsLabelEXT*                        pCmdBufLabels;
+    uint32_t                                     objectCount;
+    VkDebugUtilsObjectNameInfoEXT*               pObjects;
+} VkDebugUtilsMessengerCallbackDataEXT;
+
+typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
+    VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
+    VkDebugUtilsMessageTypeFlagsEXT                  messageType,
+    const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
+    void*                                            pUserData);
+
+typedef struct VkDebugUtilsMessengerCreateInfoEXT {
+    VkStructureType                         sType;
+    const void*                             pNext;
+    VkDebugUtilsMessengerCreateFlagsEXT     flags;
+    VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
+    VkDebugUtilsMessageTypeFlagsEXT         messageType;
+    PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
+    void*                                   pUserData;
+} VkDebugUtilsMessengerCreateInfoEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
+typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
+typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
+typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
+typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
+typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
+    VkDevice                                    device,
+    const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
+    VkDevice                                    device,
+    const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
+    VkQueue                                     queue,
+    const VkDebugUtilsLabelEXT*                 pLabelInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
+    VkQueue                                     queue);
+
+VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
+    VkQueue                                     queue,
+    const VkDebugUtilsLabelEXT*                 pLabelInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkDebugUtilsLabelEXT*                 pLabelInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
+    VkCommandBuffer                             commandBuffer);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkDebugUtilsLabelEXT*                 pLabelInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
+    VkInstance                                  instance,
+    const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDebugUtilsMessengerEXT*                   pMessenger);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
+    VkInstance                                  instance,
+    VkDebugUtilsMessengerEXT                    messenger,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
+    VkInstance                                  instance,
+    VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
+    VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
+    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
+#endif
+
+#define VK_EXT_sampler_filter_minmax 1
+#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
+#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+
+
+typedef enum VkSamplerReductionModeEXT {
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
+    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
+    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
+    VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
+    VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
+    VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
+    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkSamplerReductionModeEXT;
+
+typedef struct VkSamplerReductionModeCreateInfoEXT {
+    VkStructureType              sType;
+    const void*                  pNext;
+    VkSamplerReductionModeEXT    reductionMode;
+} VkSamplerReductionModeCreateInfoEXT;
+
+typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           filterMinmaxSingleComponentFormats;
+    VkBool32           filterMinmaxImageComponentMapping;
+} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+
+
+
+#define VK_AMD_gpu_shader_int16 1
+#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
+#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
+
+
+#define VK_AMD_mixed_attachment_samples 1
+#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
+#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
+
+
+#define VK_AMD_shader_fragment_mask 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
+
+
+#define VK_EXT_shader_stencil_export 1
+#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
+#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
+
+
+#define VK_EXT_sample_locations 1
+#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
+#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
+
+typedef struct VkSampleLocationEXT {
+    float    x;
+    float    y;
+} VkSampleLocationEXT;
+
+typedef struct VkSampleLocationsInfoEXT {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkSampleCountFlagBits         sampleLocationsPerPixel;
+    VkExtent2D                    sampleLocationGridSize;
+    uint32_t                      sampleLocationsCount;
+    const VkSampleLocationEXT*    pSampleLocations;
+} VkSampleLocationsInfoEXT;
+
+typedef struct VkAttachmentSampleLocationsEXT {
+    uint32_t                    attachmentIndex;
+    VkSampleLocationsInfoEXT    sampleLocationsInfo;
+} VkAttachmentSampleLocationsEXT;
+
+typedef struct VkSubpassSampleLocationsEXT {
+    uint32_t                    subpassIndex;
+    VkSampleLocationsInfoEXT    sampleLocationsInfo;
+} VkSubpassSampleLocationsEXT;
+
+typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    uint32_t                                 attachmentInitialSampleLocationsCount;
+    const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
+    uint32_t                                 postSubpassSampleLocationsCount;
+    const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
+} VkRenderPassSampleLocationsBeginInfoEXT;
+
+typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkBool32                    sampleLocationsEnable;
+    VkSampleLocationsInfoEXT    sampleLocationsInfo;
+} VkPipelineSampleLocationsStateCreateInfoEXT;
+
+typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkSampleCountFlags    sampleLocationSampleCounts;
+    VkExtent2D            maxSampleLocationGridSize;
+    float                 sampleLocationCoordinateRange[2];
+    uint32_t              sampleLocationSubPixelBits;
+    VkBool32              variableSampleLocations;
+} VkPhysicalDeviceSampleLocationsPropertiesEXT;
+
+typedef struct VkMultisamplePropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkExtent2D         maxSampleLocationGridSize;
+} VkMultisamplePropertiesEXT;
+
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
+    VkPhysicalDevice                            physicalDevice,
+    VkSampleCountFlagBits                       samples,
+    VkMultisamplePropertiesEXT*                 pMultisampleProperties);
+#endif
+
+#define VK_EXT_blend_operation_advanced 1
+#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
+#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
+
+
+typedef enum VkBlendOverlapEXT {
+    VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
+    VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
+    VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
+    VK_BLEND_OVERLAP_BEGIN_RANGE_EXT = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
+    VK_BLEND_OVERLAP_END_RANGE_EXT = VK_BLEND_OVERLAP_CONJOINT_EXT,
+    VK_BLEND_OVERLAP_RANGE_SIZE_EXT = (VK_BLEND_OVERLAP_CONJOINT_EXT - VK_BLEND_OVERLAP_UNCORRELATED_EXT + 1),
+    VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkBlendOverlapEXT;
+
+typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           advancedBlendCoherentOperations;
+} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
+
+typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           advancedBlendMaxColorAttachments;
+    VkBool32           advancedBlendIndependentBlend;
+    VkBool32           advancedBlendNonPremultipliedSrcColor;
+    VkBool32           advancedBlendNonPremultipliedDstColor;
+    VkBool32           advancedBlendCorrelatedOverlap;
+    VkBool32           advancedBlendAllOperations;
+} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
+
+typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkBool32             srcPremultiplied;
+    VkBool32             dstPremultiplied;
+    VkBlendOverlapEXT    blendOverlap;
+} VkPipelineColorBlendAdvancedStateCreateInfoEXT;
+
+
+
+#define VK_NV_fragment_coverage_to_color 1
+#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
+#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
+
+typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
+
+typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
+    VkStructureType                                sType;
+    const void*                                    pNext;
+    VkPipelineCoverageToColorStateCreateFlagsNV    flags;
+    VkBool32                                       coverageToColorEnable;
+    uint32_t                                       coverageToColorLocation;
+} VkPipelineCoverageToColorStateCreateInfoNV;
+
+
+
+#define VK_NV_framebuffer_mixed_samples 1
+#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
+#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
+
+
+typedef enum VkCoverageModulationModeNV {
+    VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
+    VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
+    VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
+    VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
+    VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_MODULATION_MODE_NONE_NV,
+    VK_COVERAGE_MODULATION_MODE_END_RANGE_NV = VK_COVERAGE_MODULATION_MODE_RGBA_NV,
+    VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_MODULATION_MODE_RGBA_NV - VK_COVERAGE_MODULATION_MODE_NONE_NV + 1),
+    VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkCoverageModulationModeNV;
+
+typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
+
+typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
+    VkStructureType                                   sType;
+    const void*                                       pNext;
+    VkPipelineCoverageModulationStateCreateFlagsNV    flags;
+    VkCoverageModulationModeNV                        coverageModulationMode;
+    VkBool32                                          coverageModulationTableEnable;
+    uint32_t                                          coverageModulationTableCount;
+    const float*                                      pCoverageModulationTable;
+} VkPipelineCoverageModulationStateCreateInfoNV;
+
+
+
+#define VK_NV_fill_rectangle 1
+#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
+#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
+
+
+#define VK_EXT_post_depth_coverage 1
+#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
+#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
+
+
+#define VK_EXT_validation_cache 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
+
+#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
+#define VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
+
+
+typedef enum VkValidationCacheHeaderVersionEXT {
+    VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
+    VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
+    VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
+    VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1),
+    VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkValidationCacheHeaderVersionEXT;
+
+typedef VkFlags VkValidationCacheCreateFlagsEXT;
+
+typedef struct VkValidationCacheCreateInfoEXT {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkValidationCacheCreateFlagsEXT    flags;
+    size_t                             initialDataSize;
+    const void*                        pInitialData;
+} VkValidationCacheCreateInfoEXT;
+
+typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkValidationCacheEXT    validationCache;
+} VkShaderModuleValidationCacheCreateInfoEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
+typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
+typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
+    VkDevice                                    device,
+    const VkValidationCacheCreateInfoEXT*       pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkValidationCacheEXT*                       pValidationCache);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
+    VkDevice                                    device,
+    VkValidationCacheEXT                        validationCache,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
+    VkDevice                                    device,
+    VkValidationCacheEXT                        dstCache,
+    uint32_t                                    srcCacheCount,
+    const VkValidationCacheEXT*                 pSrcCaches);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
+    VkDevice                                    device,
+    VkValidationCacheEXT                        validationCache,
+    size_t*                                     pDataSize,
+    void*                                       pData);
+#endif
+
+#define VK_EXT_shader_viewport_index_layer 1
+#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
+#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
+
+
+#define VK_EXT_global_priority 1
+#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
+#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
+
+
+typedef enum VkQueueGlobalPriorityEXT {
+    VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
+    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
+    VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
+    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
+    VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
+    VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT,
+    VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1),
+    VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkQueueGlobalPriorityEXT;
+
+typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkQueueGlobalPriorityEXT    globalPriority;
+} VkDeviceQueueGlobalPriorityCreateInfoEXT;
+
+
+
+#define VK_EXT_external_memory_host 1
+#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
+#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
+
+typedef struct VkImportMemoryHostPointerInfoEXT {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+    void*                                 pHostPointer;
+} VkImportMemoryHostPointerInfoEXT;
+
+typedef struct VkMemoryHostPointerPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           memoryTypeBits;
+} VkMemoryHostPointerPropertiesEXT;
+
+typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkDeviceSize       minImportedHostPointerAlignment;
+} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
+    VkDevice                                    device,
+    VkExternalMemoryHandleTypeFlagBits          handleType,
+    const void*                                 pHostPointer,
+    VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
+#endif
+
+#define VK_AMD_buffer_marker 1
+#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
+#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker"
+
+typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineStageFlagBits                     pipelineStage,
+    VkBuffer                                    dstBuffer,
+    VkDeviceSize                                dstOffset,
+    uint32_t                                    marker);
+#endif
+
+#define VK_EXT_vertex_attribute_divisor 1
+#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 1
+#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
+
+typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxVertexAttribDivisor;
+} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
+
+typedef struct VkVertexInputBindingDivisorDescriptionEXT {
+    uint32_t    binding;
+    uint32_t    divisor;
+} VkVertexInputBindingDivisorDescriptionEXT;
+
+typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
+    VkStructureType                                     sType;
+    const void*                                         pNext;
+    uint32_t                                            vertexBindingDivisorCount;
+    const VkVertexInputBindingDivisorDescriptionEXT*    pVertexBindingDivisors;
+} VkPipelineVertexInputDivisorStateCreateInfoEXT;
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_ios.h b/include/vulkan/vulkan_ios.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_ios.h
@@ -0,0 +1,58 @@
+#ifndef VULKAN_IOS_H_
+#define VULKAN_IOS_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_MVK_ios_surface 1
+#define VK_MVK_IOS_SURFACE_SPEC_VERSION   2
+#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
+
+typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
+
+typedef struct VkIOSSurfaceCreateInfoMVK {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkIOSSurfaceCreateFlagsMVK    flags;
+    const void*                   pView;
+} VkIOSSurfaceCreateInfoMVK;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
+    VkInstance                                  instance,
+    const VkIOSSurfaceCreateInfoMVK*            pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_macos.h b/include/vulkan/vulkan_macos.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_macos.h
@@ -0,0 +1,58 @@
+#ifndef VULKAN_MACOS_H_
+#define VULKAN_MACOS_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_MVK_macos_surface 1
+#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2
+#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
+
+typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
+
+typedef struct VkMacOSSurfaceCreateInfoMVK {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkMacOSSurfaceCreateFlagsMVK    flags;
+    const void*                     pView;
+} VkMacOSSurfaceCreateInfoMVK;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
+    VkInstance                                  instance,
+    const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_mir.h b/include/vulkan/vulkan_mir.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_mir.h
@@ -0,0 +1,65 @@
+#ifndef VULKAN_MIR_H_
+#define VULKAN_MIR_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_KHR_mir_surface 1
+#define VK_KHR_MIR_SURFACE_SPEC_VERSION   4
+#define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
+
+typedef VkFlags VkMirSurfaceCreateFlagsKHR;
+
+typedef struct VkMirSurfaceCreateInfoKHR {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkMirSurfaceCreateFlagsKHR    flags;
+    MirConnection*                connection;
+    MirSurface*                   mirSurface;
+} VkMirSurfaceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
+    VkInstance                                  instance,
+    const VkMirSurfaceCreateInfoKHR*            pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex,
+    MirConnection*                              connection);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_vi.h b/include/vulkan/vulkan_vi.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_vi.h
@@ -0,0 +1,58 @@
+#ifndef VULKAN_VI_H_
+#define VULKAN_VI_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_NN_vi_surface 1
+#define VK_NN_VI_SURFACE_SPEC_VERSION     1
+#define VK_NN_VI_SURFACE_EXTENSION_NAME   "VK_NN_vi_surface"
+
+typedef VkFlags VkViSurfaceCreateFlagsNN;
+
+typedef struct VkViSurfaceCreateInfoNN {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkViSurfaceCreateFlagsNN    flags;
+    void*                       window;
+} VkViSurfaceCreateInfoNN;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
+    VkInstance                                  instance,
+    const VkViSurfaceCreateInfoNN*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_wayland.h b/include/vulkan/vulkan_wayland.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_wayland.h
@@ -0,0 +1,65 @@
+#ifndef VULKAN_WAYLAND_H_
+#define VULKAN_WAYLAND_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_KHR_wayland_surface 1
+#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
+#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
+
+typedef VkFlags VkWaylandSurfaceCreateFlagsKHR;
+
+typedef struct VkWaylandSurfaceCreateInfoKHR {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkWaylandSurfaceCreateFlagsKHR    flags;
+    struct wl_display*                display;
+    struct wl_surface*                surface;
+} VkWaylandSurfaceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
+    VkInstance                                  instance,
+    const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex,
+    struct wl_display*                          display);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_win32.h b/include/vulkan/vulkan_win32.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_win32.h
@@ -0,0 +1,276 @@
+#ifndef VULKAN_WIN32_H_
+#define VULKAN_WIN32_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_KHR_win32_surface 1
+#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
+#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
+
+typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
+
+typedef struct VkWin32SurfaceCreateInfoKHR {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkWin32SurfaceCreateFlagsKHR    flags;
+    HINSTANCE                       hinstance;
+    HWND                            hwnd;
+} VkWin32SurfaceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
+    VkInstance                                  instance,
+    const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex);
+#endif
+
+#define VK_KHR_external_memory_win32 1
+#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
+
+typedef struct VkImportMemoryWin32HandleInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+    HANDLE                                handle;
+    LPCWSTR                               name;
+} VkImportMemoryWin32HandleInfoKHR;
+
+typedef struct VkExportMemoryWin32HandleInfoKHR {
+    VkStructureType               sType;
+    const void*                   pNext;
+    const SECURITY_ATTRIBUTES*    pAttributes;
+    DWORD                         dwAccess;
+    LPCWSTR                       name;
+} VkExportMemoryWin32HandleInfoKHR;
+
+typedef struct VkMemoryWin32HandlePropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           memoryTypeBits;
+} VkMemoryWin32HandlePropertiesKHR;
+
+typedef struct VkMemoryGetWin32HandleInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkDeviceMemory                        memory;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+} VkMemoryGetWin32HandleInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
+    VkDevice                                    device,
+    const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
+    HANDLE*                                     pHandle);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
+    VkDevice                                    device,
+    VkExternalMemoryHandleTypeFlagBits          handleType,
+    HANDLE                                      handle,
+    VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties);
+#endif
+
+#define VK_KHR_win32_keyed_mutex 1
+#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
+#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
+
+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;
+
+
+
+#define VK_KHR_external_semaphore_win32 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
+
+typedef struct VkImportSemaphoreWin32HandleInfoKHR {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkSemaphore                              semaphore;
+    VkSemaphoreImportFlags                   flags;
+    VkExternalSemaphoreHandleTypeFlagBits    handleType;
+    HANDLE                                   handle;
+    LPCWSTR                                  name;
+} VkImportSemaphoreWin32HandleInfoKHR;
+
+typedef struct VkExportSemaphoreWin32HandleInfoKHR {
+    VkStructureType               sType;
+    const void*                   pNext;
+    const SECURITY_ATTRIBUTES*    pAttributes;
+    DWORD                         dwAccess;
+    LPCWSTR                       name;
+} VkExportSemaphoreWin32HandleInfoKHR;
+
+typedef struct VkD3D12FenceSubmitInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           waitSemaphoreValuesCount;
+    const uint64_t*    pWaitSemaphoreValues;
+    uint32_t           signalSemaphoreValuesCount;
+    const uint64_t*    pSignalSemaphoreValues;
+} VkD3D12FenceSubmitInfoKHR;
+
+typedef struct VkSemaphoreGetWin32HandleInfoKHR {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkSemaphore                              semaphore;
+    VkExternalSemaphoreHandleTypeFlagBits    handleType;
+} VkSemaphoreGetWin32HandleInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
+    VkDevice                                    device,
+    const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
+    VkDevice                                    device,
+    const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
+    HANDLE*                                     pHandle);
+#endif
+
+#define VK_KHR_external_fence_win32 1
+#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
+
+typedef struct VkImportFenceWin32HandleInfoKHR {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkFence                              fence;
+    VkFenceImportFlags                   flags;
+    VkExternalFenceHandleTypeFlagBits    handleType;
+    HANDLE                               handle;
+    LPCWSTR                              name;
+} VkImportFenceWin32HandleInfoKHR;
+
+typedef struct VkExportFenceWin32HandleInfoKHR {
+    VkStructureType               sType;
+    const void*                   pNext;
+    const SECURITY_ATTRIBUTES*    pAttributes;
+    DWORD                         dwAccess;
+    LPCWSTR                       name;
+} VkExportFenceWin32HandleInfoKHR;
+
+typedef struct VkFenceGetWin32HandleInfoKHR {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkFence                              fence;
+    VkExternalFenceHandleTypeFlagBits    handleType;
+} VkFenceGetWin32HandleInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
+    VkDevice                                    device,
+    const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
+    VkDevice                                    device,
+    const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
+    HANDLE*                                     pHandle);
+#endif
+
+#define VK_NV_external_memory_win32 1
+#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
+
+typedef struct VkImportMemoryWin32HandleInfoNV {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkExternalMemoryHandleTypeFlagsNV    handleType;
+    HANDLE                               handle;
+} VkImportMemoryWin32HandleInfoNV;
+
+typedef struct VkExportMemoryWin32HandleInfoNV {
+    VkStructureType               sType;
+    const void*                   pNext;
+    const SECURITY_ATTRIBUTES*    pAttributes;
+    DWORD                         dwAccess;
+} VkExportMemoryWin32HandleInfoNV;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
+    VkDevice                                    device,
+    VkDeviceMemory                              memory,
+    VkExternalMemoryHandleTypeFlagsNV           handleType,
+    HANDLE*                                     pHandle);
+#endif
+
+#define VK_NV_win32_keyed_mutex 1
+#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
+#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
+
+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;
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_xcb.h b/include/vulkan/vulkan_xcb.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_xcb.h
@@ -0,0 +1,66 @@
+#ifndef VULKAN_XCB_H_
+#define VULKAN_XCB_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_KHR_xcb_surface 1
+#define VK_KHR_XCB_SURFACE_SPEC_VERSION   6
+#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
+
+typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
+
+typedef struct VkXcbSurfaceCreateInfoKHR {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkXcbSurfaceCreateFlagsKHR    flags;
+    xcb_connection_t*             connection;
+    xcb_window_t                  window;
+} VkXcbSurfaceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
+    VkInstance                                  instance,
+    const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex,
+    xcb_connection_t*                           connection,
+    xcb_visualid_t                              visual_id);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_xlib.h b/include/vulkan/vulkan_xlib.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_xlib.h
@@ -0,0 +1,66 @@
+#ifndef VULKAN_XLIB_H_
+#define VULKAN_XLIB_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_KHR_xlib_surface 1
+#define VK_KHR_XLIB_SURFACE_SPEC_VERSION  6
+#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
+
+typedef VkFlags VkXlibSurfaceCreateFlagsKHR;
+
+typedef struct VkXlibSurfaceCreateInfoKHR {
+    VkStructureType                sType;
+    const void*                    pNext;
+    VkXlibSurfaceCreateFlagsKHR    flags;
+    Display*                       dpy;
+    Window                         window;
+} VkXlibSurfaceCreateInfoKHR;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
+    VkInstance                                  instance,
+    const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSurfaceKHR*                               pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex,
+    Display*                                    dpy,
+    VisualID                                    visualID);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/vulkan/vulkan_xlib_xrandr.h b/include/vulkan/vulkan_xlib_xrandr.h
new file mode 100644
--- /dev/null
+++ b/include/vulkan/vulkan_xlib_xrandr.h
@@ -0,0 +1,54 @@
+#ifndef VULKAN_XLIB_XRANDR_H_
+#define VULKAN_XLIB_XRANDR_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2015-2018 The Khronos Group Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#define VK_EXT_acquire_xlib_display 1
+#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
+#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
+
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
+typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
+    VkPhysicalDevice                            physicalDevice,
+    Display*                                    dpy,
+    VkDisplayKHR                                display);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT(
+    VkPhysicalDevice                            physicalDevice,
+    Display*                                    dpy,
+    RROutput                                    rrOutput,
+    VkDisplayKHR*                               pDisplay);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src-gen/Graphics/Vulkan/Constants.hs b/src-gen/Graphics/Vulkan/Constants.hs
--- a/src-gen/Graphics/Vulkan/Constants.hs
+++ b/src-gen/Graphics/Vulkan/Constants.hs
@@ -1,25 +1,28 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE Strict          #-}
 module Graphics.Vulkan.Constants
        (VK_MAX_PHYSICAL_DEVICE_NAME_SIZE,
         pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE, VK_UUID_SIZE,
-        pattern VK_UUID_SIZE, VK_LUID_SIZE_KHR, pattern VK_LUID_SIZE_KHR,
-        VK_MAX_EXTENSION_NAME_SIZE, pattern VK_MAX_EXTENSION_NAME_SIZE,
-        VK_MAX_DESCRIPTION_SIZE, pattern VK_MAX_DESCRIPTION_SIZE,
-        VK_MAX_MEMORY_TYPES, pattern VK_MAX_MEMORY_TYPES,
-        VK_MAX_MEMORY_HEAPS, pattern VK_MAX_MEMORY_HEAPS,
-        pattern VK_LOD_CLAMP_NONE, VK_REMAINING_MIP_LEVELS,
-        pattern VK_REMAINING_MIP_LEVELS, VK_REMAINING_ARRAY_LAYERS,
-        pattern VK_REMAINING_ARRAY_LAYERS, VK_WHOLE_SIZE,
-        pattern VK_WHOLE_SIZE, VK_ATTACHMENT_UNUSED,
+        pattern VK_UUID_SIZE, VK_LUID_SIZE, pattern VK_LUID_SIZE,
+        pattern VK_LUID_SIZE_KHR, VK_MAX_EXTENSION_NAME_SIZE,
+        pattern VK_MAX_EXTENSION_NAME_SIZE, VK_MAX_DESCRIPTION_SIZE,
+        pattern VK_MAX_DESCRIPTION_SIZE, VK_MAX_MEMORY_TYPES,
+        pattern VK_MAX_MEMORY_TYPES, VK_MAX_MEMORY_HEAPS,
+        pattern VK_MAX_MEMORY_HEAPS, pattern VK_LOD_CLAMP_NONE,
+        VK_REMAINING_MIP_LEVELS, pattern VK_REMAINING_MIP_LEVELS,
+        VK_REMAINING_ARRAY_LAYERS, pattern VK_REMAINING_ARRAY_LAYERS,
+        VK_WHOLE_SIZE, pattern VK_WHOLE_SIZE, VK_ATTACHMENT_UNUSED,
         pattern VK_ATTACHMENT_UNUSED, VK_TRUE, pattern VK_TRUE, VK_FALSE,
         pattern VK_FALSE, VK_QUEUE_FAMILY_IGNORED,
-        pattern VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_EXTERNAL_KHR,
+        pattern VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_EXTERNAL,
+        pattern VK_QUEUE_FAMILY_EXTERNAL,
         pattern VK_QUEUE_FAMILY_EXTERNAL_KHR, VK_QUEUE_FAMILY_FOREIGN_EXT,
         pattern VK_QUEUE_FAMILY_FOREIGN_EXT, VK_SUBPASS_EXTERNAL,
-        pattern VK_SUBPASS_EXTERNAL, VK_MAX_DEVICE_GROUP_SIZE_KHX,
-        pattern VK_MAX_DEVICE_GROUP_SIZE_KHX)
+        pattern VK_SUBPASS_EXTERNAL, VK_MAX_DEVICE_GROUP_SIZE,
+        pattern VK_MAX_DEVICE_GROUP_SIZE,
+        pattern VK_MAX_DEVICE_GROUP_SIZE_KHR)
        where
 import           Graphics.Vulkan.Marshal
 
@@ -35,12 +38,14 @@
 
 type VK_UUID_SIZE = 16
 
-pattern VK_LUID_SIZE_KHR :: (Num a, Eq a) => a
+pattern VK_LUID_SIZE :: (Num a, Eq a) => a
 
-pattern VK_LUID_SIZE_KHR = 8
+pattern VK_LUID_SIZE = 8
 
-type VK_LUID_SIZE_KHR = 8
+type VK_LUID_SIZE = 8
 
+pattern VK_LUID_SIZE_KHR = VK_LUID_SIZE
+
 pattern VK_MAX_EXTENSION_NAME_SIZE :: (Num a, Eq a) => a
 
 pattern VK_MAX_EXTENSION_NAME_SIZE = 256
@@ -112,12 +117,14 @@
 
 type VK_QUEUE_FAMILY_IGNORED = 4294967295
 
-pattern VK_QUEUE_FAMILY_EXTERNAL_KHR :: Word32
+pattern VK_QUEUE_FAMILY_EXTERNAL :: Word32
 
-pattern VK_QUEUE_FAMILY_EXTERNAL_KHR = 4294967294
+pattern VK_QUEUE_FAMILY_EXTERNAL = 4294967294
 
-type VK_QUEUE_FAMILY_EXTERNAL_KHR = 4294967294
+type VK_QUEUE_FAMILY_EXTERNAL = 4294967294
 
+pattern VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL
+
 pattern VK_QUEUE_FAMILY_FOREIGN_EXT :: Word32
 
 pattern VK_QUEUE_FAMILY_FOREIGN_EXT = 4294967293
@@ -130,8 +137,10 @@
 
 type VK_SUBPASS_EXTERNAL = 4294967295
 
-pattern VK_MAX_DEVICE_GROUP_SIZE_KHX :: (Num a, Eq a) => a
+pattern VK_MAX_DEVICE_GROUP_SIZE :: (Num a, Eq a) => a
 
-pattern VK_MAX_DEVICE_GROUP_SIZE_KHX = 32
+pattern VK_MAX_DEVICE_GROUP_SIZE = 32
 
-type VK_MAX_DEVICE_GROUP_SIZE_KHX = 32
+type VK_MAX_DEVICE_GROUP_SIZE = 32
+
+pattern VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE
diff --git a/src-gen/Graphics/Vulkan/Core.hsc b/src-gen/Graphics/Vulkan/Core.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Core.hsc
+++ /dev/null
@@ -1,3186 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-{-# OPTIONS_HADDOCK not-home#-}
-{-# LANGUAGE DataKinds                #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE PatternSynonyms          #-}
-{-# LANGUAGE Strict                   #-}
-module Graphics.Vulkan.Core
-       (-- * Vulkan core API interface definitions
-        -- |
-        --
-        -- @api = vulkan@
-        --
-        -- @name = VK_VERSION_1_0@
-        --
-        -- @number = 1.0@
-        --
-
-        -- ** Header boilerplate
-        --
-        -- |
-        -- > ##include "vk_platform.h"
-        --
-
-        -- ** API version
-        --
-
-        -- ** API constants
-        module Graphics.Vulkan.Types.Enum.VkPipelineCacheHeaderVersion,
-        pattern VK_LOD_CLAMP_NONE, pattern VK_REMAINING_MIP_LEVELS,
-        VK_REMAINING_MIP_LEVELS, pattern VK_REMAINING_ARRAY_LAYERS,
-        VK_REMAINING_ARRAY_LAYERS, pattern VK_WHOLE_SIZE, VK_WHOLE_SIZE,
-        pattern VK_ATTACHMENT_UNUSED, VK_ATTACHMENT_UNUSED,
-        pattern VK_TRUE, VK_TRUE, pattern VK_FALSE, VK_FALSE,
-        pattern VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
-        pattern VK_SUBPASS_EXTERNAL, VK_SUBPASS_EXTERNAL, -- ** Device initialization
-                                                          vkCreateInstance,
-        vkDestroyInstance, vkEnumeratePhysicalDevices,
-        vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceFormatProperties,
-        vkGetPhysicalDeviceImageFormatProperties,
-        vkGetPhysicalDeviceProperties,
-        vkGetPhysicalDeviceQueueFamilyProperties,
-        vkGetPhysicalDeviceMemoryProperties, vkGetInstanceProcAddr,
-        vkGetDeviceProcAddr, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags,
-        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkImageTiling,
-        module Graphics.Vulkan.Types.Enum.VkImageType,
-        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
-        module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags,
-        module Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.VkQueueFlags,
-        module Graphics.Vulkan.Types.Enum.VkResult,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.VkApplicationInfo,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
-        module Graphics.Vulkan.Types.Struct.VkFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkMemoryHeap,
-        module Graphics.Vulkan.Types.Struct.VkMemoryType,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties,
-        -- ** Device commands
-        vkCreateDevice, vkDestroyDevice,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
-        -- ** Extension discovery commands
-        vkEnumerateInstanceExtensionProperties,
-        vkEnumerateDeviceExtensionProperties,
-        module Graphics.Vulkan.Types.Struct.VkExtensionProperties,
-        -- ** Layer discovery commands
-        vkEnumerateInstanceLayerProperties,
-        vkEnumerateDeviceLayerProperties,
-        module Graphics.Vulkan.Types.Struct.VkLayerProperties,
-        -- ** queue commands
-        vkGetDeviceQueue, vkQueueSubmit, vkQueueWaitIdle, vkDeviceWaitIdle,
-        module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
-        module Graphics.Vulkan.Types.Struct.VkSubmitInfo, -- ** Memory commands
-                                                          vkAllocateMemory,
-        vkFreeMemory, vkMapMemory, vkUnmapMemory,
-        vkFlushMappedMemoryRanges, vkInvalidateMappedMemoryRanges,
-        vkGetDeviceMemoryCommitment,
-        module Graphics.Vulkan.Types.Struct.VkMappedMemoryRange,
-        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
-        -- ** Memory management API commands
-        vkBindBufferMemory, vkBindImageMemory,
-        vkGetBufferMemoryRequirements, vkGetImageMemoryRequirements,
-        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements,
-        -- ** Sparse resource memory management API commands
-        vkGetImageSparseMemoryRequirements,
-        vkGetPhysicalDeviceSparseImageFormatProperties, vkQueueBindSparse,
-        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
-        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
-        module Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags,
-        module Graphics.Vulkan.Types.Struct.VkBindSparseInfo,
-        module Graphics.Vulkan.Types.Struct.VkImageSubresource,
-        module Graphics.Vulkan.Types.Struct.VkOffset3D,
-        module Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseMemoryBind,
-        -- ** Fence commands
-        vkCreateFence, vkDestroyFence, vkResetFences, vkGetFenceStatus,
-        vkWaitForFences,
-        module Graphics.Vulkan.Types.Enum.VkFenceCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkFenceCreateInfo,
-        -- ** Queue semaphore commands
-        vkCreateSemaphore, vkDestroySemaphore,
-        module Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo,
-        -- ** Event commands
-        vkCreateEvent, vkDestroyEvent, vkGetEventStatus, vkSetEvent,
-        vkResetEvent,
-        module Graphics.Vulkan.Types.Struct.VkEventCreateInfo,
-        -- ** Query commands
-        vkCreateQueryPool, vkDestroyQueryPool, vkGetQueryPoolResults,
-        module Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags,
-        module Graphics.Vulkan.Types.Enum.VkQueryResultFlags,
-        module Graphics.Vulkan.Types.Enum.VkQueryType,
-        module Graphics.Vulkan.Types.Struct.VkQueryPoolCreateInfo,
-        -- ** Buffer commands
-        vkCreateBuffer, vkDestroyBuffer,
-        module Graphics.Vulkan.Types.Enum.VkBufferCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkBufferUsageFlags,
-        module Graphics.Vulkan.Types.Enum.VkSharingMode,
-        module Graphics.Vulkan.Types.Struct.VkBufferCreateInfo,
-        -- ** Buffer view commands
-        vkCreateBufferView, vkDestroyBufferView,
-        module Graphics.Vulkan.Types.Struct.VkBufferViewCreateInfo,
-        -- ** Image commands
-        vkCreateImage, vkDestroyImage, vkGetImageSubresourceLayout,
-        module Graphics.Vulkan.Types.Enum.VkImageLayout,
-        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkSubresourceLayout,
-        -- ** Image view commands
-        vkCreateImageView, vkDestroyImageView,
-        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
-        module Graphics.Vulkan.Types.Enum.VkImageViewType,
-        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
-        module Graphics.Vulkan.Types.Struct.VkImageSubresourceRange,
-        module Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo,
-        -- ** Shader commands
-        vkCreateShaderModule, vkDestroyShaderModule,
-        module Graphics.Vulkan.Types.Struct.VkShaderModuleCreateInfo,
-        -- ** Pipeline Cache commands
-        vkCreatePipelineCache, vkDestroyPipelineCache,
-        vkGetPipelineCacheData, vkMergePipelineCaches,
-        module Graphics.Vulkan.Types.Struct.VkPipelineCacheCreateInfo,
-        -- ** Pipeline commands
-        vkCreateGraphicsPipelines, vkCreateComputePipelines,
-        vkDestroyPipeline, module Graphics.Vulkan.Types.Enum.VkBlendFactor,
-        module Graphics.Vulkan.Types.Enum.VkBlendOp,
-        module Graphics.Vulkan.Types.Enum.VkColorComponentFlags,
-        module Graphics.Vulkan.Types.Enum.VkCompareOp,
-        module Graphics.Vulkan.Types.Enum.VkCullModeFlags,
-        module Graphics.Vulkan.Types.Enum.VkDynamicState,
-        module Graphics.Vulkan.Types.Enum.VkFrontFace,
-        module Graphics.Vulkan.Types.Enum.VkLogicOp,
-        module Graphics.Vulkan.Types.Enum.VkPipelineCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkPolygonMode,
-        module Graphics.Vulkan.Types.Enum.VkPrimitiveTopology,
-        module Graphics.Vulkan.Types.Enum.VkShaderStageFlags,
-        module Graphics.Vulkan.Types.Enum.VkStencilOp,
-        module Graphics.Vulkan.Types.Enum.VkVertexInputRate,
-        module Graphics.Vulkan.Types.Struct.VkComputePipelineCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkExtent2D,
-        module Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkOffset2D,
-        module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState,
-        module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineDepthStencilStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineDynamicStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineInputAssemblyStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkRect2D,
-        module Graphics.Vulkan.Types.Struct.VkSpecializationInfo,
-        module Graphics.Vulkan.Types.Struct.VkSpecializationMapEntry,
-        module Graphics.Vulkan.Types.Struct.VkStencilOpState,
-        module Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription,
-        module Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription,
-        module Graphics.Vulkan.Types.Struct.VkViewport,
-        -- ** Pipeline layout commands
-        vkCreatePipelineLayout, vkDestroyPipelineLayout,
-        module Graphics.Vulkan.Types.Struct.VkPipelineLayoutCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPushConstantRange,
-        -- ** Sampler commands
-        vkCreateSampler, vkDestroySampler,
-        module Graphics.Vulkan.Types.Enum.VkBorderColor,
-        module Graphics.Vulkan.Types.Enum.VkFilter,
-        module Graphics.Vulkan.Types.Enum.VkSamplerAddressMode,
-        module Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode,
-        module Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo,
-        -- ** Descriptor set commands
-        vkCreateDescriptorSetLayout, vkDestroyDescriptorSetLayout,
-        vkCreateDescriptorPool, vkDestroyDescriptorPool,
-        vkResetDescriptorPool, vkAllocateDescriptorSets,
-        vkFreeDescriptorSets, vkUpdateDescriptorSets,
-        module Graphics.Vulkan.Types.Enum.VkDescriptorPoolCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkDescriptorType,
-        module Graphics.Vulkan.Types.Struct.VkCopyDescriptorSet,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorBufferInfo,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorPoolCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorPoolSize,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorSetAllocateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding,
-        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet,
-        -- ** Pass commands
-        vkCreateFramebuffer, vkDestroyFramebuffer, vkCreateRenderPass,
-        vkDestroyRenderPass, vkGetRenderAreaGranularity,
-        module Graphics.Vulkan.Types.Enum.VkAccessFlags,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp,
-        module Graphics.Vulkan.Types.Enum.VkDependencyFlags,
-        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
-        module Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags,
-        module Graphics.Vulkan.Types.Struct.VkAttachmentDescription,
-        module Graphics.Vulkan.Types.Struct.VkAttachmentReference,
-        module Graphics.Vulkan.Types.Struct.VkFramebufferCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkSubpassDependency,
-        module Graphics.Vulkan.Types.Struct.VkSubpassDescription,
-        -- ** Command pool commands
-        vkCreateCommandPool, vkDestroyCommandPool, vkResetCommandPool,
-        module Graphics.Vulkan.Types.Enum.VkCommandPoolCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkCommandPoolResetFlags,
-        module Graphics.Vulkan.Types.Struct.VkCommandPoolCreateInfo,
-        -- ** Command buffer commands
-        vkAllocateCommandBuffers, vkFreeCommandBuffers,
-        vkBeginCommandBuffer, vkEndCommandBuffer, vkResetCommandBuffer,
-        module Graphics.Vulkan.Types.Enum.VkCommandBufferLevel,
-        module Graphics.Vulkan.Types.Enum.VkCommandBufferResetFlags,
-        module Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags,
-        module Graphics.Vulkan.Types.Enum.VkQueryControlFlags,
-        module Graphics.Vulkan.Types.Struct.VkCommandBufferAllocateInfo,
-        module Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo,
-        module Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo,
-        -- ** Command buffer building commands
-        vkCmdBindPipeline, vkCmdSetViewport, vkCmdSetScissor,
-        vkCmdSetLineWidth, vkCmdSetDepthBias, vkCmdSetBlendConstants,
-        vkCmdSetDepthBounds, vkCmdSetStencilCompareMask,
-        vkCmdSetStencilWriteMask, vkCmdSetStencilReference,
-        vkCmdBindDescriptorSets, vkCmdBindIndexBuffer,
-        vkCmdBindVertexBuffers, vkCmdDraw, vkCmdDrawIndexed,
-        vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch,
-        vkCmdDispatchIndirect, vkCmdCopyBuffer, vkCmdCopyImage,
-        vkCmdBlitImage, vkCmdCopyBufferToImage, vkCmdCopyImageToBuffer,
-        vkCmdUpdateBuffer, vkCmdFillBuffer, vkCmdClearColorImage,
-        vkCmdClearDepthStencilImage, vkCmdClearAttachments,
-        vkCmdResolveImage, vkCmdSetEvent, vkCmdResetEvent, vkCmdWaitEvents,
-        vkCmdPipelineBarrier, vkCmdBeginQuery, vkCmdEndQuery,
-        vkCmdResetQueryPool, vkCmdWriteTimestamp,
-        vkCmdCopyQueryPoolResults, vkCmdPushConstants,
-        vkCmdBeginRenderPass, vkCmdNextSubpass, vkCmdEndRenderPass,
-        vkCmdExecuteCommands,
-        module Graphics.Vulkan.Types.Enum.VkIndexType,
-        module Graphics.Vulkan.Types.Enum.VkStencilFaceFlags,
-        module Graphics.Vulkan.Types.Enum.VkSubpassContents,
-        module Graphics.Vulkan.Types.Struct.VkBufferCopy,
-        module Graphics.Vulkan.Types.Struct.VkBufferImageCopy,
-        module Graphics.Vulkan.Types.Struct.VkBufferMemoryBarrier,
-        module Graphics.Vulkan.Types.Struct.VkClearAttachment,
-        module Graphics.Vulkan.Types.Struct.VkClearColorValue,
-        module Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue,
-        module Graphics.Vulkan.Types.Struct.VkClearRect,
-        module Graphics.Vulkan.Types.Struct.VkClearValue,
-        module Graphics.Vulkan.Types.Struct.VkImageBlit,
-        module Graphics.Vulkan.Types.Struct.VkImageCopy,
-        module Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier,
-        module Graphics.Vulkan.Types.Struct.VkImageResolve,
-        module Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers,
-        module Graphics.Vulkan.Types.Struct.VkMemoryBarrier,
-        module Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo,
-        -- ** Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.
-        module Graphics.Vulkan.Types.Struct.VkDispatchIndirectCommand,
-        module Graphics.Vulkan.Types.Struct.VkDrawIndexedIndirectCommand,
-        module Graphics.Vulkan.Types.Struct.VkDrawIndirectCommand,
-        module Graphics.Vulkan.Types.Enum.VkObjectType)
-       where
-import           Graphics.Vulkan.Constants
-                                                                                      (VK_ATTACHMENT_UNUSED,
-                                                                                      pattern VK_ATTACHMENT_UNUSED,
-                                                                                      VK_FALSE,
-                                                                                      pattern VK_FALSE,
-                                                                                      pattern VK_LOD_CLAMP_NONE,
-                                                                                      VK_QUEUE_FAMILY_IGNORED,
-                                                                                      pattern VK_QUEUE_FAMILY_IGNORED,
-                                                                                      VK_REMAINING_ARRAY_LAYERS,
-                                                                                      pattern VK_REMAINING_ARRAY_LAYERS,
-                                                                                      VK_REMAINING_MIP_LEVELS,
-                                                                                      pattern VK_REMAINING_MIP_LEVELS,
-                                                                                      VK_SUBPASS_EXTERNAL,
-                                                                                      pattern VK_SUBPASS_EXTERNAL,
-                                                                                      VK_TRUE,
-                                                                                      pattern VK_TRUE,
-                                                                                      VK_WHOLE_SIZE,
-                                                                                      pattern VK_WHOLE_SIZE)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkAccessFlags
-import           Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags
-import           Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp
-import           Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp
-import           Graphics.Vulkan.Types.Enum.VkBlendFactor
-import           Graphics.Vulkan.Types.Enum.VkBlendOp
-import           Graphics.Vulkan.Types.Enum.VkBorderColor
-import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkColorComponentFlags
-import           Graphics.Vulkan.Types.Enum.VkCommandBufferLevel
-import           Graphics.Vulkan.Types.Enum.VkCommandBufferResetFlags
-import           Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkCommandPoolCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkCommandPoolResetFlags
-import           Graphics.Vulkan.Types.Enum.VkCompareOp
-import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle
-import           Graphics.Vulkan.Types.Enum.VkCullModeFlags
-import           Graphics.Vulkan.Types.Enum.VkDependencyFlags
-import           Graphics.Vulkan.Types.Enum.VkDescriptorPoolCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkDescriptorType
-import           Graphics.Vulkan.Types.Enum.VkDynamicState
-import           Graphics.Vulkan.Types.Enum.VkFenceCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkFilter
-import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
-import           Graphics.Vulkan.Types.Enum.VkFrontFace
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkImageLayout
-import           Graphics.Vulkan.Types.Enum.VkImageTiling
-import           Graphics.Vulkan.Types.Enum.VkImageType
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkImageViewType
-import           Graphics.Vulkan.Types.Enum.VkIndexType
-import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
-import           Graphics.Vulkan.Types.Enum.VkLogicOp
-import           Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags
-import           Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags
-import           Graphics.Vulkan.Types.Enum.VkObjectType
-import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
-import           Graphics.Vulkan.Types.Enum.VkPipelineCacheHeaderVersion
-import           Graphics.Vulkan.Types.Enum.VkPipelineCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
-import           Graphics.Vulkan.Types.Enum.VkPolygonMode
-import           Graphics.Vulkan.Types.Enum.VkPrimitiveTopology
-import           Graphics.Vulkan.Types.Enum.VkQueryControlFlags
-import           Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags
-import           Graphics.Vulkan.Types.Enum.VkQueryResultFlags
-import           Graphics.Vulkan.Types.Enum.VkQueryType
-import           Graphics.Vulkan.Types.Enum.VkQueueFlags
-import           Graphics.Vulkan.Types.Enum.VkResult
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
-import           Graphics.Vulkan.Types.Enum.VkSamplerAddressMode
-import           Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode
-import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags
-import           Graphics.Vulkan.Types.Enum.VkSharingMode
-import           Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags
-import           Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags
-import           Graphics.Vulkan.Types.Enum.VkStencilFaceFlags
-import           Graphics.Vulkan.Types.Enum.VkStencilOp
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Enum.VkSubpassContents
-import           Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags
-import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
-import           Graphics.Vulkan.Types.Enum.VkVertexInputRate
-import           Graphics.Vulkan.Types.Funcpointers
-import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
-import           Graphics.Vulkan.Types.Struct.VkApplicationInfo
-import           Graphics.Vulkan.Types.Struct.VkAttachmentDescription
-import           Graphics.Vulkan.Types.Struct.VkAttachmentReference
-import           Graphics.Vulkan.Types.Struct.VkBindSparseInfo
-import           Graphics.Vulkan.Types.Struct.VkBufferCopy
-import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkBufferImageCopy
-import           Graphics.Vulkan.Types.Struct.VkBufferMemoryBarrier
-import           Graphics.Vulkan.Types.Struct.VkBufferViewCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkClearAttachment
-import           Graphics.Vulkan.Types.Struct.VkClearColorValue
-import           Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue
-import           Graphics.Vulkan.Types.Struct.VkClearRect
-import           Graphics.Vulkan.Types.Struct.VkClearValue
-import           Graphics.Vulkan.Types.Struct.VkCommandBufferAllocateInfo
-import           Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo
-import           Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo
-import           Graphics.Vulkan.Types.Struct.VkCommandPoolCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkComponentMapping
-import           Graphics.Vulkan.Types.Struct.VkComputePipelineCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkCopyDescriptorSet
-import           Graphics.Vulkan.Types.Struct.VkDescriptorBufferInfo
-import           Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo
-import           Graphics.Vulkan.Types.Struct.VkDescriptorPoolCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDescriptorPoolSize
-import           Graphics.Vulkan.Types.Struct.VkDescriptorSetAllocateInfo
-import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding
-import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDispatchIndirectCommand
-import           Graphics.Vulkan.Types.Struct.VkDrawIndexedIndirectCommand
-import           Graphics.Vulkan.Types.Struct.VkDrawIndirectCommand
-import           Graphics.Vulkan.Types.Struct.VkEventCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkExtensionProperties
-import           Graphics.Vulkan.Types.Struct.VkExtent2D
-import           Graphics.Vulkan.Types.Struct.VkExtent3D
-import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkFormatProperties
-import           Graphics.Vulkan.Types.Struct.VkFramebufferCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkImageBlit
-import           Graphics.Vulkan.Types.Struct.VkImageCopy
-import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
-import           Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier
-import           Graphics.Vulkan.Types.Struct.VkImageResolve
-import           Graphics.Vulkan.Types.Struct.VkImageSubresource
-import           Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers
-import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
-import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkLayerProperties
-import           Graphics.Vulkan.Types.Struct.VkMappedMemoryRange
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
-import           Graphics.Vulkan.Types.Struct.VkMemoryBarrier
-import           Graphics.Vulkan.Types.Struct.VkMemoryHeap
-import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements
-import           Graphics.Vulkan.Types.Struct.VkMemoryType
-import           Graphics.Vulkan.Types.Struct.VkOffset2D
-import           Graphics.Vulkan.Types.Struct.VkOffset3D
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
-import           Graphics.Vulkan.Types.Struct.VkPipelineCacheCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
-import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineDepthStencilStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineDynamicStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineInputAssemblyStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineLayoutCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPushConstantRange
-import           Graphics.Vulkan.Types.Struct.VkQueryPoolCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties
-import           Graphics.Vulkan.Types.Struct.VkRect2D
-import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo
-import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkShaderModuleCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
-import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind
-import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements
-import           Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseMemoryBind
-import           Graphics.Vulkan.Types.Struct.VkSpecializationInfo
-import           Graphics.Vulkan.Types.Struct.VkSpecializationMapEntry
-import           Graphics.Vulkan.Types.Struct.VkStencilOpState
-import           Graphics.Vulkan.Types.Struct.VkSubmitInfo
-import           Graphics.Vulkan.Types.Struct.VkSubpassDependency
-import           Graphics.Vulkan.Types.Struct.VkSubpassDescription
-import           Graphics.Vulkan.Types.Struct.VkSubresourceLayout
-import           Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription
-import           Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription
-import           Graphics.Vulkan.Types.Struct.VkViewport
-import           Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet
-
--- | 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.0-extensions/man/html/vkCreateInstance.html vkCreateInstance registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateInstance" vkCreateInstance ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
--- | > () vkDestroyInstance
---   >     ( VkInstance instance
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyInstance.html vkDestroyInstance registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyInstance" vkDestroyInstance
-               :: VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
--- | 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.0-extensions/man/html/vkEnumeratePhysicalDevices.html vkEnumeratePhysicalDevices registry at www.khronos.org>
-foreign import ccall unsafe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevices ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
--- | > () vkGetPhysicalDeviceFeatures
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceFeatures.html vkGetPhysicalDeviceFeatures registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeatures ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
--- | > () vkGetPhysicalDeviceFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
--- | 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.0-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties.html vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
--- | > () vkGetPhysicalDeviceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceProperties.html vkGetPhysicalDeviceProperties registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDeviceProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
--- | > () vkGetPhysicalDeviceQueueFamilyProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
--- | > () vkGetPhysicalDeviceMemoryProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
--- | > PFN_vkVoidFunction vkGetInstanceProcAddr
---   >     ( VkInstance instance
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetInstanceProcAddr.html vkGetInstanceProcAddr registry at www.khronos.org>
-foreign import ccall unsafe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddr ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
--- | > PFN_vkVoidFunction vkGetDeviceProcAddr
---   >     ( VkDevice device
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDeviceProcAddr.html vkGetDeviceProcAddr registry at www.khronos.org>
-foreign import ccall unsafe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddr :: VkDevice -- ^ device
-                                               -> CString -- ^ pName
-                                                          -> IO PFN_vkVoidFunction
-
--- | 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.0-extensions/man/html/vkCreateDevice.html vkCreateDevice registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateDevice" vkCreateDevice ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
--- | > () vkDestroyDevice
---   >     ( VkDevice device
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyDevice.html vkDestroyDevice registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyDevice" vkDestroyDevice ::
-               VkDevice -- ^ device
-                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> IO ()
-
--- | 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.0-extensions/man/html/vkEnumerateInstanceExtensionProperties.html vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionProperties ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
--- | 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.0-extensions/man/html/vkEnumerateDeviceExtensionProperties.html vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
-foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
--- | 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.0-extensions/man/html/vkEnumerateInstanceLayerProperties.html vkEnumerateInstanceLayerProperties registry at www.khronos.org>
-foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerProperties ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
--- | 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.0-extensions/man/html/vkEnumerateDeviceLayerProperties.html vkEnumerateDeviceLayerProperties registry at www.khronos.org>
-foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
--- | > () vkGetDeviceQueue
---   >     ( VkDevice device
---   >     , uint32_t queueFamilyIndex
---   >     , uint32_t queueIndex
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDeviceQueue.html vkGetDeviceQueue registry at www.khronos.org>
-foreign import ccall unsafe "vkGetDeviceQueue" vkGetDeviceQueue ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ queueFamilyIndex
-                                  -> Word32 -- ^ queueIndex
-                                            -> Ptr VkQueue -- ^ pQueue
-                                                           -> IO ()
-
--- | 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.0-extensions/man/html/vkQueueSubmit.html vkQueueSubmit registry at www.khronos.org>
-foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmit ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
--- | 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.0-extensions/man/html/vkQueueWaitIdle.html vkQueueWaitIdle registry at www.khronos.org>
-foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdle ::
-               VkQueue -- ^ queue
-                       -> IO VkResult
-
--- | 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.0-extensions/man/html/vkDeviceWaitIdle.html vkDeviceWaitIdle registry at www.khronos.org>
-foreign import ccall unsafe "vkDeviceWaitIdle" vkDeviceWaitIdle ::
-               VkDevice -- ^ device
-                        -> IO VkResult
-
--- | 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_KHR'.
---
---   > VkResult vkAllocateMemory
---   >     ( VkDevice device
---   >     , const VkMemoryAllocateInfo* pAllocateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDeviceMemory* pMemory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkAllocateMemory.html vkAllocateMemory registry at www.khronos.org>
-foreign import ccall unsafe "vkAllocateMemory" vkAllocateMemory ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
--- | > () vkFreeMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkFreeMemory.html vkFreeMemory registry at www.khronos.org>
-foreign import ccall unsafe "vkFreeMemory" vkFreeMemory ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
--- | 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.0-extensions/man/html/vkMapMemory.html vkMapMemory registry at www.khronos.org>
-foreign import ccall unsafe "vkMapMemory" vkMapMemory ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
--- | > () vkUnmapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkUnmapMemory.html vkUnmapMemory registry at www.khronos.org>
-foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemory ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
--- | 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.0-extensions/man/html/vkFlushMappedMemoryRanges.html vkFlushMappedMemoryRanges registry at www.khronos.org>
-foreign import ccall unsafe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRanges ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
--- | 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.0-extensions/man/html/vkInvalidateMappedMemoryRanges.html vkInvalidateMappedMemoryRanges registry at www.khronos.org>
-foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRanges ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
--- | > () vkGetDeviceMemoryCommitment
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize* pCommittedMemoryInBytes
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDeviceMemoryCommitment.html vkGetDeviceMemoryCommitment registry at www.khronos.org>
-foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitment ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
--- | 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.0-extensions/man/html/vkBindBufferMemory.html vkBindBufferMemory registry at www.khronos.org>
-foreign import ccall unsafe "vkBindBufferMemory" vkBindBufferMemory
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
--- | 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.0-extensions/man/html/vkBindImageMemory.html vkBindImageMemory registry at www.khronos.org>
-foreign import ccall unsafe "vkBindImageMemory" vkBindImageMemory
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
--- | > () vkGetBufferMemoryRequirements
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetBufferMemoryRequirements.html vkGetBufferMemoryRequirements registry at www.khronos.org>
-foreign import ccall unsafe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirements ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
--- | > () vkGetImageMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetImageMemoryRequirements.html vkGetImageMemoryRequirements registry at www.khronos.org>
-foreign import ccall unsafe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirements ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
--- | > () vkGetImageSparseMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetImageSparseMemoryRequirements.html vkGetImageSparseMemoryRequirements registry at www.khronos.org>
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirements ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
--- | > () 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.0-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
--- | 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.0-extensions/man/html/vkQueueBindSparse.html vkQueueBindSparse registry at www.khronos.org>
-foreign import ccall unsafe "vkQueueBindSparse" vkQueueBindSparse
-               ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
--- | 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.0-extensions/man/html/vkCreateFence.html vkCreateFence registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateFence" vkCreateFence ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
--- | > () vkDestroyFence
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyFence.html vkDestroyFence registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyFence" vkDestroyFence ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
--- | 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.0-extensions/man/html/vkResetFences.html vkResetFences registry at www.khronos.org>
-foreign import ccall unsafe "vkResetFences" vkResetFences ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
--- | 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.0-extensions/man/html/vkGetFenceStatus.html vkGetFenceStatus registry at www.khronos.org>
-foreign import ccall unsafe "vkGetFenceStatus" vkGetFenceStatus ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> IO VkResult
-
--- | 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.0-extensions/man/html/vkWaitForFences.html vkWaitForFences registry at www.khronos.org>
-foreign import ccall unsafe "vkWaitForFences" vkWaitForFences ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
--- | 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.0-extensions/man/html/vkCreateSemaphore.html vkCreateSemaphore registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateSemaphore" vkCreateSemaphore
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
--- | > () vkDestroySemaphore
---   >     ( VkDevice device
---   >     , VkSemaphore semaphore
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroySemaphore.html vkDestroySemaphore registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroySemaphore" vkDestroySemaphore
-               :: VkDevice -- ^ device
-                           -> VkSemaphore -- ^ semaphore
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateEvent.html vkCreateEvent registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateEvent" vkCreateEvent ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
--- | > () vkDestroyEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyEvent.html vkDestroyEvent registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyEvent" vkDestroyEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
--- | 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.0-extensions/man/html/vkGetEventStatus.html vkGetEventStatus registry at www.khronos.org>
-foreign import ccall unsafe "vkGetEventStatus" vkGetEventStatus ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
--- | 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.0-extensions/man/html/vkSetEvent.html vkSetEvent registry at www.khronos.org>
-foreign import ccall unsafe "vkSetEvent" vkSetEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
--- | 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.0-extensions/man/html/vkResetEvent.html vkResetEvent registry at www.khronos.org>
-foreign import ccall unsafe "vkResetEvent" vkResetEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
--- | 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.0-extensions/man/html/vkCreateQueryPool.html vkCreateQueryPool registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateQueryPool" vkCreateQueryPool
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
--- | > () vkDestroyQueryPool
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyQueryPool.html vkDestroyQueryPool registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyQueryPool" vkDestroyQueryPool
-               :: VkDevice -- ^ device
-                           -> VkQueryPool -- ^ queryPool
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
--- | 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.0-extensions/man/html/vkGetQueryPoolResults.html vkGetQueryPoolResults registry at www.khronos.org>
-foreign import ccall unsafe "vkGetQueryPoolResults"
-               vkGetQueryPoolResults ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
--- | 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.0-extensions/man/html/vkCreateBuffer.html vkCreateBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateBuffer" vkCreateBuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
--- | > () vkDestroyBuffer
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyBuffer.html vkDestroyBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBuffer ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateBufferView.html vkCreateBufferView registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateBufferView" vkCreateBufferView
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
--- | > () vkDestroyBufferView
---   >     ( VkDevice device
---   >     , VkBufferView bufferView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyBufferView.html vkDestroyBufferView registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyBufferView"
-               vkDestroyBufferView ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateImage.html vkCreateImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateImage" vkCreateImage ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
--- | > () vkDestroyImage
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyImage.html vkDestroyImage registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyImage" vkDestroyImage ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
--- | > () vkGetImageSubresourceLayout
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkImageSubresource* pSubresource
---   >     , VkSubresourceLayout* pLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetImageSubresourceLayout.html vkGetImageSubresourceLayout registry at www.khronos.org>
-foreign import ccall unsafe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayout ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateImageView.html vkCreateImageView registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateImageView" vkCreateImageView
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
--- | > () vkDestroyImageView
---   >     ( VkDevice device
---   >     , VkImageView imageView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyImageView.html vkDestroyImageView registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyImageView" vkDestroyImageView
-               :: VkDevice -- ^ device
-                           -> VkImageView -- ^ imageView
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateShaderModule.html vkCreateShaderModule registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateShaderModule"
-               vkCreateShaderModule ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
--- | > () vkDestroyShaderModule
---   >     ( VkDevice device
---   >     , VkShaderModule shaderModule
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyShaderModule.html vkDestroyShaderModule registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyShaderModule"
-               vkDestroyShaderModule ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
--- | 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.0-extensions/man/html/vkCreatePipelineCache.html vkCreatePipelineCache registry at www.khronos.org>
-foreign import ccall unsafe "vkCreatePipelineCache"
-               vkCreatePipelineCache ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
--- | > () vkDestroyPipelineCache
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyPipelineCache.html vkDestroyPipelineCache registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyPipelineCache"
-               vkDestroyPipelineCache ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
--- | 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.0-extensions/man/html/vkGetPipelineCacheData.html vkGetPipelineCacheData registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPipelineCacheData"
-               vkGetPipelineCacheData ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
--- | 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.0-extensions/man/html/vkMergePipelineCaches.html vkMergePipelineCaches registry at www.khronos.org>
-foreign import ccall unsafe "vkMergePipelineCaches"
-               vkMergePipelineCaches ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
--- | 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.0-extensions/man/html/vkCreateGraphicsPipelines.html vkCreateGraphicsPipelines registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelines ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
--- | 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.0-extensions/man/html/vkCreateComputePipelines.html vkCreateComputePipelines registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateComputePipelines"
-               vkCreateComputePipelines ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
--- | > () vkDestroyPipeline
---   >     ( VkDevice device
---   >     , VkPipeline pipeline
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyPipeline.html vkDestroyPipeline registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyPipeline" vkDestroyPipeline
-               :: VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
--- | 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.0-extensions/man/html/vkCreatePipelineLayout.html vkCreatePipelineLayout registry at www.khronos.org>
-foreign import ccall unsafe "vkCreatePipelineLayout"
-               vkCreatePipelineLayout ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
--- | > () vkDestroyPipelineLayout
---   >     ( VkDevice device
---   >     , VkPipelineLayout pipelineLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyPipelineLayout.html vkDestroyPipelineLayout registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayout ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateSampler.html vkCreateSampler registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateSampler" vkCreateSampler ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
--- | > () vkDestroySampler
---   >     ( VkDevice device
---   >     , VkSampler sampler
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroySampler.html vkDestroySampler registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroySampler" vkDestroySampler ::
-               VkDevice -- ^ device
-                        -> VkSampler -- ^ sampler
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateDescriptorSetLayout.html vkCreateDescriptorSetLayout registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayout ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
--- | > () vkDestroyDescriptorSetLayout
---   >     ( VkDevice device
---   >     , VkDescriptorSetLayout descriptorSetLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyDescriptorSetLayout.html vkDestroyDescriptorSetLayout registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayout ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorPool
---   >     ( VkDevice device
---   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorPool* pDescriptorPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateDescriptorPool.html vkCreateDescriptorPool registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateDescriptorPool"
-               vkCreateDescriptorPool ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
--- | > () vkDestroyDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyDescriptorPool.html vkDestroyDescriptorPool registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPool ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
--- | 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.0-extensions/man/html/vkResetDescriptorPool.html vkResetDescriptorPool registry at www.khronos.org>
-foreign import ccall unsafe "vkResetDescriptorPool"
-               vkResetDescriptorPool ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
--- | 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_KHR'.
---
---   > VkResult vkAllocateDescriptorSets
---   >     ( VkDevice device
---   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
---   >     , VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkAllocateDescriptorSets.html vkAllocateDescriptorSets registry at www.khronos.org>
-foreign import ccall unsafe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
--- | 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.0-extensions/man/html/vkFreeDescriptorSets.html vkFreeDescriptorSets registry at www.khronos.org>
-foreign import ccall unsafe "vkFreeDescriptorSets"
-               vkFreeDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
--- | > () vkUpdateDescriptorSets
---   >     ( VkDevice device
---   >     , uint32_t descriptorWriteCount
---   >     , const VkWriteDescriptorSet* pDescriptorWrites
---   >     , uint32_t descriptorCopyCount
---   >     , const VkCopyDescriptorSet* pDescriptorCopies
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkUpdateDescriptorSets.html vkUpdateDescriptorSets registry at www.khronos.org>
-foreign import ccall unsafe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateFramebuffer.html vkCreateFramebuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateFramebuffer"
-               vkCreateFramebuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
--- | > () vkDestroyFramebuffer
---   >     ( VkDevice device
---   >     , VkFramebuffer framebuffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyFramebuffer.html vkDestroyFramebuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyFramebuffer"
-               vkDestroyFramebuffer ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateRenderPass.html vkCreateRenderPass registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateRenderPass" vkCreateRenderPass
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
--- | > () vkDestroyRenderPass
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyRenderPass.html vkDestroyRenderPass registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyRenderPass"
-               vkDestroyRenderPass ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
--- | > () vkGetRenderAreaGranularity
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , VkExtent2D* pGranularity
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetRenderAreaGranularity.html vkGetRenderAreaGranularity registry at www.khronos.org>
-foreign import ccall unsafe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularity ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
--- | 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.0-extensions/man/html/vkCreateCommandPool.html vkCreateCommandPool registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateCommandPool"
-               vkCreateCommandPool ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
--- | > () vkDestroyCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyCommandPool.html vkDestroyCommandPool registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyCommandPool"
-               vkDestroyCommandPool ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
--- | 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.0-extensions/man/html/vkResetCommandPool.html vkResetCommandPool registry at www.khronos.org>
-foreign import ccall unsafe "vkResetCommandPool" vkResetCommandPool
-               ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
--- | 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.0-extensions/man/html/vkAllocateCommandBuffers.html vkAllocateCommandBuffers registry at www.khronos.org>
-foreign import ccall unsafe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffers ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
--- | > () vkFreeCommandBuffers
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkFreeCommandBuffers.html vkFreeCommandBuffers registry at www.khronos.org>
-foreign import ccall unsafe "vkFreeCommandBuffers"
-               vkFreeCommandBuffers ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
--- | 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.0-extensions/man/html/vkBeginCommandBuffer.html vkBeginCommandBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkBeginCommandBuffer"
-               vkBeginCommandBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
--- | 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.0-extensions/man/html/vkEndCommandBuffer.html vkEndCommandBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkEndCommandBuffer" vkEndCommandBuffer
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> IO VkResult
-
--- | 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.0-extensions/man/html/vkResetCommandBuffer.html vkResetCommandBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkResetCommandBuffer"
-               vkResetCommandBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () vkCmdBindPipeline
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipeline pipeline
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdBindPipeline.html vkCmdBindPipeline registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBindPipeline" vkCmdBindPipeline
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetViewport
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstViewport
---   >     , uint32_t viewportCount
---   >     , const VkViewport* pViewports
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetViewport.html vkCmdSetViewport registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetViewport" vkCmdSetViewport ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstViewport
-                                         -> Word32 -- ^ viewportCount
-                                                   -> Ptr VkViewport -- ^ pViewports
-                                                                     -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetScissor
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstScissor
---   >     , uint32_t scissorCount
---   >     , const VkRect2D* pScissors
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetScissor.html vkCmdSetScissor registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissor ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstScissor
-                                         -> Word32 -- ^ scissorCount
-                                                   -> Ptr VkRect2D -- ^ pScissors
-                                                                   -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetLineWidth
---   >     ( VkCommandBuffer commandBuffer
---   >     , float lineWidth
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetLineWidth.html vkCmdSetLineWidth registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetLineWidth" vkCmdSetLineWidth
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetDepthBias
---   >     ( VkCommandBuffer commandBuffer
---   >     , float depthBiasConstantFactor
---   >     , float depthBiasClamp
---   >     , float depthBiasSlopeFactor
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetDepthBias.html vkCmdSetDepthBias registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetDepthBias" vkCmdSetDepthBias
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetBlendConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , const float blendConstants[4]
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetBlendConstants.html vkCmdSetBlendConstants registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstants ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetDepthBounds
---   >     ( VkCommandBuffer commandBuffer
---   >     , float minDepthBounds
---   >     , float maxDepthBounds
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetDepthBounds.html vkCmdSetDepthBounds registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBounds ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetStencilCompareMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t compareMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetStencilCompareMask.html vkCmdSetStencilCompareMask registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMask ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetStencilWriteMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t writeMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetStencilWriteMask.html vkCmdSetStencilWriteMask registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMask ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdSetStencilReference
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t reference
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetStencilReference.html vkCmdSetStencilReference registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetStencilReference"
-               vkCmdSetStencilReference ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () 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.0-extensions/man/html/vkCmdBindDescriptorSets.html vkCmdBindDescriptorSets registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSets ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdBindIndexBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , VkIndexType indexType
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdBindIndexBuffer.html vkCmdBindIndexBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @both@
---
---   > () vkCmdBindVertexBuffers
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstBinding
---   >     , uint32_t bindingCount
---   >     , const VkBuffer* pBuffers
---   >     , const VkDeviceSize* pOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdBindVertexBuffers.html vkCmdBindVertexBuffers registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffers ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () vkCmdDraw
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t vertexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstVertex
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDraw.html vkCmdDraw registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDraw" vkCmdDraw ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () 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.0-extensions/man/html/vkCmdDrawIndexed.html vkCmdDrawIndexed registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDrawIndexed" vkCmdDrawIndexed ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () vkCmdDrawIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDrawIndirect.html vkCmdDrawIndirect registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDrawIndirect" vkCmdDrawIndirect
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () vkCmdDrawIndexedIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDrawIndexedIndirect.html vkCmdDrawIndexedIndirect registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirect ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
--- | queues: 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @compute@
---
---   > () vkCmdDispatch
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDispatch.html vkCmdDispatch registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatch ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
--- | queues: 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @compute@
---
---   > () vkCmdDispatchIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDispatchIndirect.html vkCmdDispatchIndirect registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirect ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () vkCmdCopyBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdCopyBuffer.html vkCmdCopyBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () 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.0-extensions/man/html/vkCmdCopyImage.html vkCmdCopyImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () 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.0-extensions/man/html/vkCmdBlitImage.html vkCmdBlitImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () vkCmdCopyBufferToImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdCopyBufferToImage.html vkCmdCopyBufferToImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () vkCmdCopyImageToBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdCopyImageToBuffer.html vkCmdCopyImageToBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () vkCmdUpdateBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize dataSize
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdUpdateBuffer.html vkCmdUpdateBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdUpdateBuffer" vkCmdUpdateBuffer
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
--- | 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@
---
---   > () vkCmdFillBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize size
---   >     , uint32_t data
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdFillBuffer.html vkCmdFillBuffer registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () vkCmdClearColorImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearColorValue* pColor
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdClearColorImage.html vkCmdClearColorImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdClearColorImage"
-               vkCmdClearColorImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () vkCmdClearDepthStencilImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearDepthStencilValue* pDepthStencil
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdClearDepthStencilImage.html vkCmdClearDepthStencilImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () vkCmdClearAttachments
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t attachmentCount
---   >     , const VkClearAttachment* pAttachments
---   >     , uint32_t rectCount
---   >     , const VkClearRect* pRects
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdClearAttachments.html vkCmdClearAttachments registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdClearAttachments"
-               vkCmdClearAttachments ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () 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.0-extensions/man/html/vkCmdResolveImage.html vkCmdResolveImage registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdResolveImage" vkCmdResolveImage
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   > () vkCmdSetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetEvent.html vkCmdSetEvent registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEvent ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   > () vkCmdResetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdResetEvent.html vkCmdResetEvent registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEvent ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () 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.0-extensions/man/html/vkCmdWaitEvents.html vkCmdWaitEvents registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdWaitEvents" 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 ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () 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.0-extensions/man/html/vkCmdPipelineBarrier.html vkCmdPipelineBarrier registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdPipelineBarrier"
-               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 ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () vkCmdBeginQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     , VkQueryControlFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdBeginQuery.html vkCmdBeginQuery registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQuery ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () vkCmdEndQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdEndQuery.html vkCmdEndQuery registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQuery ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   > () vkCmdResetQueryPool
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdResetQueryPool.html vkCmdResetQueryPool registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdResetQueryPool"
-               vkCmdResetQueryPool ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   pipeline: @transfer@
---
---   > () vkCmdWriteTimestamp
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlagBits pipelineStage
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdWriteTimestamp.html vkCmdWriteTimestamp registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestamp ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @outside@
---
---   pipeline: @transfer@
---
---   > () 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.0-extensions/man/html/vkCmdCopyQueryPoolResults.html vkCmdCopyQueryPoolResults registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResults ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () vkCmdPushConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineLayout layout
---   >     , VkShaderStageFlags stageFlags
---   >     , uint32_t offset
---   >     , uint32_t size
---   >     , const void* pValues
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdPushConstants.html vkCmdPushConstants registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdPushConstants" vkCmdPushConstants
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @outside@
---
---   pipeline: @graphics@
---
---   > () vkCmdBeginRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkRenderPassBeginInfo* pRenderPassBegin
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdBeginRenderPass.html vkCmdBeginRenderPass registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPass ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () vkCmdNextSubpass
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdNextSubpass.html vkCmdNextSubpass registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdNextSubpass" vkCmdNextSubpass ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkSubpassContents -- ^ contents
-                                                    -> IO ()
-
--- | queues: 'graphics'.
---
---   renderpass: @inside@
---
---   pipeline: @graphics@
---
---   > () vkCmdEndRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdEndRenderPass.html vkCmdEndRenderPass registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdEndRenderPass" vkCmdEndRenderPass
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> IO ()
-
--- | queues: 'transfer', 'graphics', 'compute'.
---
---   renderpass: @both@
---
---   > () vkCmdExecuteCommands
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdExecuteCommands.html vkCmdExecuteCommands registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdExecuteCommands"
-               vkCmdExecuteCommands ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
diff --git a/src-gen/Graphics/Vulkan/Core_1_0.hsc b/src-gen/Graphics/Vulkan/Core_1_0.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Core_1_0.hsc
@@ -0,0 +1,5937 @@
+#include "vulkan/vulkan.h"
+
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+module Graphics.Vulkan.Core_1_0
+       (-- * Vulkan core API interface definitions
+        -- |
+        --
+        -- @api = vulkan@
+        --
+        -- @name = VK_VERSION_1_0@
+        --
+        -- @number = 1.0@
+        --
+
+        -- ** Header boilerplate
+        --
+        -- |
+        -- > ##include "vk_platform.h"
+        --
+
+        -- ** API version
+        --
+
+        -- ** API constants
+        module Graphics.Vulkan.Types.Enum.VkPipelineCacheHeaderVersion,
+        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, vkCreateInstanceSafe, vkDestroyInstance,
+        vkDestroyInstanceSafe, vkEnumeratePhysicalDevices,
+        vkEnumeratePhysicalDevicesSafe, vkGetPhysicalDeviceFeatures,
+        vkGetPhysicalDeviceFeaturesSafe,
+        vkGetPhysicalDeviceFormatProperties,
+        vkGetPhysicalDeviceFormatPropertiesSafe,
+        vkGetPhysicalDeviceImageFormatProperties,
+        vkGetPhysicalDeviceImageFormatPropertiesSafe,
+        vkGetPhysicalDeviceProperties, vkGetPhysicalDevicePropertiesSafe,
+        vkGetPhysicalDeviceQueueFamilyProperties,
+        vkGetPhysicalDeviceQueueFamilyPropertiesSafe,
+        vkGetPhysicalDeviceMemoryProperties,
+        vkGetPhysicalDeviceMemoryPropertiesSafe, vkGetInstanceProcAddr,
+        vkGetInstanceProcAddrSafe, vkGetDeviceProcAddr,
+        vkGetDeviceProcAddrSafe, module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.VkFormat,
+        module Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkImageTiling,
+        module Graphics.Vulkan.Types.Enum.VkImageType,
+        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
+        module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
+        module Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags,
+        module Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags,
+        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
+        module Graphics.Vulkan.Types.Enum.VkQueueFlags,
+        module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
+        module Graphics.Vulkan.Types.Funcpointers,
+        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
+        module Graphics.Vulkan.Types.Struct.VkApplicationInfo,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Struct.VkFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkMemoryHeap,
+        module Graphics.Vulkan.Types.Struct.VkMemoryType,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
+        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties,
+        -- ** Device commands
+        vkCreateDevice, vkCreateDeviceSafe, vkDestroyDevice,
+        vkDestroyDeviceSafe,
+        module Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
+        -- ** Extension discovery commands
+        vkEnumerateInstanceExtensionProperties,
+        vkEnumerateInstanceExtensionPropertiesSafe,
+        vkEnumerateDeviceExtensionProperties,
+        vkEnumerateDeviceExtensionPropertiesSafe,
+        module Graphics.Vulkan.Types.Struct.VkExtensionProperties,
+        -- ** Layer discovery commands
+        vkEnumerateInstanceLayerProperties,
+        vkEnumerateInstanceLayerPropertiesSafe,
+        vkEnumerateDeviceLayerProperties,
+        vkEnumerateDeviceLayerPropertiesSafe,
+        module Graphics.Vulkan.Types.Struct.VkLayerProperties,
+        -- ** queue commands
+        vkGetDeviceQueue, vkGetDeviceQueueSafe, vkQueueSubmit,
+        vkQueueSubmitSafe, vkQueueWaitIdle, vkQueueWaitIdleSafe,
+        vkDeviceWaitIdle, vkDeviceWaitIdleSafe,
+        module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
+        module Graphics.Vulkan.Types.Struct.VkSubmitInfo, -- ** Memory commands
+                                                          vkAllocateMemory,
+        vkAllocateMemorySafe, vkFreeMemory, vkFreeMemorySafe, vkMapMemory,
+        vkMapMemorySafe, vkUnmapMemory, vkUnmapMemorySafe,
+        vkFlushMappedMemoryRanges, vkFlushMappedMemoryRangesSafe,
+        vkInvalidateMappedMemoryRanges, vkInvalidateMappedMemoryRangesSafe,
+        vkGetDeviceMemoryCommitment, vkGetDeviceMemoryCommitmentSafe,
+        module Graphics.Vulkan.Types.Struct.VkMappedMemoryRange,
+        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
+        -- ** Memory management API commands
+        vkBindBufferMemory, vkBindBufferMemorySafe, vkBindImageMemory,
+        vkBindImageMemorySafe, vkGetBufferMemoryRequirements,
+        vkGetBufferMemoryRequirementsSafe, vkGetImageMemoryRequirements,
+        vkGetImageMemoryRequirementsSafe,
+        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements,
+        -- ** Sparse resource memory management API commands
+        vkGetImageSparseMemoryRequirements,
+        vkGetImageSparseMemoryRequirementsSafe,
+        vkGetPhysicalDeviceSparseImageFormatProperties,
+        vkGetPhysicalDeviceSparseImageFormatPropertiesSafe,
+        vkQueueBindSparse, vkQueueBindSparseSafe,
+        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
+        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
+        module Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags,
+        module Graphics.Vulkan.Types.Struct.VkBindSparseInfo,
+        module Graphics.Vulkan.Types.Struct.VkImageSubresource,
+        module Graphics.Vulkan.Types.Struct.VkOffset3D,
+        module Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseMemoryBind,
+        -- ** Fence commands
+        vkCreateFence, vkCreateFenceSafe, vkDestroyFence,
+        vkDestroyFenceSafe, vkResetFences, vkResetFencesSafe,
+        vkGetFenceStatus, vkGetFenceStatusSafe, vkWaitForFences,
+        vkWaitForFencesSafe,
+        module Graphics.Vulkan.Types.Enum.VkFenceCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkFenceCreateInfo,
+        -- ** Queue semaphore commands
+        vkCreateSemaphore, vkCreateSemaphoreSafe, vkDestroySemaphore,
+        vkDestroySemaphoreSafe,
+        module Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo,
+        -- ** Event commands
+        vkCreateEvent, vkCreateEventSafe, vkDestroyEvent,
+        vkDestroyEventSafe, vkGetEventStatus, vkGetEventStatusSafe,
+        vkSetEvent, vkSetEventSafe, vkResetEvent, vkResetEventSafe,
+        module Graphics.Vulkan.Types.Struct.VkEventCreateInfo,
+        -- ** Query commands
+        vkCreateQueryPool, vkCreateQueryPoolSafe, vkDestroyQueryPool,
+        vkDestroyQueryPoolSafe, vkGetQueryPoolResults,
+        vkGetQueryPoolResultsSafe,
+        module Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags,
+        module Graphics.Vulkan.Types.Enum.VkQueryResultFlags,
+        module Graphics.Vulkan.Types.Enum.VkQueryType,
+        module Graphics.Vulkan.Types.Struct.VkQueryPoolCreateInfo,
+        -- ** Buffer commands
+        vkCreateBuffer, vkCreateBufferSafe, vkDestroyBuffer,
+        vkDestroyBufferSafe,
+        module Graphics.Vulkan.Types.Enum.VkBufferCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkBufferUsageFlags,
+        module Graphics.Vulkan.Types.Enum.VkSharingMode,
+        module Graphics.Vulkan.Types.Struct.VkBufferCreateInfo,
+        -- ** Buffer view commands
+        vkCreateBufferView, vkCreateBufferViewSafe, vkDestroyBufferView,
+        vkDestroyBufferViewSafe,
+        module Graphics.Vulkan.Types.Struct.VkBufferViewCreateInfo,
+        -- ** Image commands
+        vkCreateImage, vkCreateImageSafe, vkDestroyImage,
+        vkDestroyImageSafe, vkGetImageSubresourceLayout,
+        vkGetImageSubresourceLayoutSafe,
+        module Graphics.Vulkan.Types.Enum.VkImageLayout,
+        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkSubresourceLayout,
+        -- ** Image view commands
+        vkCreateImageView, vkCreateImageViewSafe, vkDestroyImageView,
+        vkDestroyImageViewSafe,
+        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
+        module Graphics.Vulkan.Types.Enum.VkImageViewType,
+        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
+        module Graphics.Vulkan.Types.Struct.VkImageSubresourceRange,
+        module Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo,
+        -- ** Shader commands
+        vkCreateShaderModule, vkCreateShaderModuleSafe,
+        vkDestroyShaderModule, vkDestroyShaderModuleSafe,
+        module Graphics.Vulkan.Types.Struct.VkShaderModuleCreateInfo,
+        -- ** Pipeline Cache commands
+        vkCreatePipelineCache, vkCreatePipelineCacheSafe,
+        vkDestroyPipelineCache, vkDestroyPipelineCacheSafe,
+        vkGetPipelineCacheData, vkGetPipelineCacheDataSafe,
+        vkMergePipelineCaches, vkMergePipelineCachesSafe,
+        module Graphics.Vulkan.Types.Struct.VkPipelineCacheCreateInfo,
+        -- ** Pipeline commands
+        vkCreateGraphicsPipelines, vkCreateGraphicsPipelinesSafe,
+        vkCreateComputePipelines, vkCreateComputePipelinesSafe,
+        vkDestroyPipeline, vkDestroyPipelineSafe,
+        module Graphics.Vulkan.Types.Enum.VkBlendFactor,
+        module Graphics.Vulkan.Types.Enum.VkBlendOp,
+        module Graphics.Vulkan.Types.Enum.VkColorComponentFlags,
+        module Graphics.Vulkan.Types.Enum.VkCompareOp,
+        module Graphics.Vulkan.Types.Enum.VkCullModeFlags,
+        module Graphics.Vulkan.Types.Enum.VkDynamicState,
+        module Graphics.Vulkan.Types.Enum.VkFrontFace,
+        module Graphics.Vulkan.Types.Enum.VkLogicOp,
+        module Graphics.Vulkan.Types.Enum.VkPipelineCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkPolygonMode,
+        module Graphics.Vulkan.Types.Enum.VkPrimitiveTopology,
+        module Graphics.Vulkan.Types.Enum.VkShaderStageFlags,
+        module Graphics.Vulkan.Types.Enum.VkStencilOp,
+        module Graphics.Vulkan.Types.Enum.VkVertexInputRate,
+        module Graphics.Vulkan.Types.Struct.VkComputePipelineCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkExtent2D,
+        module Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkOffset2D,
+        module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState,
+        module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineDepthStencilStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineDynamicStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineInputAssemblyStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkRect2D,
+        module Graphics.Vulkan.Types.Struct.VkSpecializationInfo,
+        module Graphics.Vulkan.Types.Struct.VkSpecializationMapEntry,
+        module Graphics.Vulkan.Types.Struct.VkStencilOpState,
+        module Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription,
+        module Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription,
+        module Graphics.Vulkan.Types.Struct.VkViewport,
+        -- ** Pipeline layout commands
+        vkCreatePipelineLayout, vkCreatePipelineLayoutSafe,
+        vkDestroyPipelineLayout, vkDestroyPipelineLayoutSafe,
+        module Graphics.Vulkan.Types.Struct.VkPipelineLayoutCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPushConstantRange,
+        -- ** Sampler commands
+        vkCreateSampler, vkCreateSamplerSafe, vkDestroySampler,
+        vkDestroySamplerSafe,
+        module Graphics.Vulkan.Types.Enum.VkBorderColor,
+        module Graphics.Vulkan.Types.Enum.VkFilter,
+        module Graphics.Vulkan.Types.Enum.VkSamplerAddressMode,
+        module Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode,
+        module Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo,
+        -- ** Descriptor set commands
+        vkCreateDescriptorSetLayout, vkCreateDescriptorSetLayoutSafe,
+        vkDestroyDescriptorSetLayout, vkDestroyDescriptorSetLayoutSafe,
+        vkCreateDescriptorPool, vkCreateDescriptorPoolSafe,
+        vkDestroyDescriptorPool, vkDestroyDescriptorPoolSafe,
+        vkResetDescriptorPool, vkResetDescriptorPoolSafe,
+        vkAllocateDescriptorSets, vkAllocateDescriptorSetsSafe,
+        vkFreeDescriptorSets, vkFreeDescriptorSetsSafe,
+        vkUpdateDescriptorSets, vkUpdateDescriptorSetsSafe,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorPoolCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorType,
+        module Graphics.Vulkan.Types.Struct.VkCopyDescriptorSet,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorBufferInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorPoolCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorPoolSize,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetAllocateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet,
+        -- ** Pass commands
+        vkCreateFramebuffer, vkCreateFramebufferSafe, vkDestroyFramebuffer,
+        vkDestroyFramebufferSafe, vkCreateRenderPass,
+        vkCreateRenderPassSafe, vkDestroyRenderPass,
+        vkDestroyRenderPassSafe, vkGetRenderAreaGranularity,
+        vkGetRenderAreaGranularitySafe,
+        module Graphics.Vulkan.Types.Enum.VkAccessFlags,
+        module Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags,
+        module Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp,
+        module Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp,
+        module Graphics.Vulkan.Types.Enum.VkDependencyFlags,
+        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
+        module Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags,
+        module Graphics.Vulkan.Types.Struct.VkAttachmentDescription,
+        module Graphics.Vulkan.Types.Struct.VkAttachmentReference,
+        module Graphics.Vulkan.Types.Struct.VkFramebufferCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkSubpassDependency,
+        module Graphics.Vulkan.Types.Struct.VkSubpassDescription,
+        -- ** Command pool commands
+        vkCreateCommandPool, vkCreateCommandPoolSafe, vkDestroyCommandPool,
+        vkDestroyCommandPoolSafe, vkResetCommandPool,
+        vkResetCommandPoolSafe,
+        module Graphics.Vulkan.Types.Enum.VkCommandPoolCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkCommandPoolResetFlags,
+        module Graphics.Vulkan.Types.Struct.VkCommandPoolCreateInfo,
+        -- ** Command buffer commands
+        vkAllocateCommandBuffers, vkAllocateCommandBuffersSafe,
+        vkFreeCommandBuffers, vkFreeCommandBuffersSafe,
+        vkBeginCommandBuffer, vkBeginCommandBufferSafe, vkEndCommandBuffer,
+        vkEndCommandBufferSafe, vkResetCommandBuffer,
+        vkResetCommandBufferSafe,
+        module Graphics.Vulkan.Types.Enum.VkCommandBufferLevel,
+        module Graphics.Vulkan.Types.Enum.VkCommandBufferResetFlags,
+        module Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags,
+        module Graphics.Vulkan.Types.Enum.VkQueryControlFlags,
+        module Graphics.Vulkan.Types.Struct.VkCommandBufferAllocateInfo,
+        module Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo,
+        module Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo,
+        -- ** Command buffer building commands
+        vkCmdBindPipeline, vkCmdBindPipelineSafe, vkCmdSetViewport,
+        vkCmdSetViewportSafe, vkCmdSetScissor, vkCmdSetScissorSafe,
+        vkCmdSetLineWidth, vkCmdSetLineWidthSafe, vkCmdSetDepthBias,
+        vkCmdSetDepthBiasSafe, vkCmdSetBlendConstants,
+        vkCmdSetBlendConstantsSafe, vkCmdSetDepthBounds,
+        vkCmdSetDepthBoundsSafe, vkCmdSetStencilCompareMask,
+        vkCmdSetStencilCompareMaskSafe, vkCmdSetStencilWriteMask,
+        vkCmdSetStencilWriteMaskSafe, vkCmdSetStencilReference,
+        vkCmdSetStencilReferenceSafe, vkCmdBindDescriptorSets,
+        vkCmdBindDescriptorSetsSafe, vkCmdBindIndexBuffer,
+        vkCmdBindIndexBufferSafe, vkCmdBindVertexBuffers,
+        vkCmdBindVertexBuffersSafe, vkCmdDraw, vkCmdDrawSafe,
+        vkCmdDrawIndexed, vkCmdDrawIndexedSafe, vkCmdDrawIndirect,
+        vkCmdDrawIndirectSafe, vkCmdDrawIndexedIndirect,
+        vkCmdDrawIndexedIndirectSafe, vkCmdDispatch, vkCmdDispatchSafe,
+        vkCmdDispatchIndirect, vkCmdDispatchIndirectSafe, vkCmdCopyBuffer,
+        vkCmdCopyBufferSafe, vkCmdCopyImage, vkCmdCopyImageSafe,
+        vkCmdBlitImage, vkCmdBlitImageSafe, vkCmdCopyBufferToImage,
+        vkCmdCopyBufferToImageSafe, vkCmdCopyImageToBuffer,
+        vkCmdCopyImageToBufferSafe, vkCmdUpdateBuffer,
+        vkCmdUpdateBufferSafe, vkCmdFillBuffer, vkCmdFillBufferSafe,
+        vkCmdClearColorImage, vkCmdClearColorImageSafe,
+        vkCmdClearDepthStencilImage, vkCmdClearDepthStencilImageSafe,
+        vkCmdClearAttachments, vkCmdClearAttachmentsSafe,
+        vkCmdResolveImage, vkCmdResolveImageSafe, vkCmdSetEvent,
+        vkCmdSetEventSafe, vkCmdResetEvent, vkCmdResetEventSafe,
+        vkCmdWaitEvents, vkCmdWaitEventsSafe, vkCmdPipelineBarrier,
+        vkCmdPipelineBarrierSafe, vkCmdBeginQuery, vkCmdBeginQuerySafe,
+        vkCmdEndQuery, vkCmdEndQuerySafe, vkCmdResetQueryPool,
+        vkCmdResetQueryPoolSafe, vkCmdWriteTimestamp,
+        vkCmdWriteTimestampSafe, vkCmdCopyQueryPoolResults,
+        vkCmdCopyQueryPoolResultsSafe, vkCmdPushConstants,
+        vkCmdPushConstantsSafe, vkCmdBeginRenderPass,
+        vkCmdBeginRenderPassSafe, vkCmdNextSubpass, vkCmdNextSubpassSafe,
+        vkCmdEndRenderPass, vkCmdEndRenderPassSafe, vkCmdExecuteCommands,
+        vkCmdExecuteCommandsSafe,
+        module Graphics.Vulkan.Types.Enum.VkIndexType,
+        module Graphics.Vulkan.Types.Enum.VkStencilFaceFlags,
+        module Graphics.Vulkan.Types.Enum.VkSubpassContents,
+        module Graphics.Vulkan.Types.Struct.VkBufferCopy,
+        module Graphics.Vulkan.Types.Struct.VkBufferImageCopy,
+        module Graphics.Vulkan.Types.Struct.VkBufferMemoryBarrier,
+        module Graphics.Vulkan.Types.Struct.VkClearAttachment,
+        module Graphics.Vulkan.Types.Struct.VkClearColorValue,
+        module Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue,
+        module Graphics.Vulkan.Types.Struct.VkClearRect,
+        module Graphics.Vulkan.Types.Struct.VkClearValue,
+        module Graphics.Vulkan.Types.Struct.VkImageBlit,
+        module Graphics.Vulkan.Types.Struct.VkImageCopy,
+        module Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier,
+        module Graphics.Vulkan.Types.Struct.VkImageResolve,
+        module Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers,
+        module Graphics.Vulkan.Types.Struct.VkMemoryBarrier,
+        module Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo,
+        -- ** Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.
+        module Graphics.Vulkan.Types.Struct.VkDispatchIndirectCommand,
+        module Graphics.Vulkan.Types.Struct.VkDrawIndexedIndirectCommand,
+        module Graphics.Vulkan.Types.Struct.VkDrawIndirectCommand,
+        module Graphics.Vulkan.Types.Enum.VkObjectType)
+       where
+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.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkAccessFlags
+import           Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags
+import           Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp
+import           Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp
+import           Graphics.Vulkan.Types.Enum.VkBlendFactor
+import           Graphics.Vulkan.Types.Enum.VkBlendOp
+import           Graphics.Vulkan.Types.Enum.VkBorderColor
+import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkColorComponentFlags
+import           Graphics.Vulkan.Types.Enum.VkCommandBufferLevel
+import           Graphics.Vulkan.Types.Enum.VkCommandBufferResetFlags
+import           Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkCommandPoolCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkCommandPoolResetFlags
+import           Graphics.Vulkan.Types.Enum.VkCompareOp
+import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle
+import           Graphics.Vulkan.Types.Enum.VkCullModeFlags
+import           Graphics.Vulkan.Types.Enum.VkDependencyFlags
+import           Graphics.Vulkan.Types.Enum.VkDescriptorPoolCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkDescriptorType
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkDynamicState
+import           Graphics.Vulkan.Types.Enum.VkFenceCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkFilter
+import           Graphics.Vulkan.Types.Enum.VkFormat
+import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkFrontFace
+import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
+import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkImageLayout
+import           Graphics.Vulkan.Types.Enum.VkImageTiling
+import           Graphics.Vulkan.Types.Enum.VkImageType
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkImageViewType
+import           Graphics.Vulkan.Types.Enum.VkIndexType
+import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
+import           Graphics.Vulkan.Types.Enum.VkLogicOp
+import           Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags
+import           Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags
+import           Graphics.Vulkan.Types.Enum.VkObjectType
+import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
+import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
+import           Graphics.Vulkan.Types.Enum.VkPipelineCacheHeaderVersion
+import           Graphics.Vulkan.Types.Enum.VkPipelineCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
+import           Graphics.Vulkan.Types.Enum.VkPolygonMode
+import           Graphics.Vulkan.Types.Enum.VkPrimitiveTopology
+import           Graphics.Vulkan.Types.Enum.VkQueryControlFlags
+import           Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags
+import           Graphics.Vulkan.Types.Enum.VkQueryResultFlags
+import           Graphics.Vulkan.Types.Enum.VkQueryType
+import           Graphics.Vulkan.Types.Enum.VkQueueFlags
+import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Enum.VkSamplerAddressMode
+import           Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode
+import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags
+import           Graphics.Vulkan.Types.Enum.VkSharingMode
+import           Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags
+import           Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags
+import           Graphics.Vulkan.Types.Enum.VkStencilFaceFlags
+import           Graphics.Vulkan.Types.Enum.VkStencilOp
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Enum.VkSubpassContents
+import           Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags
+import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
+import           Graphics.Vulkan.Types.Enum.VkVertexInputRate
+import           Graphics.Vulkan.Types.Funcpointers
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.VkApplicationInfo
+import           Graphics.Vulkan.Types.Struct.VkAttachmentDescription
+import           Graphics.Vulkan.Types.Struct.VkAttachmentReference
+import           Graphics.Vulkan.Types.Struct.VkBindSparseInfo
+import           Graphics.Vulkan.Types.Struct.VkBufferCopy
+import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkBufferImageCopy
+import           Graphics.Vulkan.Types.Struct.VkBufferMemoryBarrier
+import           Graphics.Vulkan.Types.Struct.VkBufferViewCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkClearAttachment
+import           Graphics.Vulkan.Types.Struct.VkClearColorValue
+import           Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue
+import           Graphics.Vulkan.Types.Struct.VkClearRect
+import           Graphics.Vulkan.Types.Struct.VkClearValue
+import           Graphics.Vulkan.Types.Struct.VkCommandBufferAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo
+import           Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo
+import           Graphics.Vulkan.Types.Struct.VkCommandPoolCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkComponentMapping
+import           Graphics.Vulkan.Types.Struct.VkComputePipelineCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkCopyDescriptorSet
+import           Graphics.Vulkan.Types.Struct.VkDescriptorBufferInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorPoolCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorPoolSize
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDispatchIndirectCommand
+import           Graphics.Vulkan.Types.Struct.VkDrawIndexedIndirectCommand
+import           Graphics.Vulkan.Types.Struct.VkDrawIndirectCommand
+import           Graphics.Vulkan.Types.Struct.VkEventCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkExtensionProperties
+import           Graphics.Vulkan.Types.Struct.VkExtent2D
+import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkFramebufferCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageBlit
+import           Graphics.Vulkan.Types.Struct.VkImageCopy
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier
+import           Graphics.Vulkan.Types.Struct.VkImageResolve
+import           Graphics.Vulkan.Types.Struct.VkImageSubresource
+import           Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers
+import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
+import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkLayerProperties
+import           Graphics.Vulkan.Types.Struct.VkMappedMemoryRange
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkMemoryBarrier
+import           Graphics.Vulkan.Types.Struct.VkMemoryHeap
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements
+import           Graphics.Vulkan.Types.Struct.VkMemoryType
+import           Graphics.Vulkan.Types.Struct.VkOffset2D
+import           Graphics.Vulkan.Types.Struct.VkOffset3D
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
+import           Graphics.Vulkan.Types.Struct.VkPipelineCacheCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
+import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineDepthStencilStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineDynamicStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineInputAssemblyStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineLayoutCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPushConstantRange
+import           Graphics.Vulkan.Types.Struct.VkQueryPoolCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties
+import           Graphics.Vulkan.Types.Struct.VkRect2D
+import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo
+import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkShaderModuleCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements
+import           Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseMemoryBind
+import           Graphics.Vulkan.Types.Struct.VkSpecializationInfo
+import           Graphics.Vulkan.Types.Struct.VkSpecializationMapEntry
+import           Graphics.Vulkan.Types.Struct.VkStencilOpState
+import           Graphics.Vulkan.Types.Struct.VkSubmitInfo
+import           Graphics.Vulkan.Types.Struct.VkSubpassDependency
+import           Graphics.Vulkan.Types.Struct.VkSubpassDescription
+import           Graphics.Vulkan.Types.Struct.VkSubresourceLayout
+import           Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription
+import           Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription
+import           Graphics.Vulkan.Types.Struct.VkViewport
+import           Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet
+
+-- | 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/man/html/vkCreateInstance.html vkCreateInstance registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateInstance" vkCreateInstance ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkCreateInstance.html vkCreateInstance registry at www.khronos.org>
+foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
+               ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+-- | > () vkDestroyInstance
+--   >     ( VkInstance instance
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyInstance.html vkDestroyInstance registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyInstance" vkDestroyInstance
+               :: VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+-- | > () vkDestroyInstance
+--   >     ( VkInstance instance
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyInstance.html vkDestroyInstance registry at www.khronos.org>
+foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
+               :: VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+-- | 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/man/html/vkEnumeratePhysicalDevices.html vkEnumeratePhysicalDevices registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevices ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkEnumeratePhysicalDevices.html vkEnumeratePhysicalDevices registry at www.khronos.org>
+foreign import ccall safe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevicesSafe ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+-- | > () vkGetPhysicalDeviceFeatures
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFeatures.html vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeatures ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+-- | > () vkGetPhysicalDeviceFeatures
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFeatures.html vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeaturesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+-- | > () vkGetPhysicalDeviceFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+-- | > () vkGetPhysicalDeviceFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+-- | 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/man/html/vkGetPhysicalDeviceImageFormatProperties.html vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+-- | 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/man/html/vkGetPhysicalDeviceImageFormatProperties.html vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+-- | > () vkGetPhysicalDeviceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceProperties.html vkGetPhysicalDeviceProperties registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDeviceProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+-- | > () vkGetPhysicalDeviceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceProperties.html vkGetPhysicalDeviceProperties registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDevicePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+-- | > () vkGetPhysicalDeviceQueueFamilyProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+-- | > () vkGetPhysicalDeviceQueueFamilyProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+-- | > () vkGetPhysicalDeviceMemoryProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+-- | > () vkGetPhysicalDeviceMemoryProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+-- | > PFN_vkVoidFunction vkGetInstanceProcAddr
+--   >     ( VkInstance instance
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetInstanceProcAddr.html vkGetInstanceProcAddr registry at www.khronos.org>
+foreign import ccall unsafe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddr ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+-- | > PFN_vkVoidFunction vkGetInstanceProcAddr
+--   >     ( VkInstance instance
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetInstanceProcAddr.html vkGetInstanceProcAddr registry at www.khronos.org>
+foreign import ccall safe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddrSafe ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+-- | > PFN_vkVoidFunction vkGetDeviceProcAddr
+--   >     ( VkDevice device
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceProcAddr.html vkGetDeviceProcAddr registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddr :: VkDevice -- ^ device
+                                               -> CString -- ^ pName
+                                                          -> IO PFN_vkVoidFunction
+
+-- | > PFN_vkVoidFunction vkGetDeviceProcAddr
+--   >     ( VkDevice device
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceProcAddr.html vkGetDeviceProcAddr registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddrSafe ::
+               VkDevice -- ^ device
+                        -> CString -- ^ pName
+                                   -> IO PFN_vkVoidFunction
+
+-- | 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/man/html/vkCreateDevice.html vkCreateDevice registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateDevice" vkCreateDevice ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkCreateDevice.html vkCreateDevice registry at www.khronos.org>
+foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+-- | > () vkDestroyDevice
+--   >     ( VkDevice device
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDevice.html vkDestroyDevice registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyDevice" vkDestroyDevice ::
+               VkDevice -- ^ device
+                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> IO ()
+
+-- | > () vkDestroyDevice
+--   >     ( VkDevice device
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDevice.html vkDestroyDevice registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> IO ()
+
+-- | 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/man/html/vkEnumerateInstanceExtensionProperties.html vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionProperties ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkEnumerateInstanceExtensionProperties.html vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionPropertiesSafe ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkEnumerateDeviceExtensionProperties.html vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkEnumerateDeviceExtensionProperties.html vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkEnumerateInstanceLayerProperties.html vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerProperties ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+-- | 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/man/html/vkEnumerateInstanceLayerProperties.html vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+foreign import ccall safe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerPropertiesSafe ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+-- | 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/man/html/vkEnumerateDeviceLayerProperties.html vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+-- | 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/man/html/vkEnumerateDeviceLayerProperties.html vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+foreign import ccall safe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+-- | > () vkGetDeviceQueue
+--   >     ( VkDevice device
+--   >     , uint32_t queueFamilyIndex
+--   >     , uint32_t queueIndex
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceQueue.html vkGetDeviceQueue registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDeviceQueue" vkGetDeviceQueue ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ queueFamilyIndex
+                                  -> Word32 -- ^ queueIndex
+                                            -> Ptr VkQueue -- ^ pQueue
+                                                           -> IO ()
+
+-- | > () vkGetDeviceQueue
+--   >     ( VkDevice device
+--   >     , uint32_t queueFamilyIndex
+--   >     , uint32_t queueIndex
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceQueue.html vkGetDeviceQueue registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
+               :: VkDevice -- ^ device
+                           -> Word32 -- ^ queueFamilyIndex
+                                     -> Word32 -- ^ queueIndex
+                                               -> Ptr VkQueue -- ^ pQueue
+                                                              -> IO ()
+
+-- | 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/man/html/vkQueueSubmit.html vkQueueSubmit registry at www.khronos.org>
+foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmit ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkQueueSubmit.html vkQueueSubmit registry at www.khronos.org>
+foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkQueueWaitIdle.html vkQueueWaitIdle registry at www.khronos.org>
+foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdle ::
+               VkQueue -- ^ queue
+                       -> IO VkResult
+
+-- | 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/man/html/vkQueueWaitIdle.html vkQueueWaitIdle registry at www.khronos.org>
+foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
+               VkQueue -- ^ queue
+                       -> IO VkResult
+
+-- | 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/man/html/vkDeviceWaitIdle.html vkDeviceWaitIdle registry at www.khronos.org>
+foreign import ccall unsafe "vkDeviceWaitIdle" vkDeviceWaitIdle ::
+               VkDevice -- ^ device
+                        -> IO VkResult
+
+-- | 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/man/html/vkDeviceWaitIdle.html vkDeviceWaitIdle registry at www.khronos.org>
+foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
+               :: VkDevice -- ^ device
+                           -> IO VkResult
+
+-- | 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/man/html/vkAllocateMemory.html vkAllocateMemory registry at www.khronos.org>
+foreign import ccall unsafe "vkAllocateMemory" vkAllocateMemory ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkAllocateMemory.html vkAllocateMemory registry at www.khronos.org>
+foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+-- | > () vkFreeMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkFreeMemory.html vkFreeMemory registry at www.khronos.org>
+foreign import ccall unsafe "vkFreeMemory" vkFreeMemory ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkFreeMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkFreeMemory.html vkFreeMemory registry at www.khronos.org>
+foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | 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/man/html/vkMapMemory.html vkMapMemory registry at www.khronos.org>
+foreign import ccall unsafe "vkMapMemory" vkMapMemory ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+-- | 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/man/html/vkMapMemory.html vkMapMemory registry at www.khronos.org>
+foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+-- | > () vkUnmapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUnmapMemory.html vkUnmapMemory registry at www.khronos.org>
+foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemory ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+-- | > () vkUnmapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUnmapMemory.html vkUnmapMemory registry at www.khronos.org>
+foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+-- | 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/man/html/vkFlushMappedMemoryRanges.html vkFlushMappedMemoryRanges registry at www.khronos.org>
+foreign import ccall unsafe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRanges ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkFlushMappedMemoryRanges.html vkFlushMappedMemoryRanges registry at www.khronos.org>
+foreign import ccall safe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkInvalidateMappedMemoryRanges.html vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRanges ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkInvalidateMappedMemoryRanges.html vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+foreign import ccall safe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+-- | > () vkGetDeviceMemoryCommitment
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize* pCommittedMemoryInBytes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceMemoryCommitment.html vkGetDeviceMemoryCommitment registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitment ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+-- | > () vkGetDeviceMemoryCommitment
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize* pCommittedMemoryInBytes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceMemoryCommitment.html vkGetDeviceMemoryCommitment registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitmentSafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+-- | 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/man/html/vkBindBufferMemory.html vkBindBufferMemory registry at www.khronos.org>
+foreign import ccall unsafe "vkBindBufferMemory" vkBindBufferMemory
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+-- | 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/man/html/vkBindBufferMemory.html vkBindBufferMemory registry at www.khronos.org>
+foreign import ccall safe "vkBindBufferMemory"
+               vkBindBufferMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+-- | 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/man/html/vkBindImageMemory.html vkBindImageMemory registry at www.khronos.org>
+foreign import ccall unsafe "vkBindImageMemory" vkBindImageMemory
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+-- | 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/man/html/vkBindImageMemory.html vkBindImageMemory registry at www.khronos.org>
+foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+-- | > () vkGetBufferMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetBufferMemoryRequirements.html vkGetBufferMemoryRequirements registry at www.khronos.org>
+foreign import ccall unsafe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirements ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+-- | > () vkGetBufferMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetBufferMemoryRequirements.html vkGetBufferMemoryRequirements registry at www.khronos.org>
+foreign import ccall safe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+-- | > () vkGetImageMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageMemoryRequirements.html vkGetImageMemoryRequirements registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirements ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+-- | > () vkGetImageMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageMemoryRequirements.html vkGetImageMemoryRequirements registry at www.khronos.org>
+foreign import ccall safe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+-- | > () vkGetImageSparseMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSparseMemoryRequirements.html vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirements ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+-- | > () vkGetImageSparseMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSparseMemoryRequirements.html vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+foreign import ccall safe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+-- | > () 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/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+-- | > () 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/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+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 ()
+
+-- | 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/man/html/vkQueueBindSparse.html vkQueueBindSparse registry at www.khronos.org>
+foreign import ccall unsafe "vkQueueBindSparse" vkQueueBindSparse
+               ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkQueueBindSparse.html vkQueueBindSparse registry at www.khronos.org>
+foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
+               ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkCreateFence.html vkCreateFence registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateFence" vkCreateFence ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+-- | 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/man/html/vkCreateFence.html vkCreateFence registry at www.khronos.org>
+foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+-- | > () vkDestroyFence
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyFence.html vkDestroyFence registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyFence" vkDestroyFence ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+-- | > () vkDestroyFence
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyFence.html vkDestroyFence registry at www.khronos.org>
+foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+-- | 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/man/html/vkResetFences.html vkResetFences registry at www.khronos.org>
+foreign import ccall unsafe "vkResetFences" vkResetFences ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+-- | 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/man/html/vkResetFences.html vkResetFences registry at www.khronos.org>
+foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+-- | 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/man/html/vkGetFenceStatus.html vkGetFenceStatus registry at www.khronos.org>
+foreign import ccall unsafe "vkGetFenceStatus" vkGetFenceStatus ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> IO VkResult
+
+-- | 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/man/html/vkGetFenceStatus.html vkGetFenceStatus registry at www.khronos.org>
+foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkFence -- ^ fence
+                                      -> IO VkResult
+
+-- | 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/man/html/vkWaitForFences.html vkWaitForFences registry at www.khronos.org>
+foreign import ccall unsafe "vkWaitForFences" vkWaitForFences ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkWaitForFences.html vkWaitForFences registry at www.khronos.org>
+foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkCreateSemaphore.html vkCreateSemaphore registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateSemaphore" vkCreateSemaphore
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkCreateSemaphore.html vkCreateSemaphore registry at www.khronos.org>
+foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+-- | > () vkDestroySemaphore
+--   >     ( VkDevice device
+--   >     , VkSemaphore semaphore
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySemaphore.html vkDestroySemaphore registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroySemaphore" vkDestroySemaphore
+               :: VkDevice -- ^ device
+                           -> VkSemaphore -- ^ semaphore
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkDestroySemaphore
+--   >     ( VkDevice device
+--   >     , VkSemaphore semaphore
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySemaphore.html vkDestroySemaphore registry at www.khronos.org>
+foreign import ccall safe "vkDestroySemaphore"
+               vkDestroySemaphoreSafe ::
+               VkDevice -- ^ device
+                        -> VkSemaphore -- ^ semaphore
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+-- | 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/man/html/vkCreateEvent.html vkCreateEvent registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateEvent" vkCreateEvent ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+-- | 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/man/html/vkCreateEvent.html vkCreateEvent registry at www.khronos.org>
+foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+-- | > () vkDestroyEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyEvent.html vkDestroyEvent registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyEvent" vkDestroyEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+-- | > () vkDestroyEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyEvent.html vkDestroyEvent registry at www.khronos.org>
+foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+-- | 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/man/html/vkGetEventStatus.html vkGetEventStatus registry at www.khronos.org>
+foreign import ccall unsafe "vkGetEventStatus" vkGetEventStatus ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+-- | 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/man/html/vkGetEventStatus.html vkGetEventStatus registry at www.khronos.org>
+foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+
+-- | 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/man/html/vkSetEvent.html vkSetEvent registry at www.khronos.org>
+foreign import ccall unsafe "vkSetEvent" vkSetEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+-- | 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/man/html/vkSetEvent.html vkSetEvent registry at www.khronos.org>
+foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+-- | 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/man/html/vkResetEvent.html vkResetEvent registry at www.khronos.org>
+foreign import ccall unsafe "vkResetEvent" vkResetEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+-- | 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/man/html/vkResetEvent.html vkResetEvent registry at www.khronos.org>
+foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+-- | 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/man/html/vkCreateQueryPool.html vkCreateQueryPool registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateQueryPool" vkCreateQueryPool
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkCreateQueryPool.html vkCreateQueryPool registry at www.khronos.org>
+foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+-- | > () vkDestroyQueryPool
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyQueryPool.html vkDestroyQueryPool registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyQueryPool" vkDestroyQueryPool
+               :: VkDevice -- ^ device
+                           -> VkQueryPool -- ^ queryPool
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkDestroyQueryPool
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyQueryPool.html vkDestroyQueryPool registry at www.khronos.org>
+foreign import ccall safe "vkDestroyQueryPool"
+               vkDestroyQueryPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkQueryPool -- ^ queryPool
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+-- | 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/man/html/vkGetQueryPoolResults.html vkGetQueryPoolResults registry at www.khronos.org>
+foreign import ccall unsafe "vkGetQueryPoolResults"
+               vkGetQueryPoolResults ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+-- | 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/man/html/vkGetQueryPoolResults.html vkGetQueryPoolResults registry at www.khronos.org>
+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
+
+-- | 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/man/html/vkCreateBuffer.html vkCreateBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateBuffer" vkCreateBuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+-- | 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/man/html/vkCreateBuffer.html vkCreateBuffer registry at www.khronos.org>
+foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+-- | > () vkDestroyBuffer
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyBuffer.html vkDestroyBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBuffer ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> IO ()
+
+-- | > () vkDestroyBuffer
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyBuffer.html vkDestroyBuffer registry at www.khronos.org>
+foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> IO ()
+
+-- | 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/man/html/vkCreateBufferView.html vkCreateBufferView registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateBufferView" vkCreateBufferView
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+-- | 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/man/html/vkCreateBufferView.html vkCreateBufferView registry at www.khronos.org>
+foreign import ccall safe "vkCreateBufferView"
+               vkCreateBufferViewSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+-- | > () vkDestroyBufferView
+--   >     ( VkDevice device
+--   >     , VkBufferView bufferView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyBufferView.html vkDestroyBufferView registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyBufferView"
+               vkDestroyBufferView ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+-- | > () vkDestroyBufferView
+--   >     ( VkDevice device
+--   >     , VkBufferView bufferView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyBufferView.html vkDestroyBufferView registry at www.khronos.org>
+foreign import ccall safe "vkDestroyBufferView"
+               vkDestroyBufferViewSafe ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+-- | 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/man/html/vkCreateImage.html vkCreateImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateImage" vkCreateImage ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+-- | 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/man/html/vkCreateImage.html vkCreateImage registry at www.khronos.org>
+foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+-- | > () vkDestroyImage
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyImage.html vkDestroyImage registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyImage" vkDestroyImage ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+-- | > () vkDestroyImage
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyImage.html vkDestroyImage registry at www.khronos.org>
+foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+-- | > () vkGetImageSubresourceLayout
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkImageSubresource* pSubresource
+--   >     , VkSubresourceLayout* pLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSubresourceLayout.html vkGetImageSubresourceLayout registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayout ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+-- | > () vkGetImageSubresourceLayout
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkImageSubresource* pSubresource
+--   >     , VkSubresourceLayout* pLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSubresourceLayout.html vkGetImageSubresourceLayout registry at www.khronos.org>
+foreign import ccall safe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+-- | 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/man/html/vkCreateImageView.html vkCreateImageView registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateImageView" vkCreateImageView
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkCreateImageView.html vkCreateImageView registry at www.khronos.org>
+foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+-- | > () vkDestroyImageView
+--   >     ( VkDevice device
+--   >     , VkImageView imageView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyImageView.html vkDestroyImageView registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyImageView" vkDestroyImageView
+               :: VkDevice -- ^ device
+                           -> VkImageView -- ^ imageView
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkDestroyImageView
+--   >     ( VkDevice device
+--   >     , VkImageView imageView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyImageView.html vkDestroyImageView registry at www.khronos.org>
+foreign import ccall safe "vkDestroyImageView"
+               vkDestroyImageViewSafe ::
+               VkDevice -- ^ device
+                        -> VkImageView -- ^ imageView
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+-- | 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/man/html/vkCreateShaderModule.html vkCreateShaderModule registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateShaderModule"
+               vkCreateShaderModule ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkCreateShaderModule.html vkCreateShaderModule registry at www.khronos.org>
+foreign import ccall safe "vkCreateShaderModule"
+               vkCreateShaderModuleSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+-- | > () vkDestroyShaderModule
+--   >     ( VkDevice device
+--   >     , VkShaderModule shaderModule
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyShaderModule.html vkDestroyShaderModule registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyShaderModule"
+               vkDestroyShaderModule ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkDestroyShaderModule
+--   >     ( VkDevice device
+--   >     , VkShaderModule shaderModule
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyShaderModule.html vkDestroyShaderModule registry at www.khronos.org>
+foreign import ccall safe "vkDestroyShaderModule"
+               vkDestroyShaderModuleSafe ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | 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/man/html/vkCreatePipelineCache.html vkCreatePipelineCache registry at www.khronos.org>
+foreign import ccall unsafe "vkCreatePipelineCache"
+               vkCreatePipelineCache ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkCreatePipelineCache.html vkCreatePipelineCache registry at www.khronos.org>
+foreign import ccall safe "vkCreatePipelineCache"
+               vkCreatePipelineCacheSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+-- | > () vkDestroyPipelineCache
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyPipelineCache.html vkDestroyPipelineCache registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyPipelineCache"
+               vkDestroyPipelineCache ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+-- | > () vkDestroyPipelineCache
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyPipelineCache.html vkDestroyPipelineCache registry at www.khronos.org>
+foreign import ccall safe "vkDestroyPipelineCache"
+               vkDestroyPipelineCacheSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+-- | 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/man/html/vkGetPipelineCacheData.html vkGetPipelineCacheData registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPipelineCacheData"
+               vkGetPipelineCacheData ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkGetPipelineCacheData.html vkGetPipelineCacheData registry at www.khronos.org>
+foreign import ccall safe "vkGetPipelineCacheData"
+               vkGetPipelineCacheDataSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkMergePipelineCaches.html vkMergePipelineCaches registry at www.khronos.org>
+foreign import ccall unsafe "vkMergePipelineCaches"
+               vkMergePipelineCaches ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkMergePipelineCaches.html vkMergePipelineCaches registry at www.khronos.org>
+foreign import ccall safe "vkMergePipelineCaches"
+               vkMergePipelineCachesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkCreateGraphicsPipelines.html vkCreateGraphicsPipelines registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelines ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkCreateGraphicsPipelines.html vkCreateGraphicsPipelines registry at www.khronos.org>
+foreign import ccall safe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkCreateComputePipelines.html vkCreateComputePipelines registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateComputePipelines"
+               vkCreateComputePipelines ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkCreateComputePipelines.html vkCreateComputePipelines registry at www.khronos.org>
+foreign import ccall safe "vkCreateComputePipelines"
+               vkCreateComputePipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+-- | > () vkDestroyPipeline
+--   >     ( VkDevice device
+--   >     , VkPipeline pipeline
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyPipeline.html vkDestroyPipeline registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyPipeline" vkDestroyPipeline
+               :: VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+-- | > () vkDestroyPipeline
+--   >     ( VkDevice device
+--   >     , VkPipeline pipeline
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyPipeline.html vkDestroyPipeline registry at www.khronos.org>
+foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
+               :: VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+-- | 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/man/html/vkCreatePipelineLayout.html vkCreatePipelineLayout registry at www.khronos.org>
+foreign import ccall unsafe "vkCreatePipelineLayout"
+               vkCreatePipelineLayout ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+-- | 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/man/html/vkCreatePipelineLayout.html vkCreatePipelineLayout registry at www.khronos.org>
+foreign import ccall safe "vkCreatePipelineLayout"
+               vkCreatePipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+-- | > () vkDestroyPipelineLayout
+--   >     ( VkDevice device
+--   >     , VkPipelineLayout pipelineLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyPipelineLayout.html vkDestroyPipelineLayout registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayout ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | > () vkDestroyPipelineLayout
+--   >     ( VkDevice device
+--   >     , VkPipelineLayout pipelineLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyPipelineLayout.html vkDestroyPipelineLayout registry at www.khronos.org>
+foreign import ccall safe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | 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/man/html/vkCreateSampler.html vkCreateSampler registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateSampler" vkCreateSampler ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+-- | 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/man/html/vkCreateSampler.html vkCreateSampler registry at www.khronos.org>
+foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+-- | > () vkDestroySampler
+--   >     ( VkDevice device
+--   >     , VkSampler sampler
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySampler.html vkDestroySampler registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroySampler" vkDestroySampler ::
+               VkDevice -- ^ device
+                        -> VkSampler -- ^ sampler
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+
+-- | > () vkDestroySampler
+--   >     ( VkDevice device
+--   >     , VkSampler sampler
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySampler.html vkDestroySampler registry at www.khronos.org>
+foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
+               :: VkDevice -- ^ device
+                           -> VkSampler -- ^ sampler
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+-- | 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/man/html/vkCreateDescriptorSetLayout.html vkCreateDescriptorSetLayout registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayout ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+-- | 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/man/html/vkCreateDescriptorSetLayout.html vkCreateDescriptorSetLayout registry at www.khronos.org>
+foreign import ccall safe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+-- | > () vkDestroyDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , VkDescriptorSetLayout descriptorSetLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorSetLayout.html vkDestroyDescriptorSetLayout registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayout ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+-- | > () vkDestroyDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , VkDescriptorSetLayout descriptorSetLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorSetLayout.html vkDestroyDescriptorSetLayout registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorPool
+--   >     ( VkDevice device
+--   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorPool* pDescriptorPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDescriptorPool.html vkCreateDescriptorPool registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateDescriptorPool"
+               vkCreateDescriptorPool ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorPool
+--   >     ( VkDevice device
+--   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorPool* pDescriptorPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDescriptorPool.html vkCreateDescriptorPool registry at www.khronos.org>
+foreign import ccall safe "vkCreateDescriptorPool"
+               vkCreateDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+-- | > () vkDestroyDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorPool.html vkDestroyDescriptorPool registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPool ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | > () vkDestroyDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorPool.html vkDestroyDescriptorPool registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | 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/man/html/vkResetDescriptorPool.html vkResetDescriptorPool registry at www.khronos.org>
+foreign import ccall unsafe "vkResetDescriptorPool"
+               vkResetDescriptorPool ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkResetDescriptorPool.html vkResetDescriptorPool registry at www.khronos.org>
+foreign import ccall safe "vkResetDescriptorPool"
+               vkResetDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkAllocateDescriptorSets.html vkAllocateDescriptorSets registry at www.khronos.org>
+foreign import ccall unsafe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSets ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+-- | 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/man/html/vkAllocateDescriptorSets.html vkAllocateDescriptorSets registry at www.khronos.org>
+foreign import ccall safe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+-- | 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/man/html/vkFreeDescriptorSets.html vkFreeDescriptorSets registry at www.khronos.org>
+foreign import ccall unsafe "vkFreeDescriptorSets"
+               vkFreeDescriptorSets ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkFreeDescriptorSets.html vkFreeDescriptorSets registry at www.khronos.org>
+foreign import ccall safe "vkFreeDescriptorSets"
+               vkFreeDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+-- | > () 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/man/html/vkUpdateDescriptorSets.html vkUpdateDescriptorSets registry at www.khronos.org>
+foreign import ccall unsafe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSets ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+-- | > () 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/man/html/vkUpdateDescriptorSets.html vkUpdateDescriptorSets registry at www.khronos.org>
+foreign import ccall safe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+-- | 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/man/html/vkCreateFramebuffer.html vkCreateFramebuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateFramebuffer"
+               vkCreateFramebuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkCreateFramebuffer.html vkCreateFramebuffer registry at www.khronos.org>
+foreign import ccall safe "vkCreateFramebuffer"
+               vkCreateFramebufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+-- | > () vkDestroyFramebuffer
+--   >     ( VkDevice device
+--   >     , VkFramebuffer framebuffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyFramebuffer.html vkDestroyFramebuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyFramebuffer"
+               vkDestroyFramebuffer ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+-- | > () vkDestroyFramebuffer
+--   >     ( VkDevice device
+--   >     , VkFramebuffer framebuffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyFramebuffer.html vkDestroyFramebuffer registry at www.khronos.org>
+foreign import ccall safe "vkDestroyFramebuffer"
+               vkDestroyFramebufferSafe ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+-- | 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/man/html/vkCreateRenderPass.html vkCreateRenderPass registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateRenderPass" vkCreateRenderPass
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+-- | 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/man/html/vkCreateRenderPass.html vkCreateRenderPass registry at www.khronos.org>
+foreign import ccall safe "vkCreateRenderPass"
+               vkCreateRenderPassSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+-- | > () vkDestroyRenderPass
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyRenderPass.html vkDestroyRenderPass registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyRenderPass"
+               vkDestroyRenderPass ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+-- | > () vkDestroyRenderPass
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyRenderPass.html vkDestroyRenderPass registry at www.khronos.org>
+foreign import ccall safe "vkDestroyRenderPass"
+               vkDestroyRenderPassSafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+-- | > () vkGetRenderAreaGranularity
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , VkExtent2D* pGranularity
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetRenderAreaGranularity.html vkGetRenderAreaGranularity registry at www.khronos.org>
+foreign import ccall unsafe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularity ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+-- | > () vkGetRenderAreaGranularity
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , VkExtent2D* pGranularity
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetRenderAreaGranularity.html vkGetRenderAreaGranularity registry at www.khronos.org>
+foreign import ccall safe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularitySafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+-- | 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/man/html/vkCreateCommandPool.html vkCreateCommandPool registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateCommandPool"
+               vkCreateCommandPool ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkCreateCommandPool.html vkCreateCommandPool registry at www.khronos.org>
+foreign import ccall safe "vkCreateCommandPool"
+               vkCreateCommandPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+-- | > () vkDestroyCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyCommandPool.html vkDestroyCommandPool registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyCommandPool"
+               vkDestroyCommandPool ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+-- | > () vkDestroyCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyCommandPool.html vkDestroyCommandPool registry at www.khronos.org>
+foreign import ccall safe "vkDestroyCommandPool"
+               vkDestroyCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+-- | 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/man/html/vkResetCommandPool.html vkResetCommandPool registry at www.khronos.org>
+foreign import ccall unsafe "vkResetCommandPool" vkResetCommandPool
+               ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkResetCommandPool.html vkResetCommandPool registry at www.khronos.org>
+foreign import ccall safe "vkResetCommandPool"
+               vkResetCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+-- | 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/man/html/vkAllocateCommandBuffers.html vkAllocateCommandBuffers registry at www.khronos.org>
+foreign import ccall unsafe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffers ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+-- | 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/man/html/vkAllocateCommandBuffers.html vkAllocateCommandBuffers registry at www.khronos.org>
+foreign import ccall safe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+-- | > () vkFreeCommandBuffers
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkFreeCommandBuffers.html vkFreeCommandBuffers registry at www.khronos.org>
+foreign import ccall unsafe "vkFreeCommandBuffers"
+               vkFreeCommandBuffers ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+-- | > () vkFreeCommandBuffers
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkFreeCommandBuffers.html vkFreeCommandBuffers registry at www.khronos.org>
+foreign import ccall safe "vkFreeCommandBuffers"
+               vkFreeCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+-- | 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/man/html/vkBeginCommandBuffer.html vkBeginCommandBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkBeginCommandBuffer"
+               vkBeginCommandBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+-- | 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/man/html/vkBeginCommandBuffer.html vkBeginCommandBuffer registry at www.khronos.org>
+foreign import ccall safe "vkBeginCommandBuffer"
+               vkBeginCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+-- | 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/man/html/vkEndCommandBuffer.html vkEndCommandBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkEndCommandBuffer" vkEndCommandBuffer
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> IO VkResult
+
+-- | 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/man/html/vkEndCommandBuffer.html vkEndCommandBuffer registry at www.khronos.org>
+foreign import ccall safe "vkEndCommandBuffer"
+               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO VkResult
+
+-- | 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/man/html/vkResetCommandBuffer.html vkResetCommandBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkResetCommandBuffer"
+               vkResetCommandBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+-- | 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/man/html/vkResetCommandBuffer.html vkResetCommandBuffer registry at www.khronos.org>
+foreign import ccall safe "vkResetCommandBuffer"
+               vkResetCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBindPipeline
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipeline pipeline
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBindPipeline.html vkCmdBindPipeline registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBindPipeline" vkCmdBindPipeline
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBindPipeline
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipeline pipeline
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBindPipeline.html vkCmdBindPipeline registry at www.khronos.org>
+foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetViewport
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstViewport
+--   >     , uint32_t viewportCount
+--   >     , const VkViewport* pViewports
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetViewport.html vkCmdSetViewport registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetViewport" vkCmdSetViewport ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstViewport
+                                         -> Word32 -- ^ viewportCount
+                                                   -> Ptr VkViewport -- ^ pViewports
+                                                                     -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetViewport
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstViewport
+--   >     , uint32_t viewportCount
+--   >     , const VkViewport* pViewports
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetViewport.html vkCmdSetViewport registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ firstViewport
+                                            -> Word32 -- ^ viewportCount
+                                                      -> Ptr VkViewport -- ^ pViewports
+                                                                        -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetScissor
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstScissor
+--   >     , uint32_t scissorCount
+--   >     , const VkRect2D* pScissors
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetScissor.html vkCmdSetScissor registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissor ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstScissor
+                                         -> Word32 -- ^ scissorCount
+                                                   -> Ptr VkRect2D -- ^ pScissors
+                                                                   -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetScissor
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstScissor
+--   >     , uint32_t scissorCount
+--   >     , const VkRect2D* pScissors
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetScissor.html vkCmdSetScissor registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstScissor
+                                         -> Word32 -- ^ scissorCount
+                                                   -> Ptr VkRect2D -- ^ pScissors
+                                                                   -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetLineWidth
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float lineWidth
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetLineWidth.html vkCmdSetLineWidth registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetLineWidth" vkCmdSetLineWidth
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetLineWidth
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float lineWidth
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetLineWidth.html vkCmdSetLineWidth registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDepthBias
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float depthBiasConstantFactor
+--   >     , float depthBiasClamp
+--   >     , float depthBiasSlopeFactor
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDepthBias.html vkCmdSetDepthBias registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetDepthBias" vkCmdSetDepthBias
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDepthBias
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float depthBiasConstantFactor
+--   >     , float depthBiasClamp
+--   >     , float depthBiasSlopeFactor
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDepthBias.html vkCmdSetDepthBias registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetBlendConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const float blendConstants[4]
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetBlendConstants.html vkCmdSetBlendConstants registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstants ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetBlendConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const float blendConstants[4]
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetBlendConstants.html vkCmdSetBlendConstants registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDepthBounds
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float minDepthBounds
+--   >     , float maxDepthBounds
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDepthBounds.html vkCmdSetDepthBounds registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBounds ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDepthBounds
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float minDepthBounds
+--   >     , float maxDepthBounds
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDepthBounds.html vkCmdSetDepthBounds registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBoundsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetStencilCompareMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t compareMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetStencilCompareMask.html vkCmdSetStencilCompareMask registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMask ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetStencilCompareMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t compareMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetStencilCompareMask.html vkCmdSetStencilCompareMask registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetStencilWriteMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t writeMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetStencilWriteMask.html vkCmdSetStencilWriteMask registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMask ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetStencilWriteMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t writeMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetStencilWriteMask.html vkCmdSetStencilWriteMask registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetStencilReference
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t reference
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetStencilReference.html vkCmdSetStencilReference registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetStencilReference"
+               vkCmdSetStencilReference ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetStencilReference
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t reference
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetStencilReference.html vkCmdSetStencilReference registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetStencilReference"
+               vkCmdSetStencilReferenceSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdBindDescriptorSets.html vkCmdBindDescriptorSets registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSets ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdBindDescriptorSets.html vkCmdBindDescriptorSets registry at www.khronos.org>
+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 ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBindIndexBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkIndexType indexType
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBindIndexBuffer.html vkCmdBindIndexBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBindIndexBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkIndexType indexType
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBindIndexBuffer.html vkCmdBindIndexBuffer registry at www.khronos.org>
+foreign import ccall safe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdBindVertexBuffers.html vkCmdBindVertexBuffers registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffers ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdBindVertexBuffers.html vkCmdBindVertexBuffers registry at www.khronos.org>
+foreign import ccall safe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffersSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () 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/man/html/vkCmdDraw.html vkCmdDraw registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDraw" vkCmdDraw ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () 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/man/html/vkCmdDraw.html vkCmdDraw registry at www.khronos.org>
+foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () 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/man/html/vkCmdDrawIndexed.html vkCmdDrawIndexed registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDrawIndexed" vkCmdDrawIndexed ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () 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/man/html/vkCmdDrawIndexed.html vkCmdDrawIndexed registry at www.khronos.org>
+foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdDrawIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndirect.html vkCmdDrawIndirect registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDrawIndirect" vkCmdDrawIndirect
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdDrawIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndirect.html vkCmdDrawIndirect registry at www.khronos.org>
+foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdDrawIndexedIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndexedIndirect.html vkCmdDrawIndexedIndirect registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirect ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdDrawIndexedIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndexedIndirect.html vkCmdDrawIndexedIndirect registry at www.khronos.org>
+foreign import ccall safe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+-- | queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @compute@
+--
+--   > () vkCmdDispatch
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDispatch.html vkCmdDispatch registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatch ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+-- | queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @compute@
+--
+--   > () vkCmdDispatch
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDispatch.html vkCmdDispatch registry at www.khronos.org>
+foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+-- | queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @compute@
+--
+--   > () vkCmdDispatchIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDispatchIndirect.html vkCmdDispatchIndirect registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirect ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+-- | queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @compute@
+--
+--   > () vkCmdDispatchIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDispatchIndirect.html vkCmdDispatchIndirect registry at www.khronos.org>
+foreign import ccall safe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdCopyBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdCopyBuffer.html vkCmdCopyBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdCopyBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdCopyBuffer.html vkCmdCopyBuffer registry at www.khronos.org>
+foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyImage.html vkCmdCopyImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyImage.html vkCmdCopyImage registry at www.khronos.org>
+foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdBlitImage.html vkCmdBlitImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdBlitImage.html vkCmdBlitImage registry at www.khronos.org>
+foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyBufferToImage.html vkCmdCopyBufferToImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyBufferToImage.html vkCmdCopyBufferToImage registry at www.khronos.org>
+foreign import ccall safe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyImageToBuffer.html vkCmdCopyImageToBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyImageToBuffer.html vkCmdCopyImageToBuffer registry at www.khronos.org>
+foreign import ccall safe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdUpdateBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize dataSize
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdUpdateBuffer.html vkCmdUpdateBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdUpdateBuffer" vkCmdUpdateBuffer
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdUpdateBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize dataSize
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdUpdateBuffer.html vkCmdUpdateBuffer registry at www.khronos.org>
+foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+-- | 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@
+--
+--   > () vkCmdFillBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize size
+--   >     , uint32_t data
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdFillBuffer.html vkCmdFillBuffer registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+-- | 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@
+--
+--   > () vkCmdFillBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize size
+--   >     , uint32_t data
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdFillBuffer.html vkCmdFillBuffer registry at www.khronos.org>
+foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdClearColorImage.html vkCmdClearColorImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdClearColorImage"
+               vkCmdClearColorImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdClearColorImage.html vkCmdClearColorImage registry at www.khronos.org>
+foreign import ccall safe "vkCmdClearColorImage"
+               vkCmdClearColorImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdClearDepthStencilImage.html vkCmdClearDepthStencilImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdClearDepthStencilImage.html vkCmdClearDepthStencilImage registry at www.khronos.org>
+foreign import ccall safe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () 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/man/html/vkCmdClearAttachments.html vkCmdClearAttachments registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdClearAttachments"
+               vkCmdClearAttachments ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () 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/man/html/vkCmdClearAttachments.html vkCmdClearAttachments registry at www.khronos.org>
+foreign import ccall safe "vkCmdClearAttachments"
+               vkCmdClearAttachmentsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdResolveImage.html vkCmdResolveImage registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdResolveImage" vkCmdResolveImage
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdResolveImage.html vkCmdResolveImage registry at www.khronos.org>
+foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdSetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetEvent.html vkCmdSetEvent registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEvent ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdSetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetEvent.html vkCmdSetEvent registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdResetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdResetEvent.html vkCmdResetEvent registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEvent ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdResetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdResetEvent.html vkCmdResetEvent registry at www.khronos.org>
+foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdWaitEvents.html vkCmdWaitEvents registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdWaitEvents" 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 ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdWaitEvents.html vkCmdWaitEvents registry at www.khronos.org>
+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 ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdPipelineBarrier.html vkCmdPipelineBarrier registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdPipelineBarrier"
+               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 ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdPipelineBarrier.html vkCmdPipelineBarrier registry at www.khronos.org>
+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 ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBeginQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     , VkQueryControlFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBeginQuery.html vkCmdBeginQuery registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQuery ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBeginQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     , VkQueryControlFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBeginQuery.html vkCmdBeginQuery registry at www.khronos.org>
+foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdEndQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdEndQuery.html vkCmdEndQuery registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQuery ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdEndQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdEndQuery.html vkCmdEndQuery registry at www.khronos.org>
+foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdResetQueryPool
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdResetQueryPool.html vkCmdResetQueryPool registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdResetQueryPool"
+               vkCmdResetQueryPool ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdResetQueryPool
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdResetQueryPool.html vkCmdResetQueryPool registry at www.khronos.org>
+foreign import ccall safe "vkCmdResetQueryPool"
+               vkCmdResetQueryPoolSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdWriteTimestamp
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlagBits pipelineStage
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdWriteTimestamp.html vkCmdWriteTimestamp registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestamp ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdWriteTimestamp
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlagBits pipelineStage
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdWriteTimestamp.html vkCmdWriteTimestamp registry at www.khronos.org>
+foreign import ccall safe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestampSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyQueryPoolResults.html vkCmdCopyQueryPoolResults registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResults ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @transfer@
+--
+--   > () 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/man/html/vkCmdCopyQueryPoolResults.html vkCmdCopyQueryPoolResults registry at www.khronos.org>
+foreign import ccall safe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResultsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdPushConstants.html vkCmdPushConstants registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdPushConstants" vkCmdPushConstants
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () 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/man/html/vkCmdPushConstants.html vkCmdPushConstants registry at www.khronos.org>
+foreign import ccall safe "vkCmdPushConstants"
+               vkCmdPushConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdBeginRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkRenderPassBeginInfo* pRenderPassBegin
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBeginRenderPass.html vkCmdBeginRenderPass registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPass ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @outside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdBeginRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkRenderPassBeginInfo* pRenderPassBegin
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBeginRenderPass.html vkCmdBeginRenderPass registry at www.khronos.org>
+foreign import ccall safe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPassSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdNextSubpass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdNextSubpass.html vkCmdNextSubpass registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdNextSubpass" vkCmdNextSubpass ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkSubpassContents -- ^ contents
+                                                    -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdNextSubpass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdNextSubpass.html vkCmdNextSubpass registry at www.khronos.org>
+foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkSubpassContents -- ^ contents
+                                                       -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdEndRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdEndRenderPass.html vkCmdEndRenderPass registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdEndRenderPass" vkCmdEndRenderPass
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdEndRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdEndRenderPass.html vkCmdEndRenderPass registry at www.khronos.org>
+foreign import ccall safe "vkCmdEndRenderPass"
+               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdExecuteCommands
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdExecuteCommands.html vkCmdExecuteCommands registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdExecuteCommands"
+               vkCmdExecuteCommands ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdExecuteCommands
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdExecuteCommands.html vkCmdExecuteCommands registry at www.khronos.org>
+foreign import ccall safe "vkCmdExecuteCommands"
+               vkCmdExecuteCommandsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
diff --git a/src-gen/Graphics/Vulkan/Core_1_1.hs b/src-gen/Graphics/Vulkan/Core_1_1.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Core_1_1.hs
@@ -0,0 +1,2374 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+module Graphics.Vulkan.Core_1_1
+       (-- * Vulkan 1.1 core API interface definitions.
+        -- |
+        --
+        -- @api = vulkan@
+        --
+        -- @name = VK_VERSION_1_1@
+        --
+        -- @number = 1.1@
+        --
+
+        -- ** Device Initialization
+        vkEnumerateInstanceVersion, vkEnumerateInstanceVersionSafe,
+        module Graphics.Vulkan.Types.Enum.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,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSubgroupProperties,
+        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.VkShaderStageFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        module Graphics.Vulkan.Types.Enum.VkSubgroupFeatureFlags,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
+        -- ** Promoted from VK_KHR_bind_memory2
+        module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo,
+        -- > #include "vk_platform.h"
+        vkBindBufferMemory2, vkBindBufferMemory2Safe, vkBindImageMemory2,
+        vkBindImageMemory2Safe, module Graphics.Vulkan.Types.Handles,
+        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,
+        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeatures,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+        -- ** Promoted from VK_KHR_dedicated_allocation
+        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
+        module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfo,
+        module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirements,
+        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements,
+        module Graphics.Vulkan.Types.Struct.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
+        module Graphics.Vulkan.Types.Struct.VkBindSparseInfo,
+        module Graphics.Vulkan.Types.Struct.VkClearColorValue,
+        module Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue,
+        module Graphics.Vulkan.Types.Struct.VkClearValue,
+        module Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo,
+        module Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo,
+        module Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfo,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfo,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfo,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfo,
+        module Graphics.Vulkan.Types.Struct.VkExtent2D,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
+        module Graphics.Vulkan.Types.Struct.VkImageSubresource,
+        module Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlags,
+        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfo,
+        module Graphics.Vulkan.Types.Struct.VkOffset2D,
+        module Graphics.Vulkan.Types.Struct.VkOffset3D,
+        module Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
+        module Graphics.Vulkan.Types.Enum.VkQueryControlFlags,
+        module Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags,
+        module Graphics.Vulkan.Types.Struct.VkRect2D,
+        module Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo,
+        module Graphics.Vulkan.Types.Struct.VkSparseMemoryBind,
+        module Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags,
+        module Graphics.Vulkan.Types.Struct.VkSubmitInfo,
+        -- > #include "vk_platform.h"
+        vkGetDeviceGroupPeerMemoryFeatures,
+        vkGetDeviceGroupPeerMemoryFeaturesSafe, vkCmdSetDeviceMask,
+        vkCmdSetDeviceMaskSafe, vkCmdDispatchBase, 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
+        module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfo,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfo,
+        -- > #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
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupProperties,
+        -- > #include "vk_platform.h"
+        vkEnumeratePhysicalDeviceGroups,
+        vkEnumeratePhysicalDeviceGroupsSafe,
+        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
+        module Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2,
+        module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2,
+        module Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2,
+        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2,
+        -- > #include "vk_platform.h"
+        vkGetImageMemoryRequirements2, vkGetImageMemoryRequirements2Safe,
+        vkGetBufferMemoryRequirements2, vkGetBufferMemoryRequirements2Safe,
+        vkGetImageSparseMemoryRequirements2,
+        vkGetImageSparseMemoryRequirements2Safe,
+        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
+        module Graphics.Vulkan.Types.Enum.VkFormat,
+        module Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags,
+        module Graphics.Vulkan.Types.Struct.VkFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkFormatProperties2,
+        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2,
+        module Graphics.Vulkan.Types.Enum.VkImageTiling,
+        module Graphics.Vulkan.Types.Enum.VkImageType,
+        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
+        module Graphics.Vulkan.Types.Struct.VkMemoryHeap,
+        module Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags,
+        module Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags,
+        module Graphics.Vulkan.Types.Struct.VkMemoryType,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2,
+        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties,
+        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2,
+        module Graphics.Vulkan.Types.Enum.VkQueueFlags,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2,
+        -- > #include "vk_platform.h"
+        vkGetPhysicalDeviceFeatures2, vkGetPhysicalDeviceFeatures2Safe,
+        vkGetPhysicalDeviceProperties2, vkGetPhysicalDeviceProperties2Safe,
+        vkGetPhysicalDeviceFormatProperties2,
+        vkGetPhysicalDeviceFormatProperties2Safe,
+        vkGetPhysicalDeviceImageFormatProperties2,
+        vkGetPhysicalDeviceImageFormatProperties2Safe,
+        vkGetPhysicalDeviceQueueFamilyProperties2,
+        vkGetPhysicalDeviceQueueFamilyProperties2Safe,
+        vkGetPhysicalDeviceMemoryProperties2,
+        vkGetPhysicalDeviceMemoryProperties2Safe,
+        vkGetPhysicalDeviceSparseImageFormatProperties2,
+        vkGetPhysicalDeviceSparseImageFormatProperties2Safe,
+        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, 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.VkAccessFlags,
+        module Graphics.Vulkan.Types.Struct.VkAttachmentDescription,
+        module Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags,
+        module Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp,
+        module Graphics.Vulkan.Types.Struct.VkAttachmentReference,
+        module Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp,
+        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
+        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
+        module Graphics.Vulkan.Types.Enum.VkDependencyFlags,
+        module Graphics.Vulkan.Types.Enum.VkImageLayout,
+        module Graphics.Vulkan.Types.Struct.VkImageSubresourceRange,
+        module Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkImageViewType,
+        module Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReference,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingProperties,
+        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
+        module Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkPointClippingBehavior,
+        module Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkSubpassDependency,
+        module Graphics.Vulkan.Types.Struct.VkSubpassDescription,
+        module Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags,
+        module Graphics.Vulkan.Types.Enum.VkTessellationDomainOrigin,
+        -- > #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
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeatures,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewProperties,
+        module Graphics.Vulkan.Types.Struct.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,
+        -- ** Promoted from VK_KHR_variable_pointers
+        module Graphics.Vulkan.Types.Struct.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.
+        module Graphics.Vulkan.Types.Struct.VkDeviceQueueInfo2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryFeatures,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryProperties,
+        module Graphics.Vulkan.Types.Struct.VkProtectedSubmitInfo,
+        -- > #include "vk_platform.h"
+        vkGetDeviceQueue2, 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
+        module Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfo,
+        module Graphics.Vulkan.Types.Enum.VkBorderColor,
+        module Graphics.Vulkan.Types.Enum.VkChromaLocation,
+        module Graphics.Vulkan.Types.Enum.VkCompareOp,
+        module Graphics.Vulkan.Types.Enum.VkFilter,
+        module Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfo,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        module Graphics.Vulkan.Types.Enum.VkSamplerAddressMode,
+        module Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode,
+        module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfo,
+        module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion,
+        module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange,
+        -- > #include "vk_platform.h"
+        vkCreateSamplerYcbcrConversion, vkCreateSamplerYcbcrConversionSafe,
+        vkDestroySamplerYcbcrConversion,
+        vkDestroySamplerYcbcrConversionSafe,
+        module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
+        module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
+        module Graphics.Vulkan.Types.Funcpointers,
+        module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
+        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.VkDescriptorType,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType,
+        -- > #include "vk_platform.h"
+        vkCreateDescriptorUpdateTemplate,
+        vkCreateDescriptorUpdateTemplateSafe,
+        vkDestroyDescriptorUpdateTemplate,
+        vkDestroyDescriptorUpdateTemplateSafe,
+        vkUpdateDescriptorSetWithTemplate,
+        vkUpdateDescriptorSetWithTemplateSafe,
+        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.VkBufferCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkBufferUsageFlags,
+        module Graphics.Vulkan.Types.Struct.VkExternalBufferProperties,
+        module Graphics.Vulkan.Types.Struct.VkExternalImageFormatProperties,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags,
+        module Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfo,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDProperties,
+        -- > #include "vk_platform.h"
+        vkGetPhysicalDeviceExternalBufferProperties,
+        vkGetPhysicalDeviceExternalBufferPropertiesSafe,
+        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
+        module Graphics.Vulkan.Types.Struct.VkBufferCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfo,
+        module Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
+        module Graphics.Vulkan.Types.Enum.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,
+        -- ** Promoted from VK_KHR_external_fence_capabilities
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags,
+        module Graphics.Vulkan.Types.Struct.VkExternalFenceProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo,
+        -- > #include "vk_platform.h"
+        vkGetPhysicalDeviceExternalFenceProperties,
+        vkGetPhysicalDeviceExternalFencePropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+        -- ** Promoted from VK_KHR_external_fence
+        module Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkFenceCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkFenceCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkFenceImportFlags,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+        -- ** Promoted from VK_KHR_external_semaphore
+        module Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags,
+        module Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
+        -- ** Promoted from VK_KHR_external_semaphore_capabilities
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlags,
+        module Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo,
+        -- > #include "vk_platform.h"
+        vkGetPhysicalDeviceExternalSemaphoreProperties,
+        vkGetPhysicalDeviceExternalSemaphorePropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+        -- ** Promoted from VK_KHR_maintenance3
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3Properties,
+        -- > #include "vk_platform.h"
+        vkGetDescriptorSetLayoutSupport,
+        vkGetDescriptorSetLayoutSupportSafe,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo,
+        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
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceShaderDrawParameterFeatures,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES)
+       where
+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.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkAccessFlags
+import           Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags
+import           Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp
+import           Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp
+import           Graphics.Vulkan.Types.Enum.VkBorderColor
+import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkChromaLocation
+import           Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkCommandPoolCreateFlags
+                                                                                                 (VkCommandPoolCreateBitmask (..),
+                                                                                                 VkCommandPoolCreateFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkCompareOp
+import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle
+import           Graphics.Vulkan.Types.Enum.VkDependencyFlags
+import           Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkDescriptorType
+import           Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags
+import           Graphics.Vulkan.Types.Enum.VkFenceCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlags
+import           Graphics.Vulkan.Types.Enum.VkFilter
+import           Graphics.Vulkan.Types.Enum.VkFormat
+import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
+import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkImageLayout
+import           Graphics.Vulkan.Types.Enum.VkImageTiling
+import           Graphics.Vulkan.Types.Enum.VkImageType
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkImageViewType
+import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
+import           Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlags
+import           Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags
+import           Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags
+import           Graphics.Vulkan.Types.Enum.VkObjectType
+                                                                                                 (VkObjectType (..))
+import           Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
+import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
+import           Graphics.Vulkan.Types.Enum.VkPipelineCreateFlags
+                                                                                                 (VkPipelineCreateBitmask (..),
+                                                                                                 VkPipelineCreateFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
+import           Graphics.Vulkan.Types.Enum.VkPointClippingBehavior
+import           Graphics.Vulkan.Types.Enum.VkQueryControlFlags
+import           Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags
+import           Graphics.Vulkan.Types.Enum.VkQueueFlags
+import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Enum.VkSamplerAddressMode
+import           Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags
+import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags
+import           Graphics.Vulkan.Types.Enum.VkSharingMode
+import           Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags
+import           Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Enum.VkSubgroupFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags
+import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
+import           Graphics.Vulkan.Types.Enum.VkTessellationDomainOrigin
+import           Graphics.Vulkan.Types.Funcpointers
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.VkAttachmentDescription
+import           Graphics.Vulkan.Types.Struct.VkAttachmentReference
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfo
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfo
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo
+import           Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfo
+import           Graphics.Vulkan.Types.Struct.VkBindSparseInfo
+import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2
+import           Graphics.Vulkan.Types.Struct.VkClearColorValue
+import           Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue
+import           Graphics.Vulkan.Types.Struct.VkClearValue
+import           Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo
+import           Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo
+import           Graphics.Vulkan.Types.Struct.VkComponentMapping
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDeviceQueueInfo2
+import           Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkExtent2D
+import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkExternalBufferProperties
+import           Graphics.Vulkan.Types.Struct.VkExternalFenceProperties
+import           Graphics.Vulkan.Types.Struct.VkExternalImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties
+import           Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties
+import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkFormatProperties2
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2
+import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2
+import           Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfo
+import           Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2
+import           Graphics.Vulkan.Types.Struct.VkImageSubresource
+import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
+import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReference
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfo
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirements
+import           Graphics.Vulkan.Types.Struct.VkMemoryHeap
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2
+import           Graphics.Vulkan.Types.Struct.VkMemoryType
+import           Graphics.Vulkan.Types.Struct.VkOffset2D
+import           Graphics.Vulkan.Types.Struct.VkOffset3D
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfo
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3Properties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceShaderDrawParameterFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSubgroupProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeatures
+import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkProtectedSubmitInfo
+import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties
+import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2
+import           Graphics.Vulkan.Types.Struct.VkRect2D
+import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo
+import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfo
+import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2
+import           Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo
+import           Graphics.Vulkan.Types.Struct.VkSparseMemoryBind
+import           Graphics.Vulkan.Types.Struct.VkSubmitInfo
+import           Graphics.Vulkan.Types.Struct.VkSubpassDependency
+import           Graphics.Vulkan.Types.Struct.VkSubpassDescription
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkEnumerateInstanceVersion
+--   >     ( uint32_t* pApiVersion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkEnumerateInstanceVersion.html vkEnumerateInstanceVersion registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
+                                                        -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkEnumerateInstanceVersion
+--   >     ( uint32_t* pApiVersion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkEnumerateInstanceVersion.html vkEnumerateInstanceVersion registry at www.khronos.org>
+foreign import ccall safe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                                            -> IO VkResult
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
+        VkStructureType 1000094000
+
+-- | 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/man/html/vkBindBufferMemory2.html vkBindBufferMemory2 registry at www.khronos.org>
+foreign import ccall unsafe "vkBindBufferMemory2"
+               vkBindBufferMemory2 ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkBindBufferMemory2.html vkBindBufferMemory2 registry at www.khronos.org>
+foreign import ccall safe "vkBindBufferMemory2"
+               vkBindBufferMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+-- | 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/man/html/vkBindImageMemory2.html vkBindImageMemory2 registry at www.khronos.org>
+foreign import ccall unsafe "vkBindImageMemory2" vkBindImageMemory2
+               :: VkDevice -- ^ device
+                           -> Word32 -- ^ bindInfoCount
+                                     -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                  -> IO VkResult
+
+-- | 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/man/html/vkBindImageMemory2.html vkBindImageMemory2 registry at www.khronos.org>
+foreign import ccall safe "vkBindImageMemory2"
+               vkBindImageMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
+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 :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 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
+
+-- | > () vkGetDeviceGroupPeerMemoryFeatures
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupPeerMemoryFeatures.html vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeatures ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+-- | > () vkGetDeviceGroupPeerMemoryFeatures
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupPeerMemoryFeatures.html vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+-- | queues: 'graphics', 'compute', 'transfer'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDeviceMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDeviceMask.html vkCmdSetDeviceMask registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetDeviceMask" vkCmdSetDeviceMask
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ deviceMask
+                                            -> IO ()
+
+-- | queues: 'graphics', 'compute', 'transfer'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDeviceMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDeviceMask.html vkCmdSetDeviceMask registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> Word32 -- ^ deviceMask
+                                                                   -> IO ()
+
+-- | queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () 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/man/html/vkCmdDispatchBase.html vkCmdDispatchBase registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDispatchBase" vkCmdDispatchBase
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+-- | queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () 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/man/html/vkCmdDispatchBase.html vkCmdDispatchBase registry at www.khronos.org>
+foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+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 ::
+        VkPipelineCreateFlagBits
+
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
+        VkPipelineCreateFlagBits 8
+
+-- | bitpos = @4@
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
+        VkPipelineCreateFlagBits
+
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
+        VkPipelineCreateFlagBits 16
+
+-- | Dependency is across devices
+--
+--   bitpos = @2@
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits
+
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 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 ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
+        VkImageCreateFlagBits 64
+
+-- | 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/man/html/vkEnumeratePhysicalDeviceGroups.html vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroups ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+-- | 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/man/html/vkEnumeratePhysicalDeviceGroups.html vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+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 :: VkMemoryHeapFlagBits
+
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 2
+
+-- | > () vkGetImageMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageMemoryRequirements2.html vkGetImageMemoryRequirements2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2 ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+-- | > () vkGetImageMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageMemoryRequirements2.html vkGetImageMemoryRequirements2 registry at www.khronos.org>
+foreign import ccall safe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+-- | > () vkGetBufferMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetBufferMemoryRequirements2.html vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2 ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+-- | > () vkGetBufferMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetBufferMemoryRequirements2.html vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+foreign import ccall safe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+-- | > () vkGetImageSparseMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSparseMemoryRequirements2.html vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2 ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+-- | > () vkGetImageSparseMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSparseMemoryRequirements2.html vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+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
+
+-- | > () vkGetPhysicalDeviceFeatures2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFeatures2.html vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+-- | > () vkGetPhysicalDeviceFeatures2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFeatures2.html vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+-- | > () vkGetPhysicalDeviceProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceProperties2.html vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+-- | > () vkGetPhysicalDeviceProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceProperties2.html vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+-- | > () vkGetPhysicalDeviceFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties2* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFormatProperties2.html vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+-- | > () vkGetPhysicalDeviceFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties2* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFormatProperties2.html vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+-- | 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/man/html/vkGetPhysicalDeviceImageFormatProperties2.html vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+-- | 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/man/html/vkGetPhysicalDeviceImageFormatProperties2.html vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+-- | > () vkGetPhysicalDeviceQueueFamilyProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+-- | > () vkGetPhysicalDeviceQueueFamilyProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+-- | > () vkGetPhysicalDeviceMemoryProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMemoryProperties2.html vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+-- | > () vkGetPhysicalDeviceMemoryProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMemoryProperties2.html vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+-- | > () vkGetPhysicalDeviceSparseImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+-- | > () vkGetPhysicalDeviceSparseImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+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
+
+-- | > () vkTrimCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolTrimFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkTrimCommandPool.html vkTrimCommandPool registry at www.khronos.org>
+foreign import ccall unsafe "vkTrimCommandPool" vkTrimCommandPool
+               :: VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+
+-- | > () vkTrimCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolTrimFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkTrimCommandPool.html vkTrimCommandPool registry at www.khronos.org>
+foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
+               :: VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+
+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 ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
+        VkFormatFeatureFlagBits 16384
+
+-- | Format can be used as the destination image of image transfer commands
+--
+--   bitpos = @15@
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
+        VkFormatFeatureFlagBits 32768
+
+-- | The 3D image can be viewed as a 2D or 2D array image
+--
+--   bitpos = @5@
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
+        VkImageCreateFlagBits 32
+
+-- | bitpos = @7@
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
+        VkImageCreateFlagBits 128
+
+-- | bitpos = @8@
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
+        VkImageCreateFlagBits 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 :: VkDependencyFlagBits
+
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 2
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        = VkStructureType 1000120000
+
+-- | > () vkGetDeviceQueue2
+--   >     ( VkDevice device
+--   >     , const VkDeviceQueueInfo2* pQueueInfo
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceQueue2.html vkGetDeviceQueue2 registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDeviceQueue2" vkGetDeviceQueue2
+               :: VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+
+-- | > () vkGetDeviceQueue2
+--   >     ( VkDevice device
+--   >     , const VkDeviceQueueInfo2* pQueueInfo
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceQueue2.html vkGetDeviceQueue2 registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
+               :: VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+
+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 :: VkQueueFlagBits
+
+pattern VK_QUEUE_PROTECTED_BIT = VkQueueFlagBits 16
+
+-- | Queue is a protected-capable device queue
+--
+--   bitpos = @0@
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
+        VkDeviceQueueCreateFlagBits
+
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
+        VkDeviceQueueCreateFlagBits 1
+
+-- | Memory is protected
+--
+--   bitpos = @5@
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
+        VkMemoryPropertyFlagBits
+
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
+        VkMemoryPropertyFlagBits 32
+
+-- | Buffer requires protected memory
+--
+--   bitpos = @3@
+pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateFlagBits
+
+pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateFlagBits 8
+
+-- | Image requires protected memory
+--
+--   bitpos = @11@
+pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateFlagBits 2048
+
+-- | Command buffers allocated from pool are protected command buffers
+--
+--   bitpos = @2@
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
+        VkCommandPoolCreateFlagBits
+
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
+        VkCommandPoolCreateFlagBits 4
+
+-- | 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/man/html/vkCreateSamplerYcbcrConversion.html vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversion ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+-- | 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/man/html/vkCreateSamplerYcbcrConversion.html vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+foreign import ccall safe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+-- | > () vkDestroySamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySamplerYcbcrConversion.html vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversion ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkDestroySamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySamplerYcbcrConversion.html vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+foreign import ccall safe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+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 :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectFlagBits 16
+
+-- | bitpos = @5@
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectFlagBits 32
+
+-- | bitpos = @6@
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectFlagBits 64
+
+-- | bitpos = @9@
+pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateFlagBits 512
+
+-- | Format can have midpoint rather than cosited chroma samples
+--
+--   bitpos = @17@
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureFlagBits 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
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        = VkFormatFeatureFlagBits 262144
+
+-- | Format can have different chroma, min and mag filters
+--
+--   bitpos = @19@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        = VkFormatFeatureFlagBits 524288
+
+-- | bitpos = @20@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        = VkFormatFeatureFlagBits 1048576
+
+-- | bitpos = @21@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        = VkFormatFeatureFlagBits 2097152
+
+-- | Format supports disjoint planes
+--
+--   bitpos = @22@
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
+        VkFormatFeatureFlagBits 4194304
+
+-- | Format can have cosited rather than midpoint chroma samples
+--
+--   bitpos = @23@
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureFlagBits 8388608
+
+-- | 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/man/html/vkCreateDescriptorUpdateTemplate.html vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplate ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+-- | 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/man/html/vkCreateDescriptorUpdateTemplate.html vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+-- | > () vkDestroyDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorUpdateTemplate.html vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplate ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | > () vkDestroyDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorUpdateTemplate.html vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | > () vkUpdateDescriptorSetWithTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorSet descriptorSet
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUpdateDescriptorSetWithTemplate.html vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplate ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+-- | > () vkUpdateDescriptorSetWithTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorSet descriptorSet
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUpdateDescriptorSetWithTemplate.html vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+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
+
+-- | > () vkGetPhysicalDeviceExternalBufferProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalBufferProperties.html vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+-- | > () vkGetPhysicalDeviceExternalBufferProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalBufferProperties.html vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+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)
+
+-- | > () vkGetPhysicalDeviceExternalFenceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalFenceProperties.html vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFenceProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+-- | > () vkGetPhysicalDeviceExternalFenceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalFenceProperties.html vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+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
+
+-- | > () vkGetPhysicalDeviceExternalSemaphoreProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphoreProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+-- | > () vkGetPhysicalDeviceExternalSemaphoreProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+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
+
+-- | > () vkGetDescriptorSetLayoutSupport
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDescriptorSetLayoutSupport.html vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupport ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+-- | > () vkGetDescriptorSetLayoutSupport
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDescriptorSetLayoutSupport.html vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+        = VkStructureType 1000168000
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT =
+        VkStructureType 1000168001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
+        = VkStructureType 1000063000
diff --git a/src-gen/Graphics/Vulkan/Ext.hs b/src-gen/Graphics/Vulkan/Ext.hs
--- a/src-gen/Graphics/Vulkan/Ext.hs
+++ b/src-gen/Graphics/Vulkan/Ext.hs
@@ -47,7 +47,7 @@
     , module Graphics.Vulkan.Ext.VK_AMD_texture_gather_bias_lod
     , module Graphics.Vulkan.Ext.VK_AMD_shader_info
     , module Graphics.Vulkan.Ext.VK_AMD_shader_image_load_store_lod
-    , module Graphics.Vulkan.Ext.VK_KHX_multiview
+    , module Graphics.Vulkan.Ext.VK_KHR_multiview
     , module Graphics.Vulkan.Ext.VK_IMG_format_pvrtc
     , module Graphics.Vulkan.Ext.VK_NV_external_memory_capabilities
     , module Graphics.Vulkan.Ext.VK_NV_external_memory
@@ -60,7 +60,7 @@
 #endif
 
     , module Graphics.Vulkan.Ext.VK_KHR_get_physical_device_properties2
-    , module Graphics.Vulkan.Ext.VK_KHX_device_group
+    , module Graphics.Vulkan.Ext.VK_KHR_device_group
     , module Graphics.Vulkan.Ext.VK_EXT_validation_flags
 #ifdef VK_USE_PLATFORM_VI_NN
     , module Graphics.Vulkan.Ext.VK_NN_vi_surface
@@ -70,7 +70,7 @@
     , module Graphics.Vulkan.Ext.VK_EXT_shader_subgroup_ballot
     , module Graphics.Vulkan.Ext.VK_EXT_shader_subgroup_vote
     , module Graphics.Vulkan.Ext.VK_KHR_maintenance1
-    , module Graphics.Vulkan.Ext.VK_KHX_device_group_creation
+    , module Graphics.Vulkan.Ext.VK_KHR_device_group_creation
     , module Graphics.Vulkan.Ext.VK_KHR_external_memory_capabilities
     , module Graphics.Vulkan.Ext.VK_KHR_external_memory
 #ifdef VK_USE_PLATFORM_WIN32_KHR
@@ -134,6 +134,11 @@
     , module Graphics.Vulkan.Ext.VK_EXT_external_memory_dma_buf
     , module Graphics.Vulkan.Ext.VK_EXT_queue_family_foreign
     , module Graphics.Vulkan.Ext.VK_KHR_dedicated_allocation
+    , module Graphics.Vulkan.Ext.VK_EXT_debug_utils
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+    , module Graphics.Vulkan.Ext.VK_ANDROID_external_memory_android_hardware_buffer
+#endif
+
     , module Graphics.Vulkan.Ext.VK_EXT_sampler_filter_minmax
     , module Graphics.Vulkan.Ext.VK_KHR_storage_buffer_storage_class
     , module Graphics.Vulkan.Ext.VK_AMD_gpu_shader_int16
@@ -153,9 +158,11 @@
     , module Graphics.Vulkan.Ext.VK_KHR_bind_memory2
     , module Graphics.Vulkan.Ext.VK_EXT_validation_cache
     , module Graphics.Vulkan.Ext.VK_EXT_shader_viewport_index_layer
+    , module Graphics.Vulkan.Ext.VK_KHR_maintenance3
     , module Graphics.Vulkan.Ext.VK_EXT_global_priority
     , module Graphics.Vulkan.Ext.VK_EXT_external_memory_host
     , module Graphics.Vulkan.Ext.VK_AMD_buffer_marker
+    , module Graphics.Vulkan.Ext.VK_EXT_vertex_attribute_divisor
     ) where
 
 import Graphics.Vulkan.Ext.VK_KHR_surface
@@ -204,7 +211,7 @@
 import Graphics.Vulkan.Ext.VK_AMD_texture_gather_bias_lod
 import Graphics.Vulkan.Ext.VK_AMD_shader_info
 import Graphics.Vulkan.Ext.VK_AMD_shader_image_load_store_lod
-import Graphics.Vulkan.Ext.VK_KHX_multiview
+import Graphics.Vulkan.Ext.VK_KHR_multiview
 import Graphics.Vulkan.Ext.VK_IMG_format_pvrtc
 import Graphics.Vulkan.Ext.VK_NV_external_memory_capabilities
 import Graphics.Vulkan.Ext.VK_NV_external_memory
@@ -217,7 +224,7 @@
 #endif
 
 import Graphics.Vulkan.Ext.VK_KHR_get_physical_device_properties2
-import Graphics.Vulkan.Ext.VK_KHX_device_group
+import Graphics.Vulkan.Ext.VK_KHR_device_group
 import Graphics.Vulkan.Ext.VK_EXT_validation_flags
 #ifdef VK_USE_PLATFORM_VI_NN
 import Graphics.Vulkan.Ext.VK_NN_vi_surface
@@ -227,7 +234,7 @@
 import Graphics.Vulkan.Ext.VK_EXT_shader_subgroup_ballot
 import Graphics.Vulkan.Ext.VK_EXT_shader_subgroup_vote
 import Graphics.Vulkan.Ext.VK_KHR_maintenance1
-import Graphics.Vulkan.Ext.VK_KHX_device_group_creation
+import Graphics.Vulkan.Ext.VK_KHR_device_group_creation
 import Graphics.Vulkan.Ext.VK_KHR_external_memory_capabilities
 import Graphics.Vulkan.Ext.VK_KHR_external_memory
 #ifdef VK_USE_PLATFORM_WIN32_KHR
@@ -291,6 +298,11 @@
 import Graphics.Vulkan.Ext.VK_EXT_external_memory_dma_buf
 import Graphics.Vulkan.Ext.VK_EXT_queue_family_foreign
 import Graphics.Vulkan.Ext.VK_KHR_dedicated_allocation
+import Graphics.Vulkan.Ext.VK_EXT_debug_utils
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+import Graphics.Vulkan.Ext.VK_ANDROID_external_memory_android_hardware_buffer
+#endif
+
 import Graphics.Vulkan.Ext.VK_EXT_sampler_filter_minmax
 import Graphics.Vulkan.Ext.VK_KHR_storage_buffer_storage_class
 import Graphics.Vulkan.Ext.VK_AMD_gpu_shader_int16
@@ -310,6 +322,8 @@
 import Graphics.Vulkan.Ext.VK_KHR_bind_memory2
 import Graphics.Vulkan.Ext.VK_EXT_validation_cache
 import Graphics.Vulkan.Ext.VK_EXT_shader_viewport_index_layer
+import Graphics.Vulkan.Ext.VK_KHR_maintenance3
 import Graphics.Vulkan.Ext.VK_EXT_global_priority
 import Graphics.Vulkan.Ext.VK_EXT_external_memory_host
 import Graphics.Vulkan.Ext.VK_AMD_buffer_marker
+import Graphics.Vulkan.Ext.VK_EXT_vertex_attribute_divisor
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
@@ -19,7 +19,8 @@
         -- type: @device@
         --
         -- Extension number: @180@
-        vkCmdWriteBufferMarkerAMD, module Graphics.Vulkan.Marshal,
+        vkCmdWriteBufferMarkerAMD, vkCmdWriteBufferMarkerAMDSafe,
+        module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
         module Graphics.Vulkan.Types.Handles,
@@ -48,7 +49,7 @@
 --   >     , uint32_t marker
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdWriteBufferMarkerAMD.html vkCmdWriteBufferMarkerAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdWriteBufferMarkerAMD.html vkCmdWriteBufferMarkerAMD registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdWriteBufferMarkerAMD"
                vkCmdWriteBufferMarkerAMD ::
                VkCommandBuffer -- ^ commandBuffer
@@ -60,6 +61,32 @@
                                             -> Word32 -- ^ marker
                                                       -> IO ()
 
+-- | queues: 'transfer', 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   pipeline: @transfer@
+--
+--   > () vkCmdWriteBufferMarkerAMD
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlagBits pipelineStage
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , uint32_t marker
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdWriteBufferMarkerAMD.html vkCmdWriteBufferMarkerAMD registry at www.khronos.org>
+foreign import ccall safe "vkCmdWriteBufferMarkerAMD"
+               vkCmdWriteBufferMarkerAMDSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         ->
+                   VkBuffer -- ^ dstBuffer
+                            -> VkDeviceSize -- ^ dstOffset
+                                            -> Word32 -- ^ marker
+                                                      -> IO ()
+
 pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1
@@ -83,6 +110,6 @@
 
 is_VK_AMD_BUFFER_MARKER_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_BUFFER_MARKER_EXTENSION_NAME
-  = eqCStrings _VK_AMD_BUFFER_MARKER_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_BUFFER_MARKER_EXTENSION_NAME
 
 type VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker"
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
@@ -18,7 +18,9 @@
         -- type: @device@
         --
         -- Extension number: @34@
-        vkCmdDrawIndirectCountAMD, vkCmdDrawIndexedIndirectCountAMD,
+        vkCmdDrawIndirectCountAMD, vkCmdDrawIndirectCountAMDSafe,
+        vkCmdDrawIndexedIndirectCountAMD,
+        vkCmdDrawIndexedIndirectCountAMDSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Handles,
@@ -48,7 +50,7 @@
 --   >     , uint32_t stride
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDrawIndirectCountAMD.html vkCmdDrawIndirectCountAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndirectCountAMD.html vkCmdDrawIndirectCountAMD registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdDrawIndirectCountAMD"
                vkCmdDrawIndirectCountAMD ::
                VkCommandBuffer -- ^ commandBuffer
@@ -69,6 +71,37 @@
 --
 --   pipeline: @graphics@
 --
+--   > () vkCmdDrawIndirectCountAMD
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkBuffer countBuffer
+--   >     , VkDeviceSize countBufferOffset
+--   >     , uint32_t maxDrawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndirectCountAMD.html vkCmdDrawIndirectCountAMD registry at www.khronos.org>
+foreign import ccall safe "vkCmdDrawIndirectCountAMD"
+               vkCmdDrawIndirectCountAMDSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkBuffer -- ^ countBuffer
+                              -> VkDeviceSize -- ^ countBufferOffset
+                                              -> Word32 -- ^ maxDrawCount
+                                                        -> Word32 -- ^ stride
+                                                                  -> IO ()
+
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
 --   > () vkCmdDrawIndexedIndirectCountAMD
 --   >     ( VkCommandBuffer commandBuffer
 --   >     , VkBuffer buffer
@@ -79,7 +112,7 @@
 --   >     , uint32_t stride
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDrawIndexedIndirectCountAMD.html vkCmdDrawIndexedIndirectCountAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndexedIndirectCountAMD.html vkCmdDrawIndexedIndirectCountAMD registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdDrawIndexedIndirectCountAMD"
                vkCmdDrawIndexedIndirectCountAMD ::
                VkCommandBuffer -- ^ commandBuffer
@@ -94,6 +127,37 @@
                                                         -> Word32 -- ^ stride
                                                                   -> IO ()
 
+-- | queues: 'graphics'.
+--
+--   renderpass: @inside@
+--
+--   pipeline: @graphics@
+--
+--   > () vkCmdDrawIndexedIndirectCountAMD
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkBuffer countBuffer
+--   >     , VkDeviceSize countBufferOffset
+--   >     , uint32_t maxDrawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDrawIndexedIndirectCountAMD.html vkCmdDrawIndexedIndirectCountAMD registry at www.khronos.org>
+foreign import ccall safe "vkCmdDrawIndexedIndirectCountAMD"
+               vkCmdDrawIndexedIndirectCountAMDSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkBuffer -- ^ countBuffer
+                              -> VkDeviceSize -- ^ countBufferOffset
+                                              -> Word32 -- ^ maxDrawCount
+                                                        -> Word32 -- ^ stride
+                                                                  -> IO ()
+
 pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: (Num a, Eq a) =>
         a
 
@@ -118,7 +182,7 @@
 
 is_VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
-  = eqCStrings _VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
 
 type VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME =
      "VK_AMD_draw_indirect_count"
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
@@ -47,6 +47,6 @@
 
 is_VK_AMD_GCN_SHADER_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_GCN_SHADER_EXTENSION_NAME
-  = eqCStrings _VK_AMD_GCN_SHADER_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_GCN_SHADER_EXTENSION_NAME
 
 type VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader"
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
@@ -49,7 +49,8 @@
 
 is_VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
-  = eqCStrings _VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
 
 type VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME =
      "VK_AMD_gpu_shader_half_float"
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
@@ -48,7 +48,7 @@
 
 is_VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
-  = eqCStrings _VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
 
 type VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME =
      "VK_AMD_gpu_shader_int16"
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
@@ -50,7 +50,8 @@
 is_VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
-  = eqCStrings _VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
 
 type VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME =
      "VK_AMD_mixed_attachment_samples"
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
@@ -50,7 +50,8 @@
 is_VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
-  = eqCStrings _VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
 
 type VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME =
      "VK_AMD_negative_viewport_height"
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
@@ -70,7 +70,7 @@
 
 is_VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
-  = eqCStrings _VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
 
 type VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME =
      "VK_AMD_rasterization_order"
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
@@ -48,6 +48,6 @@
 
 is_VK_AMD_SHADER_BALLOT_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_SHADER_BALLOT_EXTENSION_NAME
-  = eqCStrings _VK_AMD_SHADER_BALLOT_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_SHADER_BALLOT_EXTENSION_NAME
 
 type VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot"
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
@@ -53,8 +53,8 @@
 is_VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME ::
                                                           CString -> Bool
 is_VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
-  = eqCStrings
-      _VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
 
 type VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME =
      "VK_AMD_shader_explicit_vertex_parameter"
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
@@ -49,7 +49,7 @@
 
 is_VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
-  = eqCStrings _VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
 
 type VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME =
      "VK_AMD_shader_fragment_mask"
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
@@ -51,7 +51,8 @@
 is_VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME ::
                                                      CString -> Bool
 is_VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
-  = eqCStrings _VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
 
 type VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME =
      "VK_AMD_shader_image_load_store_lod"
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
@@ -26,7 +26,8 @@
         module Graphics.Vulkan.Types.Enum.VkShaderStageFlags,
         module Graphics.Vulkan.Types.Struct.VkShaderStatisticsInfoAMD,
         -- > #include "vk_platform.h"
-        vkGetShaderInfoAMD, module Graphics.Vulkan.Types.Enum.VkResult,
+        vkGetShaderInfoAMD, vkGetShaderInfoAMDSafe,
+        module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_AMD_SHADER_INFO_SPEC_VERSION,
         pattern VK_AMD_SHADER_INFO_SPEC_VERSION,
@@ -56,7 +57,7 @@
 --   >     , void* pInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetShaderInfoAMD.html vkGetShaderInfoAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetShaderInfoAMD.html vkGetShaderInfoAMD registry at www.khronos.org>
 foreign import ccall unsafe "vkGetShaderInfoAMD" vkGetShaderInfoAMD
                ::
                VkDevice -- ^ device
@@ -70,6 +71,33 @@
                                                       -> Ptr Void -- ^ pInfo
                                                                   -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetShaderInfoAMD
+--   >     ( VkDevice device
+--   >     , VkPipeline pipeline
+--   >     , VkShaderStageFlagBits shaderStage
+--   >     , VkShaderInfoTypeAMD infoType
+--   >     , size_t* pInfoSize
+--   >     , void* pInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetShaderInfoAMD.html vkGetShaderInfoAMD registry at www.khronos.org>
+foreign import ccall safe "vkGetShaderInfoAMD"
+               vkGetShaderInfoAMDSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipeline -- ^ pipeline
+                            ->
+                   VkShaderStageFlagBits -- ^ shaderStage
+                                         ->
+                     VkShaderInfoTypeAMD -- ^ infoType
+                                         -> Ptr CSize -- ^ pInfoSize
+                                                      -> Ptr Void -- ^ pInfo
+                                                                  -> IO VkResult
+
 pattern VK_AMD_SHADER_INFO_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_AMD_SHADER_INFO_SPEC_VERSION = 1
@@ -92,6 +120,6 @@
 
 is_VK_AMD_SHADER_INFO_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_SHADER_INFO_EXTENSION_NAME
-  = eqCStrings _VK_AMD_SHADER_INFO_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_AMD_SHADER_INFO_EXTENSION_NAME
 
 type VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info"
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
@@ -49,7 +49,8 @@
 
 is_VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
-  = eqCStrings _VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
 
 type VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME =
      "VK_AMD_shader_trinary_minmax"
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
@@ -25,7 +25,7 @@
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkExtent3D,
         module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2,
         module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Struct.VkTextureLODGatherFormatPropertiesAMD,
@@ -44,7 +44,7 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Struct.VkExtent3D
 import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2
 import           Graphics.Vulkan.Types.Struct.VkTextureLODGatherFormatPropertiesAMD
 
 pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION ::
@@ -71,7 +71,8 @@
 
 is_VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME :: CString -> Bool
 is_VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
-  = eqCStrings _VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
 
 type VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME =
      "VK_AMD_texture_gather_bias_lod"
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
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -0,0 +1,281 @@
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_ANDROID_external_memory_android_hardware_buffer
+       (-- * Vulkan extension: @VK_ANDROID_external_memory_android_hardware_buffer@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Jesse Hall @jessehall@
+        --
+        -- author: @ANDROID@
+        --
+        -- type: @device@
+        --
+        -- platform: @android@
+        --
+        -- Extension number: @130@
+        --
+        -- Required extensions: 'VK_KHR_sampler_ycbcr_conversion', 'VK_KHR_external_memory'.
+        --
+
+        -- ** Required extensions: 'VK_KHR_sampler_ycbcr_conversion', 'VK_KHR_external_memory'.
+        module Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferFormatPropertiesANDROID,
+        module Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferPropertiesANDROID,
+        module Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferUsageANDROID,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkChromaLocation,
+        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
+        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Struct.VkExternalFormatANDROID,
+        module Graphics.Vulkan.Types.Enum.VkFilter,
+        module Graphics.Vulkan.Types.Enum.VkFormat,
+        module Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2,
+        module Graphics.Vulkan.Types.Enum.VkImageLayout,
+        module Graphics.Vulkan.Types.Enum.VkImageTiling,
+        module Graphics.Vulkan.Types.Enum.VkImageType,
+        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
+        module Graphics.Vulkan.Types.Struct.VkImportAndroidHardwareBufferInfoANDROID,
+        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
+        module Graphics.Vulkan.Types.Struct.VkMemoryGetAndroidHardwareBufferInfoANDROID,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion,
+        module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange,
+        module Graphics.Vulkan.Types.Enum.VkSharingMode,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        -- > #include "vk_platform.h"
+        vkGetAndroidHardwareBufferPropertiesANDROID,
+        vkGetAndroidHardwareBufferPropertiesANDROIDSafe,
+        vkGetMemoryAndroidHardwareBufferANDROID,
+        vkGetMemoryAndroidHardwareBufferANDROIDSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Handles,
+        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,
+        pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,
+        pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
+        pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
+        pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
+        pattern VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
+        pattern VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID)
+       where
+import           GHC.Ptr
+                                                                                              (Ptr (..))
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Defines
+                                                                                              (AHardwareBuffer)
+import           Graphics.Vulkan.Types.Enum.VkChromaLocation
+import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
+                                                                                              (VkExternalMemoryHandleTypeBitmask (..),
+                                                                                              VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkFilter
+import           Graphics.Vulkan.Types.Enum.VkFormat
+import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkImageLayout
+import           Graphics.Vulkan.Types.Enum.VkImageTiling
+import           Graphics.Vulkan.Types.Enum.VkImageType
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange
+import           Graphics.Vulkan.Types.Enum.VkSharingMode
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferFormatPropertiesANDROID
+import           Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferPropertiesANDROID
+import           Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferUsageANDROID
+import           Graphics.Vulkan.Types.Struct.VkComponentMapping
+import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkExternalFormatANDROID
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2
+import           Graphics.Vulkan.Types.Struct.VkImportAndroidHardwareBufferInfoANDROID
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
+import           Graphics.Vulkan.Types.Struct.VkMemoryGetAndroidHardwareBufferInfoANDROID
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--
+--   > VkResult vkGetAndroidHardwareBufferPropertiesANDROID
+--   >     ( VkDevice device
+--   >     , const struct AHardwareBuffer* buffer
+--   >     , VkAndroidHardwareBufferPropertiesANDROID* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html vkGetAndroidHardwareBufferPropertiesANDROID registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetAndroidHardwareBufferPropertiesANDROID"
+               vkGetAndroidHardwareBufferPropertiesANDROID ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr AHardwareBuffer -- ^ buffer
+                                     ->
+                   Ptr VkAndroidHardwareBufferPropertiesANDROID -- ^ pProperties
+                                                                -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--
+--   > VkResult vkGetAndroidHardwareBufferPropertiesANDROID
+--   >     ( VkDevice device
+--   >     , const struct AHardwareBuffer* buffer
+--   >     , VkAndroidHardwareBufferPropertiesANDROID* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html vkGetAndroidHardwareBufferPropertiesANDROID registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetAndroidHardwareBufferPropertiesANDROID"
+               vkGetAndroidHardwareBufferPropertiesANDROIDSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr AHardwareBuffer -- ^ buffer
+                                     ->
+                   Ptr VkAndroidHardwareBufferPropertiesANDROID -- ^ pProperties
+                                                                -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetMemoryAndroidHardwareBufferANDROID
+--   >     ( VkDevice device
+--   >     , const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo
+--   >     , struct AHardwareBuffer** pBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html vkGetMemoryAndroidHardwareBufferANDROID registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetMemoryAndroidHardwareBufferANDROID"
+               vkGetMemoryAndroidHardwareBufferANDROID ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID -- ^ pInfo
+                                                                 ->
+                   Ptr (Ptr AHardwareBuffer) -- ^ pBuffer
+                                             -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetMemoryAndroidHardwareBufferANDROID
+--   >     ( VkDevice device
+--   >     , const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo
+--   >     , struct AHardwareBuffer** pBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html vkGetMemoryAndroidHardwareBufferANDROID registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryAndroidHardwareBufferANDROID"
+               vkGetMemoryAndroidHardwareBufferANDROIDSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID -- ^ pInfo
+                                                                 ->
+                   Ptr (Ptr AHardwareBuffer) -- ^ pBuffer
+                                             -> IO VkResult
+
+pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION
+        :: (Num a, Eq a) => a
+
+pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION
+        = 3
+
+type VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION
+     = 3
+
+pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+        :: CString
+
+pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+        <-
+        (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
+
+{-# INLINE _VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+           #-}
+
+_VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME ::
+                                                                   CString
+_VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+  = Ptr "VK_ANDROID_external_memory_android_hardware_buffer\NUL"#
+
+{-# INLINE is_VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+           #-}
+
+is_VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME ::
+                                                                     CString -> Bool
+is_VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings
+        _VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+
+type VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+     = "VK_ANDROID_external_memory_android_hardware_buffer"
+
+-- | bitpos = @10@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
+        :: VkExternalMemoryHandleTypeFlagBits
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
+        = VkExternalMemoryHandleTypeFlagBits 1024
+
+pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID =
+        VkStructureType 1000129000
+
+pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
+        = VkStructureType 1000129001
+
+pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
+        = VkStructureType 1000129002
+
+pattern VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+        = VkStructureType 1000129003
+
+pattern VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+        = VkStructureType 1000129004
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID =
+        VkStructureType 1000129005
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
@@ -17,15 +17,16 @@
         --
         -- type: @instance@
         --
+        -- platform: @xlib_xrandr@
+        --
         -- Extension number: @90@
         --
         -- Required extensions: 'VK_EXT_direct_mode_display'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_XLIB_XRANDR_EXT@
-        --
 
         -- ** Required extensions: 'VK_EXT_direct_mode_display'.
-        vkAcquireXlibDisplayEXT, vkGetRandROutputDisplayEXT,
+        vkAcquireXlibDisplayEXT, vkAcquireXlibDisplayEXTSafe,
+        vkGetRandROutputDisplayEXT, vkGetRandROutputDisplayEXTSafe,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION,
@@ -49,7 +50,7 @@
 --   >     , VkDisplayKHR display
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkAcquireXlibDisplayEXT.html vkAcquireXlibDisplayEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkAcquireXlibDisplayEXT.html vkAcquireXlibDisplayEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkAcquireXlibDisplayEXT"
                vkAcquireXlibDisplayEXT ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -59,6 +60,24 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   Error codes: 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkAcquireXlibDisplayEXT
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , Display* dpy
+--   >     , VkDisplayKHR display
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkAcquireXlibDisplayEXT.html vkAcquireXlibDisplayEXT registry at www.khronos.org>
+foreign import ccall safe "vkAcquireXlibDisplayEXT"
+               vkAcquireXlibDisplayEXTSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr Display -- ^ dpy
+                                               -> VkDisplayKHR -- ^ display
+                                                               -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   > VkResult vkGetRandROutputDisplayEXT
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , Display* dpy
@@ -66,7 +85,7 @@
 --   >     , VkDisplayKHR* pDisplay
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetRandROutputDisplayEXT.html vkGetRandROutputDisplayEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetRandROutputDisplayEXT.html vkGetRandROutputDisplayEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkGetRandROutputDisplayEXT"
                vkGetRandROutputDisplayEXT ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -76,6 +95,25 @@
                                          -> Ptr VkDisplayKHR -- ^ pDisplay
                                                              -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkGetRandROutputDisplayEXT
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , Display* dpy
+--   >     , RROutput rrOutput
+--   >     , VkDisplayKHR* pDisplay
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetRandROutputDisplayEXT.html vkGetRandROutputDisplayEXT registry at www.khronos.org>
+foreign import ccall safe "vkGetRandROutputDisplayEXT"
+               vkGetRandROutputDisplayEXTSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Display -- ^ dpy
+                             -> RROutput -- ^ rrOutput
+                                         -> Ptr VkDisplayKHR -- ^ pDisplay
+                                                             -> IO VkResult
+
 pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -100,7 +138,7 @@
 
 is_VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
-  = eqCStrings _VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
 
 type VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME =
      "VK_EXT_acquire_xlib_display"
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
@@ -25,15 +25,16 @@
         module Graphics.Vulkan.Types.Enum.VkColorComponentFlags,
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags,
         module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
         module Graphics.Vulkan.Types.Enum.VkLogicOp,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAdvancedStateCreateInfoEXT,
@@ -95,6 +96,7 @@
 import           Graphics.Vulkan.Types.Enum.VkBlendOp
 import           Graphics.Vulkan.Types.Enum.VkBlendOverlapEXT
 import           Graphics.Vulkan.Types.Enum.VkColorComponentFlags
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags
 import           Graphics.Vulkan.Types.Enum.VkLogicOp
 import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
 import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
@@ -104,10 +106,10 @@
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAdvancedStateCreateInfoEXT
 import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
@@ -138,7 +140,8 @@
 is_VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
-  = eqCStrings _VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
 
 type VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME =
      "VK_EXT_blend_operation_advanced"
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
@@ -30,7 +30,7 @@
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Bitmasks,
@@ -62,7 +62,7 @@
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceConservativeRasterizationPropertiesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkPipelineRasterizationConservativeStateCreateInfoEXT
 import           Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo
@@ -92,7 +92,8 @@
 is_VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME ::
                                                     CString -> Bool
 is_VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
-  = eqCStrings _VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
 
 type VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME =
      "VK_EXT_conservative_rasterization"
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
@@ -30,9 +30,11 @@
         module Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkDebugMarkerSetObjectTagEXT, vkDebugMarkerSetObjectNameEXT,
-        vkCmdDebugMarkerBeginEXT, vkCmdDebugMarkerEndEXT,
-        vkCmdDebugMarkerInsertEXT,
+        vkDebugMarkerSetObjectTagEXT, vkDebugMarkerSetObjectTagEXTSafe,
+        vkDebugMarkerSetObjectNameEXT, vkDebugMarkerSetObjectNameEXTSafe,
+        vkCmdDebugMarkerBeginEXT, vkCmdDebugMarkerBeginEXTSafe,
+        vkCmdDebugMarkerEndEXT, vkCmdDebugMarkerEndEXTSafe,
+        vkCmdDebugMarkerInsertEXT, vkCmdDebugMarkerInsertEXTSafe,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_EXT_DEBUG_MARKER_SPEC_VERSION,
@@ -62,7 +64,7 @@
 --   >     , const VkDebugMarkerObjectTagInfoEXT* pTagInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDebugMarkerSetObjectTagEXT.html vkDebugMarkerSetObjectTagEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDebugMarkerSetObjectTagEXT.html vkDebugMarkerSetObjectTagEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkDebugMarkerSetObjectTagEXT"
                vkDebugMarkerSetObjectTagEXT ::
                VkDevice -- ^ device
@@ -73,18 +75,50 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkDebugMarkerSetObjectTagEXT
+--   >     ( VkDevice device
+--   >     , const VkDebugMarkerObjectTagInfoEXT* pTagInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDebugMarkerSetObjectTagEXT.html vkDebugMarkerSetObjectTagEXT registry at www.khronos.org>
+foreign import ccall safe "vkDebugMarkerSetObjectTagEXT"
+               vkDebugMarkerSetObjectTagEXTSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDebugMarkerObjectTagInfoEXT -- ^ pTagInfo
+                                                             -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkDebugMarkerSetObjectNameEXT
 --   >     ( VkDevice device
 --   >     , const VkDebugMarkerObjectNameInfoEXT* pNameInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDebugMarkerSetObjectNameEXT.html vkDebugMarkerSetObjectNameEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDebugMarkerSetObjectNameEXT.html vkDebugMarkerSetObjectNameEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkDebugMarkerSetObjectNameEXT"
                vkDebugMarkerSetObjectNameEXT ::
                VkDevice -- ^ device
                         -> Ptr VkDebugMarkerObjectNameInfoEXT -- ^ pNameInfo
                                                               -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkDebugMarkerSetObjectNameEXT
+--   >     ( VkDevice device
+--   >     , const VkDebugMarkerObjectNameInfoEXT* pNameInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDebugMarkerSetObjectNameEXT.html vkDebugMarkerSetObjectNameEXT registry at www.khronos.org>
+foreign import ccall safe "vkDebugMarkerSetObjectNameEXT"
+               vkDebugMarkerSetObjectNameEXTSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDebugMarkerObjectNameInfoEXT -- ^ pNameInfo
+                                                              -> IO VkResult
+
 -- | queues: 'graphics', 'compute'.
 --
 --   renderpass: @both@
@@ -94,7 +128,7 @@
 --   >     , const VkDebugMarkerMarkerInfoEXT* pMarkerInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDebugMarkerBeginEXT.html vkCmdDebugMarkerBeginEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDebugMarkerBeginEXT.html vkCmdDebugMarkerBeginEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdDebugMarkerBeginEXT"
                vkCmdDebugMarkerBeginEXT ::
                VkCommandBuffer -- ^ commandBuffer
@@ -105,11 +139,27 @@
 --
 --   renderpass: @both@
 --
+--   > () vkCmdDebugMarkerBeginEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkDebugMarkerMarkerInfoEXT* pMarkerInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDebugMarkerBeginEXT.html vkCmdDebugMarkerBeginEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdDebugMarkerBeginEXT"
+               vkCmdDebugMarkerBeginEXTSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkDebugMarkerMarkerInfoEXT -- ^ pMarkerInfo
+                                                                 -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
 --   > () vkCmdDebugMarkerEndEXT
 --   >     ( VkCommandBuffer commandBuffer
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDebugMarkerEndEXT.html vkCmdDebugMarkerEndEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDebugMarkerEndEXT.html vkCmdDebugMarkerEndEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdDebugMarkerEndEXT"
                vkCmdDebugMarkerEndEXT :: VkCommandBuffer -- ^ commandBuffer
                                                          -> IO ()
@@ -118,18 +168,47 @@
 --
 --   renderpass: @both@
 --
+--   > () vkCmdDebugMarkerEndEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDebugMarkerEndEXT.html vkCmdDebugMarkerEndEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdDebugMarkerEndEXT"
+               vkCmdDebugMarkerEndEXTSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                             -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
 --   > () vkCmdDebugMarkerInsertEXT
 --   >     ( VkCommandBuffer commandBuffer
 --   >     , const VkDebugMarkerMarkerInfoEXT* pMarkerInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdDebugMarkerInsertEXT.html vkCmdDebugMarkerInsertEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDebugMarkerInsertEXT.html vkCmdDebugMarkerInsertEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdDebugMarkerInsertEXT"
                vkCmdDebugMarkerInsertEXT ::
                VkCommandBuffer -- ^ commandBuffer
                                -> Ptr VkDebugMarkerMarkerInfoEXT -- ^ pMarkerInfo
                                                                  -> IO ()
 
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdDebugMarkerInsertEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkDebugMarkerMarkerInfoEXT* pMarkerInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdDebugMarkerInsertEXT.html vkCmdDebugMarkerInsertEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdDebugMarkerInsertEXT"
+               vkCmdDebugMarkerInsertEXTSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkDebugMarkerMarkerInfoEXT -- ^ pMarkerInfo
+                                                                 -> IO ()
+
 pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4
@@ -153,7 +232,7 @@
 
 is_VK_EXT_DEBUG_MARKER_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_DEBUG_MARKER_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DEBUG_MARKER_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_DEBUG_MARKER_EXTENSION_NAME
 
 type VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker"
 
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
@@ -30,8 +30,10 @@
         module Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkCreateDebugReportCallbackEXT, vkDestroyDebugReportCallbackEXT,
-        vkDebugReportMessageEXT,
+        vkCreateDebugReportCallbackEXT, vkCreateDebugReportCallbackEXTSafe,
+        vkDestroyDebugReportCallbackEXT,
+        vkDestroyDebugReportCallbackEXTSafe, vkDebugReportMessageEXT,
+        vkDebugReportMessageEXTSafe,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
@@ -46,7 +48,9 @@
         pattern VK_ERROR_VALIDATION_FAILED_EXT,
         pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT,
         pattern VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
-        pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT)
+        pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
+        pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
+        pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT)
        where
 import           GHC.Ptr                                                         (Ptr (..))
 import           Graphics.Vulkan.Marshal
@@ -77,7 +81,7 @@
 --   >     , VkDebugReportCallbackEXT* pCallback
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateDebugReportCallbackEXT.html vkCreateDebugReportCallbackEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDebugReportCallbackEXT.html vkCreateDebugReportCallbackEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateDebugReportCallbackEXT"
                vkCreateDebugReportCallbackEXT ::
                VkInstance -- ^ instance
@@ -89,13 +93,36 @@
                      Ptr VkDebugReportCallbackEXT -- ^ pCallback
                                                   -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkCreateDebugReportCallbackEXT
+--   >     ( VkInstance instance
+--   >     , const VkDebugReportCallbackCreateInfoEXT* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDebugReportCallbackEXT* pCallback
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDebugReportCallbackEXT.html vkCreateDebugReportCallbackEXT registry at www.khronos.org>
+foreign import ccall safe "vkCreateDebugReportCallbackEXT"
+               vkCreateDebugReportCallbackEXTSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkDebugReportCallbackCreateInfoEXT -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDebugReportCallbackEXT -- ^ pCallback
+                                                  -> IO VkResult
+
 -- | > () vkDestroyDebugReportCallbackEXT
 --   >     ( VkInstance instance
 --   >     , VkDebugReportCallbackEXT callback
 --   >     , const VkAllocationCallbacks* pAllocator
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyDebugReportCallbackEXT.html vkDestroyDebugReportCallbackEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDebugReportCallbackEXT.html vkDestroyDebugReportCallbackEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkDestroyDebugReportCallbackEXT"
                vkDestroyDebugReportCallbackEXT ::
                VkInstance -- ^ instance
@@ -104,6 +131,21 @@
                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                        -> IO ()
 
+-- | > () vkDestroyDebugReportCallbackEXT
+--   >     ( VkInstance instance
+--   >     , VkDebugReportCallbackEXT callback
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDebugReportCallbackEXT.html vkDestroyDebugReportCallbackEXT registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDebugReportCallbackEXT"
+               vkDestroyDebugReportCallbackEXTSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 VkDebugReportCallbackEXT -- ^ callback
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
 -- | > () vkDebugReportMessageEXT
 --   >     ( VkInstance instance
 --   >     , VkDebugReportFlagsEXT flags
@@ -115,7 +157,7 @@
 --   >     , const char* pMessage
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDebugReportMessageEXT.html vkDebugReportMessageEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDebugReportMessageEXT.html vkDebugReportMessageEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkDebugReportMessageEXT"
                vkDebugReportMessageEXT ::
                VkInstance -- ^ instance
@@ -131,6 +173,33 @@
                                                          -> CString -- ^ pMessage
                                                                     -> IO ()
 
+-- | > () vkDebugReportMessageEXT
+--   >     ( VkInstance instance
+--   >     , VkDebugReportFlagsEXT flags
+--   >     , VkDebugReportObjectTypeEXT objectType
+--   >     , uint64_t object
+--   >     , size_t location
+--   >     , int32_t messageCode
+--   >     , const char* pLayerPrefix
+--   >     , const char* pMessage
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDebugReportMessageEXT.html vkDebugReportMessageEXT registry at www.khronos.org>
+foreign import ccall safe "vkDebugReportMessageEXT"
+               vkDebugReportMessageEXTSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 VkDebugReportFlagsEXT -- ^ flags
+                                       ->
+                   VkDebugReportObjectTypeEXT -- ^ objectType
+                                              ->
+                     Word64 -- ^ object
+                            -> CSize -- ^ location
+                                     -> Int32 -- ^ messageCode
+                                              -> CString -- ^ pLayerPrefix
+                                                         -> CString -- ^ pMessage
+                                                                    -> IO ()
+
 pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9
@@ -154,7 +223,7 @@
 
 is_VK_EXT_DEBUG_REPORT_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_DEBUG_REPORT_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DEBUG_REPORT_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_DEBUG_REPORT_EXTENSION_NAME
 
 type VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report"
 
@@ -179,3 +248,15 @@
 
 pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT =
         VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
+
+pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT ::
+        VkDebugReportObjectTypeEXT
+
+pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT =
+        VkDebugReportObjectTypeEXT 1000156000
+
+pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT
+        :: VkDebugReportObjectTypeEXT
+
+pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT
+        = VkDebugReportObjectTypeEXT 1000085000
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
@@ -0,0 +1,483 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_EXT_debug_utils
+       (-- * Vulkan extension: @VK_EXT_debug_utils@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Mark Young @MarkY_LunarG@
+        --
+        -- author: @EXT@
+        --
+        -- type: @instance@
+        --
+        -- Extension number: @129@
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.Struct.VkApplicationInfo,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Struct.VkDebugUtilsLabelEXT,
+        module Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageSeverityFlagsEXT,
+        module Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageTypeFlagsEXT,
+        module Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCallbackDataEXT,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCreateInfoEXT,
+        module Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectNameInfoEXT,
+        module Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectTagInfoEXT,
+        module Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkObjectType,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        -- > #include "vk_platform.h"
+        vkSetDebugUtilsObjectNameEXT, vkSetDebugUtilsObjectNameEXTSafe,
+        vkSetDebugUtilsObjectTagEXT, vkSetDebugUtilsObjectTagEXTSafe,
+        vkQueueBeginDebugUtilsLabelEXT, vkQueueBeginDebugUtilsLabelEXTSafe,
+        vkQueueEndDebugUtilsLabelEXT, vkQueueEndDebugUtilsLabelEXTSafe,
+        vkQueueInsertDebugUtilsLabelEXT,
+        vkQueueInsertDebugUtilsLabelEXTSafe, vkCmdBeginDebugUtilsLabelEXT,
+        vkCmdBeginDebugUtilsLabelEXTSafe, vkCmdEndDebugUtilsLabelEXT,
+        vkCmdEndDebugUtilsLabelEXTSafe, vkCmdInsertDebugUtilsLabelEXT,
+        vkCmdInsertDebugUtilsLabelEXTSafe, vkCreateDebugUtilsMessengerEXT,
+        vkCreateDebugUtilsMessengerEXTSafe,
+        vkDestroyDebugUtilsMessengerEXT,
+        vkDestroyDebugUtilsMessengerEXTSafe, vkSubmitDebugUtilsMessageEXT,
+        vkSubmitDebugUtilsMessageEXTSafe,
+        module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
+        module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
+        module Graphics.Vulkan.Types.Funcpointers,
+        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
+        VK_EXT_DEBUG_UTILS_SPEC_VERSION,
+        pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION,
+        VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
+        pattern VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
+        pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
+        pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
+        pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
+        pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
+        pattern VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT)
+       where
+import           GHC.Ptr
+                                                                                    (Ptr (..))
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageSeverityFlagsEXT
+import           Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageTypeFlagsEXT
+import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
+import           Graphics.Vulkan.Types.Enum.VkObjectType
+import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
+import           Graphics.Vulkan.Types.Funcpointers
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.VkApplicationInfo
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsLabelEXT
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCallbackDataEXT
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCreateInfoEXT
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectNameInfoEXT
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectTagInfoEXT
+import           Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetDebugUtilsObjectNameEXT
+--   >     ( VkDevice device
+--   >     , const VkDebugUtilsObjectNameInfoEXT* pNameInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetDebugUtilsObjectNameEXT.html vkSetDebugUtilsObjectNameEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkSetDebugUtilsObjectNameEXT"
+               vkSetDebugUtilsObjectNameEXT ::
+               VkDevice -- ^ device
+                        -> Ptr VkDebugUtilsObjectNameInfoEXT -- ^ pNameInfo
+                                                             -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetDebugUtilsObjectNameEXT
+--   >     ( VkDevice device
+--   >     , const VkDebugUtilsObjectNameInfoEXT* pNameInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetDebugUtilsObjectNameEXT.html vkSetDebugUtilsObjectNameEXT registry at www.khronos.org>
+foreign import ccall safe "vkSetDebugUtilsObjectNameEXT"
+               vkSetDebugUtilsObjectNameEXTSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDebugUtilsObjectNameInfoEXT -- ^ pNameInfo
+                                                             -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetDebugUtilsObjectTagEXT
+--   >     ( VkDevice device
+--   >     , const VkDebugUtilsObjectTagInfoEXT* pTagInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetDebugUtilsObjectTagEXT.html vkSetDebugUtilsObjectTagEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkSetDebugUtilsObjectTagEXT"
+               vkSetDebugUtilsObjectTagEXT ::
+               VkDevice -- ^ device
+                        -> Ptr VkDebugUtilsObjectTagInfoEXT -- ^ pTagInfo
+                                                            -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetDebugUtilsObjectTagEXT
+--   >     ( VkDevice device
+--   >     , const VkDebugUtilsObjectTagInfoEXT* pTagInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetDebugUtilsObjectTagEXT.html vkSetDebugUtilsObjectTagEXT registry at www.khronos.org>
+foreign import ccall safe "vkSetDebugUtilsObjectTagEXT"
+               vkSetDebugUtilsObjectTagEXTSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDebugUtilsObjectTagInfoEXT -- ^ pTagInfo
+                                                            -> IO VkResult
+
+-- | > () vkQueueBeginDebugUtilsLabelEXT
+--   >     ( VkQueue queue
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueueBeginDebugUtilsLabelEXT.html vkQueueBeginDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkQueueBeginDebugUtilsLabelEXT"
+               vkQueueBeginDebugUtilsLabelEXT ::
+               VkQueue -- ^ queue
+                       -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                   -> IO ()
+
+-- | > () vkQueueBeginDebugUtilsLabelEXT
+--   >     ( VkQueue queue
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueueBeginDebugUtilsLabelEXT.html vkQueueBeginDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall safe "vkQueueBeginDebugUtilsLabelEXT"
+               vkQueueBeginDebugUtilsLabelEXTSafe ::
+               VkQueue -- ^ queue
+                       -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                   -> IO ()
+
+-- | > () vkQueueEndDebugUtilsLabelEXT
+--   >     ( VkQueue queue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueueEndDebugUtilsLabelEXT.html vkQueueEndDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkQueueEndDebugUtilsLabelEXT"
+               vkQueueEndDebugUtilsLabelEXT :: VkQueue -- ^ queue
+                                                       -> IO ()
+
+-- | > () vkQueueEndDebugUtilsLabelEXT
+--   >     ( VkQueue queue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueueEndDebugUtilsLabelEXT.html vkQueueEndDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall safe "vkQueueEndDebugUtilsLabelEXT"
+               vkQueueEndDebugUtilsLabelEXTSafe :: VkQueue -- ^ queue
+                                                           -> IO ()
+
+-- | > () vkQueueInsertDebugUtilsLabelEXT
+--   >     ( VkQueue queue
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueueInsertDebugUtilsLabelEXT.html vkQueueInsertDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkQueueInsertDebugUtilsLabelEXT"
+               vkQueueInsertDebugUtilsLabelEXT ::
+               VkQueue -- ^ queue
+                       -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                   -> IO ()
+
+-- | > () vkQueueInsertDebugUtilsLabelEXT
+--   >     ( VkQueue queue
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueueInsertDebugUtilsLabelEXT.html vkQueueInsertDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall safe "vkQueueInsertDebugUtilsLabelEXT"
+               vkQueueInsertDebugUtilsLabelEXTSafe ::
+               VkQueue -- ^ queue
+                       -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                   -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBeginDebugUtilsLabelEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBeginDebugUtilsLabelEXT.html vkCmdBeginDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdBeginDebugUtilsLabelEXT"
+               vkCmdBeginDebugUtilsLabelEXT ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                           -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdBeginDebugUtilsLabelEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdBeginDebugUtilsLabelEXT.html vkCmdBeginDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdBeginDebugUtilsLabelEXT"
+               vkCmdBeginDebugUtilsLabelEXTSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                           -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdEndDebugUtilsLabelEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdEndDebugUtilsLabelEXT.html vkCmdEndDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdEndDebugUtilsLabelEXT"
+               vkCmdEndDebugUtilsLabelEXT :: VkCommandBuffer -- ^ commandBuffer
+                                                             -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdEndDebugUtilsLabelEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdEndDebugUtilsLabelEXT.html vkCmdEndDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdEndDebugUtilsLabelEXT"
+               vkCmdEndDebugUtilsLabelEXTSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                                 -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdInsertDebugUtilsLabelEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdInsertDebugUtilsLabelEXT.html vkCmdInsertDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdInsertDebugUtilsLabelEXT"
+               vkCmdInsertDebugUtilsLabelEXT ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                           -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdInsertDebugUtilsLabelEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkDebugUtilsLabelEXT* pLabelInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdInsertDebugUtilsLabelEXT.html vkCmdInsertDebugUtilsLabelEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdInsertDebugUtilsLabelEXT"
+               vkCmdInsertDebugUtilsLabelEXTSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkDebugUtilsLabelEXT -- ^ pLabelInfo
+                                                           -> IO ()
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkCreateDebugUtilsMessengerEXT
+--   >     ( VkInstance instance
+--   >     , const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDebugUtilsMessengerEXT* pMessenger
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDebugUtilsMessengerEXT.html vkCreateDebugUtilsMessengerEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateDebugUtilsMessengerEXT"
+               vkCreateDebugUtilsMessengerEXT ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkDebugUtilsMessengerCreateInfoEXT -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDebugUtilsMessengerEXT -- ^ pMessenger
+                                                  -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkCreateDebugUtilsMessengerEXT
+--   >     ( VkInstance instance
+--   >     , const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDebugUtilsMessengerEXT* pMessenger
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDebugUtilsMessengerEXT.html vkCreateDebugUtilsMessengerEXT registry at www.khronos.org>
+foreign import ccall safe "vkCreateDebugUtilsMessengerEXT"
+               vkCreateDebugUtilsMessengerEXTSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkDebugUtilsMessengerCreateInfoEXT -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDebugUtilsMessengerEXT -- ^ pMessenger
+                                                  -> IO VkResult
+
+-- | > () vkDestroyDebugUtilsMessengerEXT
+--   >     ( VkInstance instance
+--   >     , VkDebugUtilsMessengerEXT messenger
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDebugUtilsMessengerEXT.html vkDestroyDebugUtilsMessengerEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyDebugUtilsMessengerEXT"
+               vkDestroyDebugUtilsMessengerEXT ::
+               VkInstance -- ^ instance
+                          ->
+                 VkDebugUtilsMessengerEXT -- ^ messenger
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkDestroyDebugUtilsMessengerEXT
+--   >     ( VkInstance instance
+--   >     , VkDebugUtilsMessengerEXT messenger
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDebugUtilsMessengerEXT.html vkDestroyDebugUtilsMessengerEXT registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDebugUtilsMessengerEXT"
+               vkDestroyDebugUtilsMessengerEXTSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 VkDebugUtilsMessengerEXT -- ^ messenger
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+-- | > () vkSubmitDebugUtilsMessageEXT
+--   >     ( VkInstance instance
+--   >     , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity
+--   >     , VkDebugUtilsMessageTypeFlagsEXT messageTypes
+--   >     , const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSubmitDebugUtilsMessageEXT.html vkSubmitDebugUtilsMessageEXT registry at www.khronos.org>
+foreign import ccall unsafe "vkSubmitDebugUtilsMessageEXT"
+               vkSubmitDebugUtilsMessageEXT ::
+               VkInstance -- ^ instance
+                          ->
+                 VkDebugUtilsMessageSeverityFlagBitsEXT -- ^ messageSeverity
+                                                        ->
+                   VkDebugUtilsMessageTypeFlagsEXT -- ^ messageTypes
+                                                   ->
+                     Ptr VkDebugUtilsMessengerCallbackDataEXT -- ^ pCallbackData
+                                                              -> IO ()
+
+-- | > () vkSubmitDebugUtilsMessageEXT
+--   >     ( VkInstance instance
+--   >     , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity
+--   >     , VkDebugUtilsMessageTypeFlagsEXT messageTypes
+--   >     , const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSubmitDebugUtilsMessageEXT.html vkSubmitDebugUtilsMessageEXT registry at www.khronos.org>
+foreign import ccall safe "vkSubmitDebugUtilsMessageEXT"
+               vkSubmitDebugUtilsMessageEXTSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 VkDebugUtilsMessageSeverityFlagBitsEXT -- ^ messageSeverity
+                                                        ->
+                   VkDebugUtilsMessageTypeFlagsEXT -- ^ messageTypes
+                                                   ->
+                     Ptr VkDebugUtilsMessengerCallbackDataEXT -- ^ pCallbackData
+                                                              -> IO ()
+
+pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION :: (Num a, Eq a) => a
+
+pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION = 1
+
+type VK_EXT_DEBUG_UTILS_SPEC_VERSION = 1
+
+pattern VK_EXT_DEBUG_UTILS_EXTENSION_NAME :: CString
+
+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
+
+{-# INLINE _VK_EXT_DEBUG_UTILS_EXTENSION_NAME #-}
+
+_VK_EXT_DEBUG_UTILS_EXTENSION_NAME :: CString
+_VK_EXT_DEBUG_UTILS_EXTENSION_NAME = Ptr "VK_EXT_debug_utils\NUL"#
+
+{-# INLINE is_VK_EXT_DEBUG_UTILS_EXTENSION_NAME #-}
+
+is_VK_EXT_DEBUG_UTILS_EXTENSION_NAME :: CString -> Bool
+is_VK_EXT_DEBUG_UTILS_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_DEBUG_UTILS_EXTENSION_NAME
+
+type VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils"
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT =
+        VkStructureType 1000128000
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT =
+        VkStructureType 1000128001
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT =
+        VkStructureType 1000128002
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT =
+        VkStructureType 1000128003
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT =
+        VkStructureType 1000128004
+
+-- | VkDebugUtilsMessengerEXT
+pattern VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT :: VkObjectType
+
+pattern VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT =
+        VkObjectType 1000128000
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
@@ -50,7 +50,8 @@
 is_VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
 
 type VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME =
      "VK_EXT_depth_range_unrestricted"
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
@@ -23,7 +23,8 @@
         --
 
         -- ** Required extensions: 'VK_KHR_display'.
-        vkReleaseDisplayEXT, module Graphics.Vulkan.Types.Enum.VkResult,
+        vkReleaseDisplayEXT, vkReleaseDisplayEXTSafe,
+        module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION,
         pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION,
@@ -42,13 +43,27 @@
 --   >     , VkDisplayKHR display
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkReleaseDisplayEXT.html vkReleaseDisplayEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkReleaseDisplayEXT.html vkReleaseDisplayEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkReleaseDisplayEXT"
                vkReleaseDisplayEXT ::
                VkPhysicalDevice -- ^ physicalDevice
                                 -> VkDisplayKHR -- ^ display
                                                 -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkReleaseDisplayEXT
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkDisplayKHR display
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkReleaseDisplayEXT.html vkReleaseDisplayEXT registry at www.khronos.org>
+foreign import ccall safe "vkReleaseDisplayEXT"
+               vkReleaseDisplayEXTSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkDisplayKHR -- ^ display
+                                                -> IO VkResult
+
 pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: (Num a, Eq a) =>
         a
 
@@ -73,7 +88,7 @@
 
 is_VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
 
 type VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME =
      "VK_EXT_direct_mode_display"
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
@@ -41,7 +41,7 @@
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceDiscardRectanglePropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState,
@@ -73,7 +73,8 @@
         module Graphics.Vulkan.Types.Enum.VkVertexInputRate,
         module Graphics.Vulkan.Types.Struct.VkViewport,
         -- > #include "vk_platform.h"
-        vkCmdSetDiscardRectangleEXT, module Graphics.Vulkan.Types.Handles,
+        vkCmdSetDiscardRectangleEXT, vkCmdSetDiscardRectangleEXTSafe,
+        module Graphics.Vulkan.Types.Handles,
         VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION,
         pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION,
         VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME,
@@ -113,7 +114,7 @@
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceDiscardRectanglePropertiesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
 import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo
@@ -146,7 +147,7 @@
 --   >     , const VkRect2D* pDiscardRectangles
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetDiscardRectangleEXT.html vkCmdSetDiscardRectangleEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDiscardRectangleEXT.html vkCmdSetDiscardRectangleEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdSetDiscardRectangleEXT"
                vkCmdSetDiscardRectangleEXT ::
                VkCommandBuffer -- ^ commandBuffer
@@ -155,6 +156,26 @@
                                                    -> Ptr VkRect2D -- ^ pDiscardRectangles
                                                                    -> IO ()
 
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDiscardRectangleEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstDiscardRectangle
+--   >     , uint32_t discardRectangleCount
+--   >     , const VkRect2D* pDiscardRectangles
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDiscardRectangleEXT.html vkCmdSetDiscardRectangleEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetDiscardRectangleEXT"
+               vkCmdSetDiscardRectangleEXTSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstDiscardRectangle
+                                         -> Word32 -- ^ discardRectangleCount
+                                                   -> Ptr VkRect2D -- ^ pDiscardRectangles
+                                                                   -> IO ()
+
 pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION :: (Num a, Eq a) =>
         a
 
@@ -179,7 +200,7 @@
 
 is_VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
 
 type VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME =
      "VK_EXT_discard_rectangles"
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
@@ -45,8 +45,10 @@
         module Graphics.Vulkan.Types.Enum.VkSwapchainCreateFlagsKHR,
         module Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR,
         -- > #include "vk_platform.h"
-        vkDisplayPowerControlEXT, vkRegisterDeviceEventEXT,
-        vkRegisterDisplayEventEXT, vkGetSwapchainCounterEXT,
+        vkDisplayPowerControlEXT, vkDisplayPowerControlEXTSafe,
+        vkRegisterDeviceEventEXT, vkRegisterDeviceEventEXTSafe,
+        vkRegisterDisplayEventEXT, vkRegisterDisplayEventEXTSafe,
+        vkGetSwapchainCounterEXT, vkGetSwapchainCounterEXTSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -100,7 +102,7 @@
 --   >     , const VkDisplayPowerInfoEXT* pDisplayPowerInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDisplayPowerControlEXT.html vkDisplayPowerControlEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDisplayPowerControlEXT.html vkDisplayPowerControlEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkDisplayPowerControlEXT"
                vkDisplayPowerControlEXT ::
                VkDevice -- ^ device
@@ -111,6 +113,23 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   > VkResult vkDisplayPowerControlEXT
+--   >     ( VkDevice device
+--   >     , VkDisplayKHR display
+--   >     , const VkDisplayPowerInfoEXT* pDisplayPowerInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDisplayPowerControlEXT.html vkDisplayPowerControlEXT registry at www.khronos.org>
+foreign import ccall safe "vkDisplayPowerControlEXT"
+               vkDisplayPowerControlEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDisplayKHR -- ^ display
+                              -> Ptr VkDisplayPowerInfoEXT -- ^ pDisplayPowerInfo
+                                                           -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   > VkResult vkRegisterDeviceEventEXT
 --   >     ( VkDevice device
 --   >     , const VkDeviceEventInfoEXT* pDeviceEventInfo
@@ -118,7 +137,7 @@
 --   >     , VkFence* pFence
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkRegisterDeviceEventEXT.html vkRegisterDeviceEventEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkRegisterDeviceEventEXT.html vkRegisterDeviceEventEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkRegisterDeviceEventEXT"
                vkRegisterDeviceEventEXT ::
                VkDevice -- ^ device
@@ -131,6 +150,26 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   > VkResult vkRegisterDeviceEventEXT
+--   >     ( VkDevice device
+--   >     , const VkDeviceEventInfoEXT* pDeviceEventInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFence* pFence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkRegisterDeviceEventEXT.html vkRegisterDeviceEventEXT registry at www.khronos.org>
+foreign import ccall safe "vkRegisterDeviceEventEXT"
+               vkRegisterDeviceEventEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDeviceEventInfoEXT -- ^ pDeviceEventInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   > VkResult vkRegisterDisplayEventEXT
 --   >     ( VkDevice device
 --   >     , VkDisplayKHR display
@@ -139,7 +178,7 @@
 --   >     , VkFence* pFence
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkRegisterDisplayEventEXT.html vkRegisterDisplayEventEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkRegisterDisplayEventEXT.html vkRegisterDisplayEventEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkRegisterDisplayEventEXT"
                vkRegisterDisplayEventEXT ::
                VkDevice -- ^ device
@@ -152,8 +191,33 @@
                                                -> Ptr VkFence -- ^ pFence
                                                               -> IO VkResult
 
--- | Success codes: 'VK_SUCCESS', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR'.
+-- | Success codes: 'VK_SUCCESS'.
 --
+--   > VkResult vkRegisterDisplayEventEXT
+--   >     ( VkDevice device
+--   >     , VkDisplayKHR display
+--   >     , const VkDisplayEventInfoEXT* pDisplayEventInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFence* pFence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkRegisterDisplayEventEXT.html vkRegisterDisplayEventEXT registry at www.khronos.org>
+foreign import ccall safe "vkRegisterDisplayEventEXT"
+               vkRegisterDisplayEventEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDisplayKHR -- ^ display
+                              ->
+                   Ptr VkDisplayEventInfoEXT -- ^ pDisplayEventInfo
+                                             ->
+                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                               -> Ptr VkFence -- ^ pFence
+                                                              -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR'.
+--
 --   > VkResult vkGetSwapchainCounterEXT
 --   >     ( VkDevice device
 --   >     , VkSwapchainKHR swapchain
@@ -161,7 +225,7 @@
 --   >     , uint64_t* pCounterValue
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetSwapchainCounterEXT.html vkGetSwapchainCounterEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSwapchainCounterEXT.html vkGetSwapchainCounterEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkGetSwapchainCounterEXT"
                vkGetSwapchainCounterEXT ::
                VkDevice -- ^ device
@@ -172,6 +236,28 @@
                                                -> Ptr Word64 -- ^ pCounterValue
                                                              -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR'.
+--
+--   > VkResult vkGetSwapchainCounterEXT
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     , VkSurfaceCounterFlagBitsEXT counter
+--   >     , uint64_t* pCounterValue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSwapchainCounterEXT.html vkGetSwapchainCounterEXT registry at www.khronos.org>
+foreign import ccall safe "vkGetSwapchainCounterEXT"
+               vkGetSwapchainCounterEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSwapchainKHR -- ^ swapchain
+                                ->
+                   VkSurfaceCounterFlagBitsEXT -- ^ counter
+                                               -> Ptr Word64 -- ^ pCounterValue
+                                                             -> IO VkResult
+
 pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1
@@ -195,7 +281,7 @@
 
 is_VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
 
 type VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME =
      "VK_EXT_display_control"
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
@@ -34,6 +34,7 @@
         module Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR,
         -- > #include "vk_platform.h"
         vkGetPhysicalDeviceSurfaceCapabilities2EXT,
+        vkGetPhysicalDeviceSurfaceCapabilities2EXTSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
@@ -67,7 +68,7 @@
 --   >     , VkSurfaceCapabilities2EXT* pSurfaceCapabilities
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html vkGetPhysicalDeviceSurfaceCapabilities2EXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html vkGetPhysicalDeviceSurfaceCapabilities2EXT registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfaceCapabilities2EXT"
                vkGetPhysicalDeviceSurfaceCapabilities2EXT ::
@@ -77,6 +78,26 @@
                               -> Ptr VkSurfaceCapabilities2EXT -- ^ pSurfaceCapabilities
                                                                -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSurfaceKHR surface
+--   >     , VkSurfaceCapabilities2EXT* pSurfaceCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html vkGetPhysicalDeviceSurfaceCapabilities2EXT registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceSurfaceCapabilities2EXT"
+               vkGetPhysicalDeviceSurfaceCapabilities2EXTSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr VkSurfaceCapabilities2EXT -- ^ pSurfaceCapabilities
+                                                               -> IO VkResult
+
 pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -101,7 +122,8 @@
 
 is_VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
-  = eqCStrings _VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
 
 type VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME =
      "VK_EXT_display_surface_counter"
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
@@ -28,10 +28,10 @@
         pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME,
         pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT)
        where
-import           GHC.Ptr                                                       (Ptr (..))
+import           GHC.Ptr                                                    (Ptr (..))
 import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeBitmaskKHR (..),
-                                                                                VkExternalMemoryHandleTypeFlagBitsKHR)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeBitmask (..),
+                                                                             VkExternalMemoryHandleTypeFlagBits)
 
 pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -57,14 +57,15 @@
 
 is_VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
-  = eqCStrings _VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
 
 type VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME =
      "VK_EXT_external_memory_dma_buf"
 
 -- | bitpos = @9@
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT ::
-        VkExternalMemoryHandleTypeFlagBitsKHR
+        VkExternalMemoryHandleTypeFlagBits
 
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT =
-        VkExternalMemoryHandleTypeFlagBitsKHR 512
+        VkExternalMemoryHandleTypeFlagBits 512
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
@@ -26,20 +26,23 @@
         -- ** Required extensions: 'VK_KHR_external_memory'.
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagBitsKHR,
+        module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkImportMemoryHostPointerInfoEXT,
         module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
         module Graphics.Vulkan.Types.Struct.VkMemoryHostPointerPropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
         vkGetMemoryHostPointerPropertiesEXT,
+        vkGetMemoryHostPointerPropertiesEXTSafe,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION,
@@ -56,7 +59,9 @@
                                                                                                (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
@@ -68,31 +73,53 @@
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalMemoryHostPropertiesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
 --
 --   > VkResult vkGetMemoryHostPointerPropertiesEXT
 --   >     ( VkDevice device
---   >     , VkExternalMemoryHandleTypeFlagBitsKHR handleType
+--   >     , VkExternalMemoryHandleTypeFlagBits handleType
 --   >     , const void* pHostPointer
 --   >     , VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetMemoryHostPointerPropertiesEXT.html vkGetMemoryHostPointerPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryHostPointerPropertiesEXT.html vkGetMemoryHostPointerPropertiesEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkGetMemoryHostPointerPropertiesEXT"
                vkGetMemoryHostPointerPropertiesEXT ::
                VkDevice -- ^ device
                         ->
-                 VkExternalMemoryHandleTypeFlagBitsKHR -- ^ handleType
-                                                       ->
+                 VkExternalMemoryHandleTypeFlagBits -- ^ handleType
+                                                    ->
                    Ptr Void -- ^ pHostPointer
                             -> Ptr VkMemoryHostPointerPropertiesEXT -- ^ pMemoryHostPointerProperties
                                                                     -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkGetMemoryHostPointerPropertiesEXT
+--   >     ( VkDevice device
+--   >     , VkExternalMemoryHandleTypeFlagBits handleType
+--   >     , const void* pHostPointer
+--   >     , VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryHostPointerPropertiesEXT.html vkGetMemoryHostPointerPropertiesEXT registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryHostPointerPropertiesEXT"
+               vkGetMemoryHostPointerPropertiesEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkExternalMemoryHandleTypeFlagBits -- ^ handleType
+                                                    ->
+                   Ptr Void -- ^ pHostPointer
+                            -> Ptr VkMemoryHostPointerPropertiesEXT -- ^ pMemoryHostPointerProperties
+                                                                    -> IO VkResult
+
 pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -117,7 +144,7 @@
 
 is_VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
-  = eqCStrings _VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
 
 type VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME =
      "VK_EXT_external_memory_host"
@@ -142,14 +169,14 @@
 
 -- | bitpos = @7@
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT ::
-        VkExternalMemoryHandleTypeFlagBitsKHR
+        VkExternalMemoryHandleTypeFlagBits
 
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT =
-        VkExternalMemoryHandleTypeFlagBitsKHR 128
+        VkExternalMemoryHandleTypeFlagBits 128
 
 -- | bitpos = @8@
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
-        :: VkExternalMemoryHandleTypeFlagBitsKHR
+        :: VkExternalMemoryHandleTypeFlagBits
 
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
-        = VkExternalMemoryHandleTypeFlagBitsKHR 256
+        = VkExternalMemoryHandleTypeFlagBits 256
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,7 +17,7 @@
         -- type: @device@
         --
         -- Extension number: @175@
-        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags,
         module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
         module Graphics.Vulkan.Types.Struct.VkDeviceQueueGlobalPriorityCreateInfoEXT,
         module Graphics.Vulkan.Types.BaseTypes,
@@ -35,7 +35,7 @@
                                                                                         (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags
 import           Graphics.Vulkan.Types.Enum.VkQueueGlobalPriorityEXT
 import           Graphics.Vulkan.Types.Enum.VkResult
                                                                                         (VkResult (..))
@@ -66,7 +66,7 @@
 
 is_VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
-  = eqCStrings _VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
 
 type VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME =
      "VK_EXT_global_priority"
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,7 +27,8 @@
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Struct.VkXYColorEXT,
         -- > #include "vk_platform.h"
-        vkSetHdrMetadataEXT, module Graphics.Vulkan.Types.Handles,
+        vkSetHdrMetadataEXT, vkSetHdrMetadataEXTSafe,
+        module Graphics.Vulkan.Types.Handles,
         VK_EXT_HDR_METADATA_SPEC_VERSION,
         pattern VK_EXT_HDR_METADATA_SPEC_VERSION,
         VK_EXT_HDR_METADATA_EXTENSION_NAME,
@@ -48,7 +49,7 @@
 --   >     , const VkHdrMetadataEXT* pMetadata
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkSetHdrMetadataEXT.html vkSetHdrMetadataEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetHdrMetadataEXT.html vkSetHdrMetadataEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkSetHdrMetadataEXT"
                vkSetHdrMetadataEXT ::
                VkDevice -- ^ device
@@ -58,6 +59,23 @@
                                               -> Ptr VkHdrMetadataEXT -- ^ pMetadata
                                                                       -> IO ()
 
+-- | > () vkSetHdrMetadataEXT
+--   >     ( VkDevice device
+--   >     , uint32_t swapchainCount
+--   >     , const VkSwapchainKHR* pSwapchains
+--   >     , const VkHdrMetadataEXT* pMetadata
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkSetHdrMetadataEXT.html vkSetHdrMetadataEXT registry at www.khronos.org>
+foreign import ccall safe "vkSetHdrMetadataEXT"
+               vkSetHdrMetadataEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ swapchainCount
+                        -> Ptr VkSwapchainKHR -- ^ pSwapchains
+                                              -> Ptr VkHdrMetadataEXT -- ^ pMetadata
+                                                                      -> IO ()
+
 pattern VK_EXT_HDR_METADATA_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_EXT_HDR_METADATA_SPEC_VERSION = 1
@@ -81,7 +99,7 @@
 
 is_VK_EXT_HDR_METADATA_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_HDR_METADATA_EXTENSION_NAME
-  = eqCStrings _VK_EXT_HDR_METADATA_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_HDR_METADATA_EXTENSION_NAME
 
 type VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata"
 
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
@@ -49,7 +49,7 @@
 
 is_VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
-  = eqCStrings _VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
 
 type VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME =
      "VK_EXT_post_depth_coverage"
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
@@ -26,11 +26,10 @@
         pattern VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION,
         VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME,
         pattern VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME,
-        pattern VK_QUEUE_FAMILY_FOREIGN_EXT, VK_QUEUE_FAMILY_FOREIGN_EXT)
+        pattern VK_QUEUE_FAMILY_FOREIGN_EXT)
        where
 import           GHC.Ptr                   (Ptr (..))
-import           Graphics.Vulkan.Constants (VK_QUEUE_FAMILY_FOREIGN_EXT,
-                                            pattern VK_QUEUE_FAMILY_FOREIGN_EXT)
+import           Graphics.Vulkan.Constants (pattern VK_QUEUE_FAMILY_FOREIGN_EXT)
 import           Graphics.Vulkan.Marshal
 
 pattern VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION ::
@@ -57,7 +56,7 @@
 
 is_VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
-  = eqCStrings _VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
 
 type VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME =
      "VK_EXT_queue_family_foreign"
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
@@ -35,7 +35,7 @@
         module Graphics.Vulkan.Types.Struct.VkOffset2D,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSampleLocationsPropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
@@ -51,8 +51,9 @@
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Struct.VkSubpassSampleLocationsEXT,
         -- > #include "vk_platform.h"
-        vkCmdSetSampleLocationsEXT,
+        vkCmdSetSampleLocationsEXT, vkCmdSetSampleLocationsEXTSafe,
         vkGetPhysicalDeviceMultisamplePropertiesEXT,
+        vkGetPhysicalDeviceMultisamplePropertiesEXTSafe,
         module Graphics.Vulkan.Types.Handles,
         VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION,
         pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION,
@@ -94,7 +95,7 @@
 import           Graphics.Vulkan.Types.Struct.VkOffset2D
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSampleLocationsPropertiesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo
@@ -115,20 +116,36 @@
 --   >     , const VkSampleLocationsInfoEXT* pSampleLocationsInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetSampleLocationsEXT.html vkCmdSetSampleLocationsEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetSampleLocationsEXT.html vkCmdSetSampleLocationsEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdSetSampleLocationsEXT"
                vkCmdSetSampleLocationsEXT ::
                VkCommandBuffer -- ^ commandBuffer
                                -> Ptr VkSampleLocationsInfoEXT -- ^ pSampleLocationsInfo
                                                                -> IO ()
 
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetSampleLocationsEXT
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkSampleLocationsInfoEXT* pSampleLocationsInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetSampleLocationsEXT.html vkCmdSetSampleLocationsEXT registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetSampleLocationsEXT"
+               vkCmdSetSampleLocationsEXTSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkSampleLocationsInfoEXT -- ^ pSampleLocationsInfo
+                                                               -> IO ()
+
 -- | > () vkGetPhysicalDeviceMultisamplePropertiesEXT
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , VkSampleCountFlagBits samples
 --   >     , VkMultisamplePropertiesEXT* pMultisampleProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html vkGetPhysicalDeviceMultisamplePropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html vkGetPhysicalDeviceMultisamplePropertiesEXT registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceMultisamplePropertiesEXT"
                vkGetPhysicalDeviceMultisamplePropertiesEXT ::
@@ -138,6 +155,22 @@
                                        -> Ptr VkMultisamplePropertiesEXT -- ^ pMultisampleProperties
                                                                          -> IO ()
 
+-- | > () vkGetPhysicalDeviceMultisamplePropertiesEXT
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSampleCountFlagBits samples
+--   >     , VkMultisamplePropertiesEXT* pMultisampleProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html vkGetPhysicalDeviceMultisamplePropertiesEXT registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceMultisamplePropertiesEXT"
+               vkGetPhysicalDeviceMultisamplePropertiesEXTSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSampleCountFlagBits -- ^ samples
+                                       -> Ptr VkMultisamplePropertiesEXT -- ^ pMultisampleProperties
+                                                                         -> IO ()
+
 pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1
@@ -161,7 +194,7 @@
 
 is_VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
 
 type VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME =
      "VK_EXT_sample_locations"
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
@@ -29,7 +29,7 @@
         module Graphics.Vulkan.Types.Enum.VkFilter,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
@@ -69,7 +69,7 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
@@ -99,7 +99,8 @@
 
 is_VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
 
 type VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME =
      "VK_EXT_sampler_filter_minmax"
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
@@ -49,7 +49,8 @@
 
 is_VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
 
 type VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME =
      "VK_EXT_shader_stencil_export"
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
@@ -49,7 +49,8 @@
 
 is_VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
 
 type VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME =
      "VK_EXT_shader_subgroup_ballot"
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
@@ -49,7 +49,7 @@
 
 is_VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
 
 type VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME =
      "VK_EXT_shader_subgroup_vote"
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
@@ -51,7 +51,8 @@
 is_VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME ::
                                                      CString -> Bool
 is_VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
 
 type VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME =
      "VK_EXT_shader_viewport_index_layer"
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
@@ -69,7 +69,8 @@
 
 is_VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
-  = eqCStrings _VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
 
 type VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME =
      "VK_EXT_swapchain_colorspace"
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
@@ -28,8 +28,10 @@
         module Graphics.Vulkan.Types.Struct.VkValidationCacheCreateInfoEXT,
         module Graphics.Vulkan.Types.Enum.VkValidationCacheHeaderVersionEXT,
         -- > #include "vk_platform.h"
-        vkCreateValidationCacheEXT, vkDestroyValidationCacheEXT,
-        vkMergeValidationCachesEXT, vkGetValidationCacheDataEXT,
+        vkCreateValidationCacheEXT, vkCreateValidationCacheEXTSafe,
+        vkDestroyValidationCacheEXT, vkDestroyValidationCacheEXTSafe,
+        vkMergeValidationCachesEXT, vkMergeValidationCachesEXTSafe,
+        vkGetValidationCacheDataEXT, vkGetValidationCacheDataEXTSafe,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
@@ -77,7 +79,7 @@
 --   >     , VkValidationCacheEXT* pValidationCache
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateValidationCacheEXT.html vkCreateValidationCacheEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateValidationCacheEXT.html vkCreateValidationCacheEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateValidationCacheEXT"
                vkCreateValidationCacheEXT ::
                VkDevice -- ^ device
@@ -89,13 +91,36 @@
                      Ptr VkValidationCacheEXT -- ^ pValidationCache
                                               -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkCreateValidationCacheEXT
+--   >     ( VkDevice device
+--   >     , const VkValidationCacheCreateInfoEXT* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkValidationCacheEXT* pValidationCache
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateValidationCacheEXT.html vkCreateValidationCacheEXT registry at www.khronos.org>
+foreign import ccall safe "vkCreateValidationCacheEXT"
+               vkCreateValidationCacheEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkValidationCacheCreateInfoEXT -- ^ pCreateInfo
+                                                    ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkValidationCacheEXT -- ^ pValidationCache
+                                              -> IO VkResult
+
 -- | > () vkDestroyValidationCacheEXT
 --   >     ( VkDevice device
 --   >     , VkValidationCacheEXT validationCache
 --   >     , const VkAllocationCallbacks* pAllocator
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyValidationCacheEXT.html vkDestroyValidationCacheEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyValidationCacheEXT.html vkDestroyValidationCacheEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkDestroyValidationCacheEXT"
                vkDestroyValidationCacheEXT ::
                VkDevice -- ^ device
@@ -104,6 +129,21 @@
                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                    -> IO ()
 
+-- | > () vkDestroyValidationCacheEXT
+--   >     ( VkDevice device
+--   >     , VkValidationCacheEXT validationCache
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyValidationCacheEXT.html vkDestroyValidationCacheEXT registry at www.khronos.org>
+foreign import ccall safe "vkDestroyValidationCacheEXT"
+               vkDestroyValidationCacheEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkValidationCacheEXT -- ^ validationCache
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -115,7 +155,7 @@
 --   >     , const VkValidationCacheEXT* pSrcCaches
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkMergeValidationCachesEXT.html vkMergeValidationCachesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkMergeValidationCachesEXT.html vkMergeValidationCachesEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkMergeValidationCachesEXT"
                vkMergeValidationCachesEXT ::
                VkDevice -- ^ device
@@ -126,6 +166,28 @@
                           -> Ptr VkValidationCacheEXT -- ^ pSrcCaches
                                                       -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkMergeValidationCachesEXT
+--   >     ( VkDevice device
+--   >     , VkValidationCacheEXT dstCache
+--   >     , uint32_t srcCacheCount
+--   >     , const VkValidationCacheEXT* pSrcCaches
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkMergeValidationCachesEXT.html vkMergeValidationCachesEXT registry at www.khronos.org>
+foreign import ccall safe "vkMergeValidationCachesEXT"
+               vkMergeValidationCachesEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkValidationCacheEXT -- ^ dstCache
+                                      ->
+                   Word32 -- ^ srcCacheCount
+                          -> Ptr VkValidationCacheEXT -- ^ pSrcCaches
+                                                      -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -137,7 +199,7 @@
 --   >     , void* pData
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetValidationCacheDataEXT.html vkGetValidationCacheDataEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetValidationCacheDataEXT.html vkGetValidationCacheDataEXT registry at www.khronos.org>
 foreign import ccall unsafe "vkGetValidationCacheDataEXT"
                vkGetValidationCacheDataEXT ::
                VkDevice -- ^ device
@@ -147,6 +209,27 @@
                                                    -> Ptr Void -- ^ pData
                                                                -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetValidationCacheDataEXT
+--   >     ( VkDevice device
+--   >     , VkValidationCacheEXT validationCache
+--   >     , size_t* pDataSize
+--   >     , void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetValidationCacheDataEXT.html vkGetValidationCacheDataEXT registry at www.khronos.org>
+foreign import ccall safe "vkGetValidationCacheDataEXT"
+               vkGetValidationCacheDataEXTSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkValidationCacheEXT -- ^ validationCache
+                                      -> Ptr CSize -- ^ pDataSize
+                                                   -> Ptr Void -- ^ pData
+                                                               -> IO VkResult
+
 pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1
@@ -170,7 +253,7 @@
 
 is_VK_EXT_VALIDATION_CACHE_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
-  = eqCStrings _VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
 
 type VK_EXT_VALIDATION_CACHE_EXTENSION_NAME =
      "VK_EXT_validation_cache"
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
@@ -65,7 +65,7 @@
 
 is_VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME :: CString -> Bool
 is_VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
-  = eqCStrings _VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
 
 type VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME =
      "VK_EXT_validation_flags"
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
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_vertex_attribute_divisor.hs
@@ -0,0 +1,113 @@
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds       #-}
+{-# LANGUAGE MagicHash       #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE Strict          #-}
+{-# LANGUAGE ViewPatterns    #-}
+module Graphics.Vulkan.Ext.VK_EXT_vertex_attribute_divisor
+       (-- * Vulkan extension: @VK_EXT_vertex_attribute_divisor@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Vikram Kushwaha @vkushwaha@
+        --
+        -- author: @NV@
+        --
+        -- type: @device@
+        --
+        -- Extension number: @191@
+        --
+        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        --
+
+        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkFormat,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
+        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
+        module Graphics.Vulkan.Types.Struct.VkPipelineVertexInputDivisorStateCreateInfoEXT,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        module Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription,
+        module Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription,
+        module Graphics.Vulkan.Types.Struct.VkVertexInputBindingDivisorDescriptionEXT,
+        module Graphics.Vulkan.Types.Enum.VkVertexInputRate,
+        -- > #include "vk_platform.h"
+        VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION,
+        pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION,
+        VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME,
+        pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
+        pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)
+       where
+import           GHC.Ptr
+                                                                                                   (Ptr (..))
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkFormat
+import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Enum.VkVertexInputRate
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+import           Graphics.Vulkan.Types.Struct.VkPipelineVertexInputDivisorStateCreateInfoEXT
+import           Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription
+import           Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription
+import           Graphics.Vulkan.Types.Struct.VkVertexInputBindingDivisorDescriptionEXT
+
+pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION ::
+        (Num a, Eq a) => a
+
+pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1
+
+type VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1
+
+pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: CString
+
+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
+
+{-# INLINE _VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME #-}
+
+_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: CString
+_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
+  = Ptr "VK_EXT_vertex_attribute_divisor\NUL"#
+
+{-# INLINE is_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME #-}
+
+is_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME ::
+                                                  CString -> Bool
+is_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
+
+type VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME =
+     "VK_EXT_vertex_attribute_divisor"
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
+        = VkStructureType 1000190000
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
+        = VkStructureType 1000190001
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
@@ -31,7 +31,10 @@
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkGetRefreshCycleDurationGOOGLE, vkGetPastPresentationTimingGOOGLE,
+        vkGetRefreshCycleDurationGOOGLE,
+        vkGetRefreshCycleDurationGOOGLESafe,
+        vkGetPastPresentationTimingGOOGLE,
+        vkGetPastPresentationTimingGOOGLESafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Handles,
         VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION,
@@ -61,7 +64,7 @@
 --   >     , VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetRefreshCycleDurationGOOGLE.html vkGetRefreshCycleDurationGOOGLE registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetRefreshCycleDurationGOOGLE.html vkGetRefreshCycleDurationGOOGLE registry at www.khronos.org>
 foreign import ccall unsafe "vkGetRefreshCycleDurationGOOGLE"
                vkGetRefreshCycleDurationGOOGLE ::
                VkDevice -- ^ device
@@ -70,6 +73,25 @@
                                 -> Ptr VkRefreshCycleDurationGOOGLE -- ^ pDisplayTimingProperties
                                                                     -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetRefreshCycleDurationGOOGLE
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     , VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetRefreshCycleDurationGOOGLE.html vkGetRefreshCycleDurationGOOGLE registry at www.khronos.org>
+foreign import ccall safe "vkGetRefreshCycleDurationGOOGLE"
+               vkGetRefreshCycleDurationGOOGLESafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSwapchainKHR -- ^ swapchain
+                                -> Ptr VkRefreshCycleDurationGOOGLE -- ^ pDisplayTimingProperties
+                                                                    -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -81,7 +103,7 @@
 --   >     , VkPastPresentationTimingGOOGLE* pPresentationTimings
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPastPresentationTimingGOOGLE.html vkGetPastPresentationTimingGOOGLE registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPastPresentationTimingGOOGLE.html vkGetPastPresentationTimingGOOGLE registry at www.khronos.org>
 foreign import ccall unsafe "vkGetPastPresentationTimingGOOGLE"
                vkGetPastPresentationTimingGOOGLE ::
                VkDevice -- ^ device
@@ -92,6 +114,28 @@
                               -> Ptr VkPastPresentationTimingGOOGLE -- ^ pPresentationTimings
                                                                     -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetPastPresentationTimingGOOGLE
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     , uint32_t* pPresentationTimingCount
+--   >     , VkPastPresentationTimingGOOGLE* pPresentationTimings
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPastPresentationTimingGOOGLE.html vkGetPastPresentationTimingGOOGLE registry at www.khronos.org>
+foreign import ccall safe "vkGetPastPresentationTimingGOOGLE"
+               vkGetPastPresentationTimingGOOGLESafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSwapchainKHR -- ^ swapchain
+                                ->
+                   Ptr Word32 -- ^ pPresentationTimingCount
+                              -> Ptr VkPastPresentationTimingGOOGLE -- ^ pPresentationTimings
+                                                                    -> IO VkResult
+
 pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1
@@ -115,7 +159,7 @@
 
 is_VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME :: CString -> Bool
 is_VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
-  = eqCStrings _VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
 
 type VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME =
      "VK_GOOGLE_display_timing"
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
@@ -53,7 +53,7 @@
 
 is_VK_IMG_FILTER_CUBIC_EXTENSION_NAME :: CString -> Bool
 is_VK_IMG_FILTER_CUBIC_EXTENSION_NAME
-  = eqCStrings _VK_IMG_FILTER_CUBIC_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_IMG_FILTER_CUBIC_EXTENSION_NAME
 
 type VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic"
 
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
@@ -57,7 +57,7 @@
 
 is_VK_IMG_FORMAT_PVRTC_EXTENSION_NAME :: CString -> Bool
 is_VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
-  = eqCStrings _VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
 
 type VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc"
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -22,16 +23,7 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_storage_buffer_storage_class'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeaturesKHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         VK_KHR_16BIT_STORAGE_SPEC_VERSION,
         pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION,
         VK_KHR_16BIT_STORAGE_EXTENSION_NAME,
@@ -40,15 +32,10 @@
        where
 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.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeaturesKHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
 
 pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -73,12 +60,9 @@
 
 is_VK_KHR_16BIT_STORAGE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_16BIT_STORAGE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_16BIT_STORAGE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_16BIT_STORAGE_EXTENSION_NAME
 
 type VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage"
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR
-        = VkStructureType 1000083000
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @android@
+        --
         -- Extension number: @9@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_ANDROID_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.Bitmasks,
@@ -30,15 +30,14 @@
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <android/native_window.h>
-        vkCreateAndroidSurfaceKHR, module Graphics.Vulkan.Marshal,
+        vkCreateAndroidSurfaceKHR, vkCreateAndroidSurfaceKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.Defines,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
         module Graphics.Vulkan.Types.Funcpointers,
         module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
         module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
         VK_KHR_ANDROID_SURFACE_SPEC_VERSION,
         pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION,
@@ -50,13 +49,13 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Defines
 import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
 import           Graphics.Vulkan.Types.Funcpointers
 import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Include
 import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
 import           Graphics.Vulkan.Types.Struct.VkAndroidSurfaceCreateInfoKHR
 
@@ -71,7 +70,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateAndroidSurfaceKHR.html vkCreateAndroidSurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateAndroidSurfaceKHR.html vkCreateAndroidSurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateAndroidSurfaceKHR"
                vkCreateAndroidSurfaceKHR ::
                VkInstance -- ^ instance
@@ -82,6 +81,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+--   > VkResult vkCreateAndroidSurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkAndroidSurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateAndroidSurfaceKHR.html vkCreateAndroidSurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateAndroidSurfaceKHR"
+               vkCreateAndroidSurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkAndroidSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                   ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6
@@ -105,7 +126,7 @@
 
 is_VK_KHR_ANDROID_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
 
 type VK_KHR_ANDROID_SURFACE_EXTENSION_NAME =
      "VK_KHR_android_surface"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -20,13 +21,15 @@
         -- Extension number: @158@
         module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
-        vkBindBufferMemory2KHR, vkBindImageMemory2KHR,
+        vkBindBufferMemory2KHR, vkBindBufferMemory2KHRSafe,
+        vkBindImageMemory2KHR, vkBindImageMemory2KHRSafe,
         module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo,
         VK_KHR_BIND_MEMORY_2_SPEC_VERSION,
         pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION,
         VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,
@@ -36,52 +39,99 @@
         pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR)
        where
 import           GHC.Ptr                                                (Ptr (..))
+import           Graphics.Vulkan.Core_1_1                               (pattern VK_IMAGE_CREATE_ALIAS_BIT,
+                                                                         pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
+                                                                         pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags          (VkImageCreateBitmask (..),
-                                                                         VkImageCreateFlagBits)
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo
 import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo
 import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR
 
--- | Success codes: 'VK_SUCCESS'.
+-- | This is an alias for `vkBindBufferMemory2`.
 --
+--   Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
 --   > VkResult vkBindBufferMemory2KHR
 --   >     ( VkDevice device
 --   >     , uint32_t bindInfoCount
---   >     , const VkBindBufferMemoryInfoKHR* pBindInfos
+--   >     , const VkBindBufferMemoryInfo* pBindInfos
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkBindBufferMemory2KHR.html vkBindBufferMemory2KHR registry at www.khronos.org>
-foreign import ccall unsafe "vkBindBufferMemory2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkBindBufferMemory2KHR.html vkBindBufferMemory2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkBindBufferMemory2"
                vkBindBufferMemory2KHR ::
                VkDevice -- ^ device
                         -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfoKHR -- ^ pBindInfos
-                                                                   -> IO VkResult
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
 
--- | Success codes: 'VK_SUCCESS'.
+-- | This is an alias for `vkBindBufferMemory2`.
 --
+--   Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkBindBufferMemory2KHR
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindBufferMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkBindBufferMemory2KHR.html vkBindBufferMemory2KHR registry at www.khronos.org>
+foreign import ccall safe "vkBindBufferMemory2"
+               vkBindBufferMemory2KHRSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+-- | This is an alias for `vkBindImageMemory2`.
+--
+--   Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkBindImageMemory2KHR
 --   >     ( VkDevice device
 --   >     , uint32_t bindInfoCount
---   >     , const VkBindImageMemoryInfoKHR* pBindInfos
+--   >     , const VkBindImageMemoryInfo* pBindInfos
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkBindImageMemory2KHR.html vkBindImageMemory2KHR registry at www.khronos.org>
-foreign import ccall unsafe "vkBindImageMemory2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkBindImageMemory2KHR.html vkBindImageMemory2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkBindImageMemory2"
                vkBindImageMemory2KHR ::
                VkDevice -- ^ device
                         -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindImageMemoryInfoKHR -- ^ pBindInfos
-                                                                  -> IO VkResult
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
 
+-- | This is an alias for `vkBindImageMemory2`.
+--
+--   Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory2KHR
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindImageMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkBindImageMemory2KHR.html vkBindImageMemory2KHR registry at www.khronos.org>
+foreign import ccall safe "vkBindImageMemory2"
+               vkBindImageMemory2KHRSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
 pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1
@@ -105,23 +155,14 @@
 
 is_VK_KHR_BIND_MEMORY_2_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
-  = eqCStrings _VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
 
 type VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2"
 
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR =
-        VkStructureType 1000157000
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
 
 pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR =
-        VkStructureType 1000157001
-
--- | bitpos = @10@
-pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR :: VkImageCreateFlagBits
+        VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
 
-pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR = VkImageCreateFlagBits 1024
+pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -22,14 +23,8 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_memory_requirements2'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
         module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirementsKHR,
-        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements,
-        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION,
         pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION,
         VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,
@@ -38,14 +33,11 @@
         pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR)
        where
 import           GHC.Ptr                                                       (Ptr (..))
+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.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
 import           Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirementsKHR
-import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements
-import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR
 
 pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -71,19 +63,13 @@
 
 is_VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
-  = eqCStrings _VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
 
 type VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME =
      "VK_KHR_dedicated_allocation"
 
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR =
-        VkStructureType 1000127000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
 
 pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR =
-        VkStructureType 1000127001
+        VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -18,46 +19,62 @@
         -- type: @device@
         --
         -- Extension number: @86@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.VkDescriptorType,
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntryKHR,
         module Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateTypeKHR,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         vkCreateDescriptorUpdateTemplateKHR,
+        vkCreateDescriptorUpdateTemplateKHRSafe,
         vkDestroyDescriptorUpdateTemplateKHR,
+        vkDestroyDescriptorUpdateTemplateKHRSafe,
         vkUpdateDescriptorSetWithTemplateKHR,
-        vkCmdPushDescriptorSetWithTemplateKHR,
+        vkUpdateDescriptorSetWithTemplateKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorType,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
+        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
         module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
         module Graphics.Vulkan.Types.Funcpointers,
         module Graphics.Vulkan.Types.Handles,
         module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry,
         VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION,
         pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION,
         VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
         pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
         pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
-        pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT,
-        pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR)
+        pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
+        pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
+        -- ** Required extensions: 'VK_KHR_push_descriptor'.
+        vkCmdPushDescriptorSetWithTemplateKHR,
+        vkCmdPushDescriptorSetWithTemplateKHRSafe,
+        pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR,
+        -- ** Required extensions: 'VK_EXT_debug_report'.
+        pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT)
        where
 import           GHC.Ptr
                                                                                        (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                       (pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+                                                                                       pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)
+import           Graphics.Vulkan.Ext.VK_EXT_debug_report
+                                                                                       (pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT)
+import           Graphics.Vulkan.Ext.VK_KHR_push_descriptor
+                                                                                       (pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR,
+                                                                                       vkCmdPushDescriptorSetWithTemplateKHR,
+                                                                                       vkCmdPushDescriptorSetWithTemplateKHRSafe)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT
-                                                                                       (VkDebugReportObjectTypeEXT (..))
 import           Graphics.Vulkan.Types.Enum.VkDescriptorType
+import           Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType
 import           Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateTypeKHR
 import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
-import           Graphics.Vulkan.Types.Enum.VkObjectType
-                                                                                       (VkObjectType (..))
 import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
@@ -65,88 +82,132 @@
 import           Graphics.Vulkan.Types.Funcpointers
 import           Graphics.Vulkan.Types.Handles
 import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry
 import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntryKHR
 
--- | Success codes: 'VK_SUCCESS'.
+-- | This is an alias for `vkCreateDescriptorUpdateTemplate`.
 --
+--   Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
 --   > VkResult vkCreateDescriptorUpdateTemplateKHR
 --   >     ( VkDevice device
---   >     , const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo
+--   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
 --   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate
+--   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateDescriptorUpdateTemplateKHR.html vkCreateDescriptorUpdateTemplateKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateDescriptorUpdateTemplateKHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDescriptorUpdateTemplateKHR.html vkCreateDescriptorUpdateTemplateKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
                vkCreateDescriptorUpdateTemplateKHR ::
                VkDevice -- ^ device
                         ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfoKHR -- ^ pCreateInfo
-                                                             ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
                    Ptr VkAllocationCallbacks -- ^ pAllocator
                                              ->
-                     Ptr VkDescriptorUpdateTemplateKHR -- ^ pDescriptorUpdateTemplate
-                                                       -> IO VkResult
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
 
--- | > () vkDestroyDescriptorUpdateTemplateKHR
+-- | This is an alias for `vkCreateDescriptorUpdateTemplate`.
+--
+--   Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorUpdateTemplateKHR
 --   >     ( VkDevice device
---   >     , VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate
+--   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
 --   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyDescriptorUpdateTemplateKHR.html vkDestroyDescriptorUpdateTemplateKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplateKHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDescriptorUpdateTemplateKHR.html vkCreateDescriptorUpdateTemplateKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+-- | This is an alias for `vkDestroyDescriptorUpdateTemplate`.
+--
+--   > () vkDestroyDescriptorUpdateTemplateKHR
+--   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorUpdateTemplateKHR.html vkDestroyDescriptorUpdateTemplateKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
                vkDestroyDescriptorUpdateTemplateKHR ::
                VkDevice -- ^ device
                         ->
-                 VkDescriptorUpdateTemplateKHR -- ^ descriptorUpdateTemplate
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
 
--- | > () vkUpdateDescriptorSetWithTemplateKHR
+-- | This is an alias for `vkDestroyDescriptorUpdateTemplate`.
+--
+--   > () vkDestroyDescriptorUpdateTemplateKHR
 --   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyDescriptorUpdateTemplateKHR.html vkDestroyDescriptorUpdateTemplateKHR registry at www.khronos.org>
+foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+-- | This is an alias for `vkUpdateDescriptorSetWithTemplate`.
+--
+--   > () vkUpdateDescriptorSetWithTemplateKHR
+--   >     ( VkDevice device
 --   >     , VkDescriptorSet descriptorSet
---   >     , VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
 --   >     , const void* pData
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkUpdateDescriptorSetWithTemplateKHR.html vkUpdateDescriptorSetWithTemplateKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplateKHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUpdateDescriptorSetWithTemplateKHR.html vkUpdateDescriptorSetWithTemplateKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
                vkUpdateDescriptorSetWithTemplateKHR ::
                VkDevice -- ^ device
                         ->
                  VkDescriptorSet -- ^ descriptorSet
-                                 ->
-                   VkDescriptorUpdateTemplateKHR -- ^ descriptorUpdateTemplate
-                                                 -> Ptr Void -- ^ pData
-                                                             -> IO ()
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
 
--- | queues: 'graphics', 'compute'.
---
---   renderpass: @both@
+-- | This is an alias for `vkUpdateDescriptorSetWithTemplate`.
 --
---   > () vkCmdPushDescriptorSetWithTemplateKHR
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate
---   >     , VkPipelineLayout layout
---   >     , uint32_t set
+--   > () vkUpdateDescriptorSetWithTemplateKHR
+--   >     ( VkDevice device
+--   >     , VkDescriptorSet descriptorSet
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
 --   >     , const void* pData
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html vkCmdPushDescriptorSetWithTemplateKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdPushDescriptorSetWithTemplateKHR"
-               vkCmdPushDescriptorSetWithTemplateKHR ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkDescriptorUpdateTemplateKHR -- ^ descriptorUpdateTemplate
-                                               ->
-                   VkPipelineLayout -- ^ layout
-                                    -> Word32 -- ^ set
-                                              -> Ptr Void -- ^ pData
-                                                          -> IO ()
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUpdateDescriptorSetWithTemplateKHR.html vkUpdateDescriptorSetWithTemplateKHR registry at www.khronos.org>
+foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
 
 pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -173,26 +234,20 @@
 is_VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME ::
                                                     CString -> Bool
 is_VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
 
 type VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME =
      "VK_KHR_descriptor_update_template"
 
 pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR
-        :: VkStructureType
+        = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
 
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR
-        = VkStructureType 1000085000
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR =
+        VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
 
-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
-        :: VkDebugReportObjectTypeEXT
+pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR =
+        VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
 
 pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
-        = VkDebugReportObjectTypeEXT 1000085000
-
--- | VkDescriptorUpdateTemplateKHR
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR ::
-        VkObjectType
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR =
-        VkObjectType 1000085000
+        = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
@@ -0,0 +1,395 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_KHR_device_group
+       (-- * Vulkan extension: @VK_KHR_device_group@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Jeff Bolz @jbolz@
+        --
+        -- author: @KHR@
+        --
+        -- type: @device@
+        --
+        -- Extension number: @61@
+        --
+        -- Required extensions: 'VK_KHR_device_group_creation'.
+        --
+
+        -- ** Required extensions: 'VK_KHR_device_group_creation'.
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHR,
+        module Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagBitsKHR,
+        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHR,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagBitsKHR,
+        vkGetDeviceGroupPeerMemoryFeaturesKHR,
+        vkGetDeviceGroupPeerMemoryFeaturesKHRSafe, vkCmdSetDeviceMaskKHR,
+        vkCmdSetDeviceMaskKHRSafe, vkCmdDispatchBaseKHR,
+        vkCmdDispatchBaseKHRSafe, module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlags,
+        module Graphics.Vulkan.Types.Handles,
+        VK_KHR_DEVICE_GROUP_SPEC_VERSION,
+        pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION,
+        VK_KHR_DEVICE_GROUP_EXTENSION_NAME,
+        pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR,
+        pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR,
+        pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR,
+        pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR,
+        pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR,
+        pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,
+        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR,
+        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.VkBindBufferMemoryDeviceGroupInfoKHR,
+        module Graphics.Vulkan.Types.Struct.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'.
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHR,
+        module Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        -- > #include "vk_platform.h"
+        vkGetDeviceGroupPresentCapabilitiesKHR,
+        vkGetDeviceGroupPresentCapabilitiesKHRSafe,
+        vkGetDeviceGroupSurfacePresentModesKHR,
+        vkGetDeviceGroupSurfacePresentModesKHRSafe,
+        vkGetPhysicalDevicePresentRectanglesKHR,
+        vkGetPhysicalDevicePresentRectanglesKHRSafe,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
+        -- ** Required extensions: 'VK_KHR_swapchain', 'VK_KHR_device_group_creation'.
+        module Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHR,
+        module Graphics.Vulkan.Types.Enum.VkColorSpaceKHR,
+        module Graphics.Vulkan.Types.Enum.VkCompositeAlphaFlagsKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkExtent2D,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Enum.VkFormat,
+        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkImageLayout,
+        module Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHR,
+        module Graphics.Vulkan.Types.Enum.VkImageTiling,
+        module Graphics.Vulkan.Types.Enum.VkImageType,
+        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
+        module Graphics.Vulkan.Types.Struct.VkPresentInfoKHR,
+        module Graphics.Vulkan.Types.Enum.VkPresentModeKHR,
+        module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.VkSharingMode,
+        module Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkSwapchainCreateFlagsKHR,
+        module Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR,
+        -- > #include "vk_platform.h"
+        vkAcquireNextImage2KHR, vkAcquireNextImage2KHRSafe,
+        pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
+        pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR)
+       where
+import           GHC.Ptr
+                                                                                      (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                      (pattern VK_DEPENDENCY_DEVICE_GROUP_BIT,
+                                                                                      pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
+                                                                                      pattern VK_PIPELINE_CREATE_DISPATCH_BASE,
+                                                                                      pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
+                                                                                      pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
+                                                                                      pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
+                                                                                      pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO)
+import           Graphics.Vulkan.Ext.VK_KHR_swapchain
+                                                                                      (pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
+                                                                                      pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
+                                                                                      pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
+                                                                                      pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
+                                                                                      pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
+                                                                                      vkAcquireNextImage2KHR,
+                                                                                      vkAcquireNextImage2KHRSafe,
+                                                                                      vkGetDeviceGroupPresentCapabilitiesKHR,
+                                                                                      vkGetDeviceGroupPresentCapabilitiesKHRSafe,
+                                                                                      vkGetDeviceGroupSurfacePresentModesKHR,
+                                                                                      vkGetDeviceGroupSurfacePresentModesKHRSafe,
+                                                                                      vkGetPhysicalDevicePresentRectanglesKHR,
+                                                                                      vkGetPhysicalDevicePresentRectanglesKHRSafe)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkColorSpaceKHR
+import           Graphics.Vulkan.Types.Enum.VkCompositeAlphaFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkFormat
+import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkImageLayout
+import           Graphics.Vulkan.Types.Enum.VkImageTiling
+import           Graphics.Vulkan.Types.Enum.VkImageType
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
+import           Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlags
+                                                                                      (VkMemoryAllocateBitmask (..))
+import           Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkPresentModeKHR
+import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Enum.VkSharingMode
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkSwapchainCreateFlagsKHR
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkExtent2D
+import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR
+
+-- | This is an alias for `vkGetDeviceGroupPeerMemoryFeatures`.
+--
+--   > () vkGetDeviceGroupPeerMemoryFeaturesKHR
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html vkGetDeviceGroupPeerMemoryFeaturesKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesKHR ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+-- | This is an alias for `vkGetDeviceGroupPeerMemoryFeatures`.
+--
+--   > () vkGetDeviceGroupPeerMemoryFeaturesKHR
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html vkGetDeviceGroupPeerMemoryFeaturesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+-- | This is an alias for `vkCmdSetDeviceMask`.
+--
+--   queues: 'graphics', 'compute', 'transfer'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDeviceMaskKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDeviceMaskKHR.html vkCmdSetDeviceMaskKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskKHR :: VkCommandBuffer -- ^ commandBuffer
+                                                        -> Word32 -- ^ deviceMask
+                                                                  -> IO ()
+
+-- | This is an alias for `vkCmdSetDeviceMask`.
+--
+--   queues: 'graphics', 'compute', 'transfer'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetDeviceMaskKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetDeviceMaskKHR.html vkCmdSetDeviceMaskKHR registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskKHRSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                            -> Word32 -- ^ deviceMask
+                                                                      -> IO ()
+
+-- | This is an alias for `vkCmdDispatchBase`.
+--
+--   queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdDispatchBaseKHR
+--   >     ( 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/man/html/vkCmdDispatchBaseKHR.html vkCmdDispatchBaseKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdDispatchBase"
+               vkCmdDispatchBaseKHR ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+-- | This is an alias for `vkCmdDispatchBase`.
+--
+--   queues: 'compute'.
+--
+--   renderpass: @outside@
+--
+--   > () vkCmdDispatchBaseKHR
+--   >     ( 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/man/html/vkCmdDispatchBaseKHR.html vkCmdDispatchBaseKHR registry at www.khronos.org>
+foreign import ccall safe "vkCmdDispatchBase"
+               vkCmdDispatchBaseKHRSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION :: (Num a, Eq a) => a
+
+pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION = 3
+
+type VK_KHR_DEVICE_GROUP_SPEC_VERSION = 3
+
+pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString
+
+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
+
+{-# INLINE _VK_KHR_DEVICE_GROUP_EXTENSION_NAME #-}
+
+_VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString
+_VK_KHR_DEVICE_GROUP_EXTENSION_NAME
+  = Ptr "VK_KHR_device_group\NUL"#
+
+{-# INLINE is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME #-}
+
+is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: CString -> Bool
+is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_DEVICE_GROUP_EXTENSION_NAME
+
+type VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group"
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR =
+        VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR =
+        VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR
+        = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR =
+        VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR =
+        VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
+
+pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR =
+        VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT
+
+pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR =
+        VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
+
+pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR =
+        VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
+
+pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR =
+        VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
+
+pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR =
+        VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
+
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR =
+        VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
+
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHR =
+        VK_PIPELINE_CREATE_DISPATCH_BASE
+
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR =
+        VK_DEPENDENCY_DEVICE_GROUP_BIT
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR
+        = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR =
+        VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
+
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR =
+        VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
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
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
@@ -0,0 +1,134 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_KHR_device_group_creation
+       (-- * Vulkan extension: @VK_KHR_device_group_creation@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Jeff Bolz @jbolz@
+        --
+        -- author: @KHR@
+        --
+        -- type: @instance@
+        --
+        -- Extension number: @71@
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHR,
+        vkEnumeratePhysicalDeviceGroupsKHR,
+        vkEnumeratePhysicalDeviceGroupsKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupProperties,
+        VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION,
+        pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION,
+        VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
+        pattern VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR,
+        pattern VK_MAX_DEVICE_GROUP_SIZE_KHR,
+        pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR)
+       where
+import           GHC.Ptr                                                         (Ptr (..))
+import           Graphics.Vulkan.Constants                                       (pattern VK_MAX_DEVICE_GROUP_SIZE_KHR)
+import           Graphics.Vulkan.Core_1_1                                        (pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
+                                                                                  pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
+                                                                                  pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHR
+
+-- | This is an alias for `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 vkEnumeratePhysicalDeviceGroupsKHR
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceGroupCount
+--   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html vkEnumeratePhysicalDeviceGroupsKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsKHR ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+-- | This is an alias for `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 vkEnumeratePhysicalDeviceGroupsKHR
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceGroupCount
+--   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html vkEnumeratePhysicalDeviceGroupsKHR registry at www.khronos.org>
+foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION ::
+        (Num a, Eq a) => a
+
+pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1
+
+type VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1
+
+pattern VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: CString
+
+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
+
+{-# INLINE _VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME #-}
+
+_VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: CString
+_VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
+  = Ptr "VK_KHR_device_group_creation\NUL"#
+
+{-# INLINE is_VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME #-}
+
+is_VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: CString -> Bool
+is_VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
+
+type VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME =
+     "VK_KHR_device_group_creation"
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR =
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR =
+        VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
+
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR =
+        VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
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
@@ -40,10 +40,16 @@
         module Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR,
         -- > #include "vk_platform.h"
         vkGetPhysicalDeviceDisplayPropertiesKHR,
+        vkGetPhysicalDeviceDisplayPropertiesKHRSafe,
         vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
+        vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe,
         vkGetDisplayPlaneSupportedDisplaysKHR,
-        vkGetDisplayModePropertiesKHR, vkCreateDisplayModeKHR,
-        vkGetDisplayPlaneCapabilitiesKHR, vkCreateDisplayPlaneSurfaceKHR,
+        vkGetDisplayPlaneSupportedDisplaysKHRSafe,
+        vkGetDisplayModePropertiesKHR, vkGetDisplayModePropertiesKHRSafe,
+        vkCreateDisplayModeKHR, vkCreateDisplayModeKHRSafe,
+        vkGetDisplayPlaneCapabilitiesKHR,
+        vkGetDisplayPlaneCapabilitiesKHRSafe,
+        vkCreateDisplayPlaneSurfaceKHR, vkCreateDisplayPlaneSurfaceKHRSafe,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
@@ -92,7 +98,7 @@
 --   >     , VkDisplayPropertiesKHR* pProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceDisplayPropertiesKHR"
                vkGetPhysicalDeviceDisplayPropertiesKHR ::
@@ -106,13 +112,32 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkGetPhysicalDeviceDisplayPropertiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkDisplayPropertiesKHR* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceDisplayPropertiesKHR"
+               vkGetPhysicalDeviceDisplayPropertiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkDisplayPropertiesKHR -- ^ pProperties
+                                                          -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t* pPropertyCount
 --   >     , VkDisplayPlanePropertiesKHR* pProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
                vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
@@ -126,6 +151,26 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkDisplayPlanePropertiesKHR* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
+               vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkDisplayPlanePropertiesKHR -- ^ pProperties
+                                                               -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkGetDisplayPlaneSupportedDisplaysKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t planeIndex
@@ -133,7 +178,7 @@
 --   >     , VkDisplayKHR* pDisplays
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetDisplayPlaneSupportedDisplaysKHR"
                vkGetDisplayPlaneSupportedDisplaysKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -147,6 +192,27 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkGetDisplayPlaneSupportedDisplaysKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t planeIndex
+--   >     , uint32_t* pDisplayCount
+--   >     , VkDisplayKHR* pDisplays
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDisplayPlaneSupportedDisplaysKHR"
+               vkGetDisplayPlaneSupportedDisplaysKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Word32 -- ^ planeIndex
+                        -> Ptr Word32 -- ^ pDisplayCount
+                                      -> Ptr VkDisplayKHR -- ^ pDisplays
+                                                          -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkGetDisplayModePropertiesKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , VkDisplayKHR display
@@ -154,7 +220,7 @@
 --   >     , VkDisplayModePropertiesKHR* pProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDisplayModePropertiesKHR.html vkGetDisplayModePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDisplayModePropertiesKHR.html vkGetDisplayModePropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetDisplayModePropertiesKHR"
                vkGetDisplayModePropertiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -165,6 +231,28 @@
                               -> Ptr VkDisplayModePropertiesKHR -- ^ pProperties
                                                                 -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetDisplayModePropertiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkDisplayKHR display
+--   >     , uint32_t* pPropertyCount
+--   >     , VkDisplayModePropertiesKHR* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDisplayModePropertiesKHR.html vkGetDisplayModePropertiesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDisplayModePropertiesKHR"
+               vkGetDisplayModePropertiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkDisplayKHR -- ^ display
+                              ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkDisplayModePropertiesKHR -- ^ pProperties
+                                                                -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
@@ -177,7 +265,7 @@
 --   >     , VkDisplayModeKHR* pMode
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateDisplayModeKHR.html vkCreateDisplayModeKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDisplayModeKHR.html vkCreateDisplayModeKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateDisplayModeKHR"
                vkCreateDisplayModeKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -192,6 +280,31 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkCreateDisplayModeKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkDisplayKHR display
+--   >     , const VkDisplayModeCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDisplayModeKHR* pMode
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDisplayModeKHR.html vkCreateDisplayModeKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateDisplayModeKHR"
+               vkCreateDisplayModeKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkDisplayKHR -- ^ display
+                              ->
+                   Ptr VkDisplayModeCreateInfoKHR -- ^ pCreateInfo
+                                                  ->
+                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                               -> Ptr VkDisplayModeKHR -- ^ pMode
+                                                                       -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
 --   > VkResult vkGetDisplayPlaneCapabilitiesKHR
@@ -201,7 +314,7 @@
 --   >     , VkDisplayPlaneCapabilitiesKHR* pCapabilities
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDisplayPlaneCapabilitiesKHR.html vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDisplayPlaneCapabilitiesKHR.html vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetDisplayPlaneCapabilitiesKHR"
                vkGetDisplayPlaneCapabilitiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -216,6 +329,28 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkGetDisplayPlaneCapabilitiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkDisplayModeKHR mode
+--   >     , uint32_t planeIndex
+--   >     , VkDisplayPlaneCapabilitiesKHR* pCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDisplayPlaneCapabilitiesKHR.html vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDisplayPlaneCapabilitiesKHR"
+               vkGetDisplayPlaneCapabilitiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkDisplayModeKHR -- ^ mode
+                                  ->
+                   Word32 -- ^ planeIndex
+                          -> Ptr VkDisplayPlaneCapabilitiesKHR -- ^ pCapabilities
+                                                               -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkCreateDisplayPlaneSurfaceKHR
 --   >     ( VkInstance instance
 --   >     , const VkDisplaySurfaceCreateInfoKHR* pCreateInfo
@@ -223,7 +358,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateDisplayPlaneSurfaceKHR.html vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDisplayPlaneSurfaceKHR.html vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateDisplayPlaneSurfaceKHR"
                vkCreateDisplayPlaneSurfaceKHR ::
                VkInstance -- ^ instance
@@ -234,6 +369,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDisplayPlaneSurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkDisplaySurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateDisplayPlaneSurfaceKHR.html vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateDisplayPlaneSurfaceKHR"
+               vkCreateDisplayPlaneSurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkDisplaySurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                   ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 pattern VK_KHR_DISPLAY_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_DISPLAY_SPEC_VERSION = 21
@@ -256,7 +413,7 @@
 
 is_VK_KHR_DISPLAY_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_DISPLAY_EXTENSION_NAME
-  = eqCStrings _VK_KHR_DISPLAY_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_DISPLAY_EXTENSION_NAME
 
 type VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display"
 
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
@@ -32,7 +32,8 @@
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkCreateSharedSwapchainsKHR, module Graphics.Vulkan.Marshal,
+        vkCreateSharedSwapchainsKHR, vkCreateSharedSwapchainsKHRSafe,
+        module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkColorSpaceKHR,
         module Graphics.Vulkan.Types.Enum.VkCompositeAlphaFlagsKHR,
         module Graphics.Vulkan.Types.Enum.VkFormat,
@@ -91,7 +92,7 @@
 --   >     , VkSwapchainKHR* pSwapchains
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateSharedSwapchainsKHR.html vkCreateSharedSwapchainsKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateSharedSwapchainsKHR.html vkCreateSharedSwapchainsKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateSharedSwapchainsKHR"
                vkCreateSharedSwapchainsKHR ::
                VkDevice -- ^ device
@@ -104,6 +105,31 @@
                                                -> Ptr VkSwapchainKHR -- ^ pSwapchains
                                                                      -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkCreateSharedSwapchainsKHR
+--   >     ( VkDevice device
+--   >     , uint32_t swapchainCount
+--   >     , const VkSwapchainCreateInfoKHR* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSwapchainKHR* pSwapchains
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateSharedSwapchainsKHR.html vkCreateSharedSwapchainsKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateSharedSwapchainsKHR"
+               vkCreateSharedSwapchainsKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ swapchainCount
+                        ->
+                   Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfos
+                                                ->
+                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                               -> Ptr VkSwapchainKHR -- ^ pSwapchains
+                                                                     -> IO VkResult
+
 pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 9
@@ -127,7 +153,7 @@
 
 is_VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
-  = eqCStrings _VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
 
 type VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME =
      "VK_KHR_display_swapchain"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -23,28 +24,22 @@
 
         -- ** Required extensions: 'VK_KHR_external_fence_capabilities'.
         module Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.VkFenceCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkFenceCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
+        module Graphics.Vulkan.Types.Enum.VkFenceImportFlagBitsKHR,
+        module Graphics.Vulkan.Types.Bitmasks,
         VK_KHR_EXTERNAL_FENCE_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION,
         VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME,
         pattern VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME,
-        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR)
+        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
+        pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR)
        where
-import           GHC.Ptr                                                      (Ptr (..))
+import           GHC.Ptr                                                 (Ptr (..))
+import           Graphics.Vulkan.Core_1_1                                (pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO)
 import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkFenceCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlags           (VkFenceImportBitmask (..))
 import           Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo
 
 pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -69,12 +64,12 @@
 
 is_VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence"
 
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR =
-        VkStructureType 1000113000
+        VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
+
+pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR =
+        VK_FENCE_IMPORT_TEMPORARY_BIT
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -23,69 +24,96 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagBitsKHR,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagBitsKHR,
         module Graphics.Vulkan.Types.Struct.VkExternalFencePropertiesKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         vkGetPhysicalDeviceExternalFencePropertiesKHR,
+        vkGetPhysicalDeviceExternalFencePropertiesKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkExternalFenceProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo,
         VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION,
         VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
         pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
-        pattern VK_LUID_SIZE_KHR, VK_LUID_SIZE_KHR)
+        pattern VK_LUID_SIZE_KHR,
+        pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
+        pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
+        pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
+        pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,
+        pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
+        pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR)
        where
 import           GHC.Ptr
                                                                                     (Ptr (..))
 import           Graphics.Vulkan.Constants
-                                                                                    (VK_LUID_SIZE_KHR,
-                                                                                    pattern VK_LUID_SIZE_KHR)
+                                                                                    (pattern VK_LUID_SIZE_KHR)
+import           Graphics.Vulkan.Core_1_1
+                                                                                    (pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+                                                                                    pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkExternalFenceProperties
 import           Graphics.Vulkan.Types.Struct.VkExternalFencePropertiesKHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 
--- | > () vkGetPhysicalDeviceExternalFencePropertiesKHR
+-- | This is an alias for `vkGetPhysicalDeviceExternalFenceProperties`.
+--
+--   > () vkGetPhysicalDeviceExternalFencePropertiesKHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo
---   >     , VkExternalFencePropertiesKHR* pExternalFenceProperties
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html vkGetPhysicalDeviceExternalFencePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html vkGetPhysicalDeviceExternalFencePropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalFencePropertiesKHR"
+               "vkGetPhysicalDeviceExternalFenceProperties"
                vkGetPhysicalDeviceExternalFencePropertiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
-                 Ptr VkPhysicalDeviceExternalFenceInfoKHR -- ^ pExternalFenceInfo
-                                                          ->
-                   Ptr VkExternalFencePropertiesKHR -- ^ pExternalFenceProperties
-                                                    -> IO ()
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
 
+-- | This is an alias for `vkGetPhysicalDeviceExternalFenceProperties`.
+--
+--   > () vkGetPhysicalDeviceExternalFencePropertiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html vkGetPhysicalDeviceExternalFencePropertiesKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
 pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -112,19 +140,32 @@
 is_VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME ::
                                                      CString -> Bool
 is_VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME =
      "VK_KHR_external_fence_capabilities"
 
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR
-        :: VkStructureType
-
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR =
-        VkStructureType 1000112000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
 
 pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR =
-        VkStructureType 1000112001
+        VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR =
+        VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR =
+        VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR =
+        VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR =
+        VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
+
+pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR =
+        VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
+
+pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR =
+        VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
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
@@ -24,15 +24,15 @@
 
         -- ** Required extensions: 'VK_KHR_external_fence'.
         module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags,
         module Graphics.Vulkan.Types.Struct.VkFenceGetFdInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkFenceImportFlags,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkImportFenceFdInfoKHR,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkImportFenceFdKHR, vkGetFenceFdKHR,
-        module Graphics.Vulkan.Types.Enum.VkResult,
+        vkImportFenceFdKHR, vkImportFenceFdKHRSafe, vkGetFenceFdKHR,
+        vkGetFenceFdKHRSafe, module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION,
@@ -41,11 +41,11 @@
         pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR)
        where
-import           GHC.Ptr                                                      (Ptr (..))
+import           GHC.Ptr                                                   (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlags
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
@@ -54,14 +54,14 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
 --
 --   > VkResult vkImportFenceFdKHR
 --   >     ( VkDevice device
 --   >     , const VkImportFenceFdInfoKHR* pImportFenceFdInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkImportFenceFdKHR.html vkImportFenceFdKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportFenceFdKHR.html vkImportFenceFdKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkImportFenceFdKHR" vkImportFenceFdKHR
                :: VkDevice -- ^ device
                            -> Ptr VkImportFenceFdInfoKHR -- ^ pImportFenceFdInfo
@@ -69,6 +69,22 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkImportFenceFdKHR
+--   >     ( VkDevice device
+--   >     , const VkImportFenceFdInfoKHR* pImportFenceFdInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportFenceFdKHR.html vkImportFenceFdKHR registry at www.khronos.org>
+foreign import ccall safe "vkImportFenceFdKHR"
+               vkImportFenceFdKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkImportFenceFdInfoKHR -- ^ pImportFenceFdInfo
+                                                      -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
 --
 --   > VkResult vkGetFenceFdKHR
@@ -77,13 +93,30 @@
 --   >     , int* pFd
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetFenceFdKHR.html vkGetFenceFdKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetFenceFdKHR.html vkGetFenceFdKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetFenceFdKHR" vkGetFenceFdKHR ::
                VkDevice -- ^ device
                         -> Ptr VkFenceGetFdInfoKHR -- ^ pGetFdInfo
                                                    -> Ptr CInt -- ^ pFd
                                                                -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetFenceFdKHR
+--   >     ( VkDevice device
+--   >     , const VkFenceGetFdInfoKHR* pGetFdInfo
+--   >     , int* pFd
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetFenceFdKHR.html vkGetFenceFdKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetFenceFdKHR" vkGetFenceFdKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkFenceGetFdInfoKHR -- ^ pGetFdInfo
+                                                   -> Ptr CInt -- ^ pFd
+                                                               -> IO VkResult
+
 pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1
@@ -107,7 +140,7 @@
 
 is_VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME =
      "VK_KHR_external_fence_fd"
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
@@ -17,27 +17,26 @@
         --
         -- type: @device@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @115@
         --
         -- Required extensions: 'VK_KHR_external_fence'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_external_fence'.
         module Graphics.Vulkan.Types.Struct.VkExportFenceWin32HandleInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags,
         module Graphics.Vulkan.Types.Enum.VkFenceCreateFlags,
         module Graphics.Vulkan.Types.Struct.VkFenceCreateInfo,
         module Graphics.Vulkan.Types.Struct.VkFenceGetWin32HandleInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkFenceImportFlags,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkImportFenceWin32HandleInfoKHR,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <windows.h>
-        vkImportFenceWin32HandleKHR, vkGetFenceWin32HandleKHR,
+        vkImportFenceWin32HandleKHR, vkImportFenceWin32HandleKHRSafe,
+        vkGetFenceWin32HandleKHR, vkGetFenceWin32HandleKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
@@ -53,9 +52,9 @@
 import           GHC.Ptr                                                      (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkFenceCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlags
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
@@ -67,14 +66,14 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
 --
 --   > VkResult vkImportFenceWin32HandleKHR
 --   >     ( VkDevice device
 --   >     , const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkImportFenceWin32HandleKHR.html vkImportFenceWin32HandleKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportFenceWin32HandleKHR.html vkImportFenceWin32HandleKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkImportFenceWin32HandleKHR"
                vkImportFenceWin32HandleKHR ::
                VkDevice -- ^ device
@@ -83,6 +82,22 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkImportFenceWin32HandleKHR
+--   >     ( VkDevice device
+--   >     , const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportFenceWin32HandleKHR.html vkImportFenceWin32HandleKHR registry at www.khronos.org>
+foreign import ccall safe "vkImportFenceWin32HandleKHR"
+               vkImportFenceWin32HandleKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkImportFenceWin32HandleInfoKHR -- ^ pImportFenceWin32HandleInfo
+                                                               -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
 --
 --   > VkResult vkGetFenceWin32HandleKHR
@@ -91,7 +106,7 @@
 --   >     , HANDLE* pHandle
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetFenceWin32HandleKHR.html vkGetFenceWin32HandleKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetFenceWin32HandleKHR.html vkGetFenceWin32HandleKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetFenceWin32HandleKHR"
                vkGetFenceWin32HandleKHR ::
                VkDevice -- ^ device
@@ -100,6 +115,25 @@
                                                   -> Ptr HANDLE -- ^ pHandle
                                                                 -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetFenceWin32HandleKHR
+--   >     ( VkDevice device
+--   >     , const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo
+--   >     , HANDLE* pHandle
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetFenceWin32HandleKHR.html vkGetFenceWin32HandleKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetFenceWin32HandleKHR"
+               vkGetFenceWin32HandleKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceGetWin32HandleInfoKHR -- ^ pGetWin32HandleInfo
+                                                  -> Ptr HANDLE -- ^ pHandle
+                                                                -> IO VkResult
+
 pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -124,7 +158,7 @@
 
 is_VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME =
      "VK_KHR_external_fence_win32"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -22,27 +23,9 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_memory_capabilities'.
-        module Graphics.Vulkan.Types.Enum.VkBufferCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkBufferCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkBufferUsageFlags,
-        module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoKHR,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
         module Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR,
         module Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkImageLayout,
-        module Graphics.Vulkan.Types.Enum.VkImageTiling,
-        module Graphics.Vulkan.Types.Enum.VkImageType,
-        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
-        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkSharingMode,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION,
         VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
@@ -51,36 +34,21 @@
         pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
         pattern VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR,
-        pattern VK_QUEUE_FAMILY_EXTERNAL_KHR, VK_QUEUE_FAMILY_EXTERNAL_KHR)
+        pattern VK_QUEUE_FAMILY_EXTERNAL_KHR)
        where
 import           GHC.Ptr
                                                                                    (Ptr (..))
 import           Graphics.Vulkan.Constants
-                                                                                   (VK_QUEUE_FAMILY_EXTERNAL_KHR,
-                                                                                   pattern VK_QUEUE_FAMILY_EXTERNAL_KHR)
+                                                                                   (pattern VK_QUEUE_FAMILY_EXTERNAL_KHR)
+import           Graphics.Vulkan.Core_1_1
+                                                                                   (pattern VK_ERROR_INVALID_EXTERNAL_HANDLE,
+                                                                                   pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
+                                                                                   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.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkImageLayout
-import           Graphics.Vulkan.Types.Enum.VkImageTiling
-import           Graphics.Vulkan.Types.Enum.VkImageType
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkResult
-                                                                                   (VkResult (..))
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
-import           Graphics.Vulkan.Types.Enum.VkSharingMode
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkExtent3D
 import           Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
 
 pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -105,30 +73,19 @@
 
 is_VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME =
      "VK_KHR_external_memory"
 
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR =
-        VkStructureType 1000072000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
 
 pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR =
-        VkStructureType 1000072001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
 
 pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR =
-        VkStructureType 1000072002
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR :: VkResult
+        VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
 
 pattern VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR =
-        VkResult (-1000072003)
+        VK_ERROR_INVALID_EXTERNAL_HANDLE
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -23,37 +24,28 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkBufferCreateFlags,
-        module Graphics.Vulkan.Types.Enum.VkBufferUsageFlags,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
         module Graphics.Vulkan.Types.Struct.VkExternalBufferPropertiesKHR,
         module Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagBitsKHR,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagBitsKHR,
         module Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR,
-        module Graphics.Vulkan.Types.Enum.VkImageTiling,
-        module Graphics.Vulkan.Types.Enum.VkImageType,
-        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         vkGetPhysicalDeviceExternalBufferPropertiesKHR,
+        vkGetPhysicalDeviceExternalBufferPropertiesKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkBufferCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkBufferUsageFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkExternalBufferProperties,
+        module Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo,
         VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION,
         VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
@@ -63,60 +55,87 @@
         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
-        pattern VK_LUID_SIZE_KHR, VK_LUID_SIZE_KHR)
+        pattern VK_LUID_SIZE_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
+        pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR)
        where
 import           GHC.Ptr
                                                                                           (Ptr (..))
 import           Graphics.Vulkan.Constants
-                                                                                          (VK_LUID_SIZE_KHR,
-                                                                                          pattern VK_LUID_SIZE_KHR)
+                                                                                          (pattern VK_LUID_SIZE_KHR)
+import           Graphics.Vulkan.Core_1_1
+                                                                                          (pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
+                                                                                          pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
+                                                                                          pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
+                                                                                          pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
+                                                                                          pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Bitmasks
 import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags
 import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkImageTiling
-import           Graphics.Vulkan.Types.Enum.VkImageType
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkExternalBufferProperties
 import           Graphics.Vulkan.Types.Struct.VkExternalBufferPropertiesKHR
 import           Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesKHR
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties
 import           Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 
--- | > () vkGetPhysicalDeviceExternalBufferPropertiesKHR
+-- | This is an alias for `vkGetPhysicalDeviceExternalBufferProperties`.
+--
+--   > () vkGetPhysicalDeviceExternalBufferPropertiesKHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo
---   >     , VkExternalBufferPropertiesKHR* pExternalBufferProperties
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html vkGetPhysicalDeviceExternalBufferPropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html vkGetPhysicalDeviceExternalBufferPropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalBufferPropertiesKHR"
+               "vkGetPhysicalDeviceExternalBufferProperties"
                vkGetPhysicalDeviceExternalBufferPropertiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
-                 Ptr VkPhysicalDeviceExternalBufferInfoKHR -- ^ pExternalBufferInfo
-                                                           ->
-                   Ptr VkExternalBufferPropertiesKHR -- ^ pExternalBufferProperties
-                                                     -> IO ()
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
 
+-- | This is an alias for `vkGetPhysicalDeviceExternalBufferProperties`.
+--
+--   > () vkGetPhysicalDeviceExternalBufferPropertiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html vkGetPhysicalDeviceExternalBufferPropertiesKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
 pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -144,37 +163,53 @@
 is_VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME ::
                                                       CString -> Bool
 is_VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME =
      "VK_KHR_external_memory_capabilities"
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR
-        = VkStructureType 1000071000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR ::
-        VkStructureType
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
 
 pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR =
-        VkStructureType 1000071001
+        VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR
-        :: VkStructureType
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
 
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR
-        = VkStructureType 1000071002
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR =
+        VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
 
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR ::
-        VkStructureType
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR =
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
 
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR =
-        VkStructureType 1000071003
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
 
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR ::
-        VkStructureType
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
 
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR =
-        VkStructureType 1000071004
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR =
+        VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
+
+pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR =
+        VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
+
+pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR =
+        VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
+
+pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR =
+        VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
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
@@ -14,7 +14,7 @@
         --
         -- contact: @James Jones @cubanismo@
         --
-        -- author: @KHX@
+        -- author: @KHR@
         --
         -- type: @device@
         --
@@ -26,14 +26,15 @@
         -- ** Required extensions: 'VK_KHR_external_memory'.
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags,
         module Graphics.Vulkan.Types.Struct.VkImportMemoryFdInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
         module Graphics.Vulkan.Types.Struct.VkMemoryFdPropertiesKHR,
         module Graphics.Vulkan.Types.Struct.VkMemoryGetFdInfoKHR,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkGetMemoryFdKHR, vkGetMemoryFdPropertiesKHR,
+        vkGetMemoryFdKHR, vkGetMemoryFdKHRSafe, vkGetMemoryFdPropertiesKHR,
+        vkGetMemoryFdPropertiesKHRSafe,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION,
@@ -44,10 +45,10 @@
         pattern VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
         pattern VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR)
        where
-import           GHC.Ptr                                                       (Ptr (..))
+import           GHC.Ptr                                                    (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
@@ -66,7 +67,7 @@
 --   >     , int* pFd
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetMemoryFdKHR.html vkGetMemoryFdKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryFdKHR.html vkGetMemoryFdKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetMemoryFdKHR" vkGetMemoryFdKHR ::
                VkDevice -- ^ device
                         -> Ptr VkMemoryGetFdInfoKHR -- ^ pGetFdInfo
@@ -75,26 +76,65 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
 --
+--   > VkResult vkGetMemoryFdKHR
+--   >     ( VkDevice device
+--   >     , const VkMemoryGetFdInfoKHR* pGetFdInfo
+--   >     , int* pFd
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryFdKHR.html vkGetMemoryFdKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryFdKHR" vkGetMemoryFdKHRSafe
+               :: VkDevice -- ^ device
+                           -> Ptr VkMemoryGetFdInfoKHR -- ^ pGetFdInfo
+                                                       -> Ptr CInt -- ^ pFd
+                                                                   -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
 --   > VkResult vkGetMemoryFdPropertiesKHR
 --   >     ( VkDevice device
---   >     , VkExternalMemoryHandleTypeFlagBitsKHR handleType
+--   >     , VkExternalMemoryHandleTypeFlagBits handleType
 --   >     , int fd
 --   >     , VkMemoryFdPropertiesKHR* pMemoryFdProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetMemoryFdPropertiesKHR.html vkGetMemoryFdPropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryFdPropertiesKHR.html vkGetMemoryFdPropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetMemoryFdPropertiesKHR"
                vkGetMemoryFdPropertiesKHR ::
                VkDevice -- ^ device
                         ->
-                 VkExternalMemoryHandleTypeFlagBitsKHR -- ^ handleType
-                                                       ->
+                 VkExternalMemoryHandleTypeFlagBits -- ^ handleType
+                                                    ->
                    CInt -- ^ fd
                         -> Ptr VkMemoryFdPropertiesKHR -- ^ pMemoryFdProperties
                                                        -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkGetMemoryFdPropertiesKHR
+--   >     ( VkDevice device
+--   >     , VkExternalMemoryHandleTypeFlagBits handleType
+--   >     , int fd
+--   >     , VkMemoryFdPropertiesKHR* pMemoryFdProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryFdPropertiesKHR.html vkGetMemoryFdPropertiesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryFdPropertiesKHR"
+               vkGetMemoryFdPropertiesKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkExternalMemoryHandleTypeFlagBits -- ^ handleType
+                                                    ->
+                   CInt -- ^ fd
+                        -> Ptr VkMemoryFdPropertiesKHR -- ^ pMemoryFdProperties
+                                                       -> IO VkResult
+
 pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: (Num a, Eq a) =>
         a
 
@@ -119,7 +159,7 @@
 
 is_VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME =
      "VK_KHR_external_memory_fd"
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
@@ -18,26 +18,26 @@
         --
         -- type: @device@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @74@
         --
         -- Required extensions: 'VK_KHR_external_memory'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_external_memory'.
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkExportMemoryWin32HandleInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags,
         module Graphics.Vulkan.Types.Struct.VkImportMemoryWin32HandleInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
         module Graphics.Vulkan.Types.Struct.VkMemoryGetWin32HandleInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkMemoryWin32HandlePropertiesKHR,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <windows.h>
-        vkGetMemoryWin32HandleKHR, vkGetMemoryWin32HandlePropertiesKHR,
+        vkGetMemoryWin32HandleKHR, vkGetMemoryWin32HandleKHRSafe,
+        vkGetMemoryWin32HandlePropertiesKHR,
+        vkGetMemoryWin32HandlePropertiesKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
@@ -53,7 +53,7 @@
 import           GHC.Ptr                                                       (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkResult
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
@@ -74,7 +74,7 @@
 --   >     , HANDLE* pHandle
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetMemoryWin32HandleKHR.html vkGetMemoryWin32HandleKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryWin32HandleKHR.html vkGetMemoryWin32HandleKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetMemoryWin32HandleKHR"
                vkGetMemoryWin32HandleKHR ::
                VkDevice -- ^ device
@@ -85,26 +85,67 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
 --
+--   > VkResult vkGetMemoryWin32HandleKHR
+--   >     ( VkDevice device
+--   >     , const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo
+--   >     , HANDLE* pHandle
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryWin32HandleKHR.html vkGetMemoryWin32HandleKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryWin32HandleKHR"
+               vkGetMemoryWin32HandleKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryGetWin32HandleInfoKHR -- ^ pGetWin32HandleInfo
+                                                   -> Ptr HANDLE -- ^ pHandle
+                                                                 -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
 --   > VkResult vkGetMemoryWin32HandlePropertiesKHR
 --   >     ( VkDevice device
---   >     , VkExternalMemoryHandleTypeFlagBitsKHR handleType
+--   >     , VkExternalMemoryHandleTypeFlagBits handleType
 --   >     , HANDLE handle
 --   >     , VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetMemoryWin32HandlePropertiesKHR.html vkGetMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryWin32HandlePropertiesKHR.html vkGetMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetMemoryWin32HandlePropertiesKHR"
                vkGetMemoryWin32HandlePropertiesKHR ::
                VkDevice -- ^ device
                         ->
-                 VkExternalMemoryHandleTypeFlagBitsKHR -- ^ handleType
-                                                       ->
+                 VkExternalMemoryHandleTypeFlagBits -- ^ handleType
+                                                    ->
                    HANDLE -- ^ handle
                           -> Ptr VkMemoryWin32HandlePropertiesKHR -- ^ pMemoryWin32HandleProperties
                                                                   -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkGetMemoryWin32HandlePropertiesKHR
+--   >     ( VkDevice device
+--   >     , VkExternalMemoryHandleTypeFlagBits handleType
+--   >     , HANDLE handle
+--   >     , VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryWin32HandlePropertiesKHR.html vkGetMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryWin32HandlePropertiesKHR"
+               vkGetMemoryWin32HandlePropertiesKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkExternalMemoryHandleTypeFlagBits -- ^ handleType
+                                                    ->
+                   HANDLE -- ^ handle
+                          -> Ptr VkMemoryWin32HandlePropertiesKHR -- ^ pMemoryWin32HandleProperties
+                                                                  -> IO VkResult
+
 pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -129,7 +170,8 @@
 
 is_VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME =
      "VK_KHR_external_memory_win32"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -23,29 +24,22 @@
 
         -- ** Required extensions: 'VK_KHR_external_semaphore_capabilities'.
         module Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR,
-        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagBitsKHR,
         module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION,
         VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
-        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR)
+        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
+        pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR)
        where
-import           GHC.Ptr
-                                                                                   (Ptr (..))
+import           GHC.Ptr                                                     (Ptr (..))
+import           Graphics.Vulkan.Core_1_1                                    (pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO)
 import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags           (VkSemaphoreImportBitmask (..))
 import           Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -71,13 +65,13 @@
 
 is_VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME =
      "VK_KHR_external_semaphore"
 
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR =
-        VkStructureType 1000077000
+        VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
+
+pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR =
+        VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -23,69 +24,97 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagBitsKHR,
+        module Graphics.Vulkan.Types.Bitmasks,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagBitsKHR,
         module Graphics.Vulkan.Types.Struct.VkExternalSemaphorePropertiesKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
+        vkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlags,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo,
         VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION,
         VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
-        pattern VK_LUID_SIZE_KHR, VK_LUID_SIZE_KHR)
+        pattern VK_LUID_SIZE_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
+        pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR)
        where
 import           GHC.Ptr
                                                                                         (Ptr (..))
 import           Graphics.Vulkan.Constants
-                                                                                        (VK_LUID_SIZE_KHR,
-                                                                                        pattern VK_LUID_SIZE_KHR)
+                                                                                        (pattern VK_LUID_SIZE_KHR)
+import           Graphics.Vulkan.Core_1_1
+                                                                                        (pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+                                                                                        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
+import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlags
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagBitsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties
 import           Graphics.Vulkan.Types.Struct.VkExternalSemaphorePropertiesKHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 
--- | > () vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+-- | This is an alias for `vkGetPhysicalDeviceExternalSemaphoreProperties`.
+--
+--   > () vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo
---   >     , VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html vkGetPhysicalDeviceExternalSemaphorePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html vkGetPhysicalDeviceExternalSemaphorePropertiesKHR registry at www.khronos.org>
 foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
                vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfoKHR -- ^ pExternalSemaphoreInfo
-                                                              ->
-                   Ptr VkExternalSemaphorePropertiesKHR -- ^ pExternalSemaphoreProperties
-                                                        -> IO ()
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
 
+-- | This is an alias for `vkGetPhysicalDeviceExternalSemaphoreProperties`.
+--
+--   > () vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html vkGetPhysicalDeviceExternalSemaphorePropertiesKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
 pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -114,19 +143,35 @@
 is_VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME ::
                                                          CString -> Bool
 is_VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME =
      "VK_KHR_external_semaphore_capabilities"
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR
-        :: VkStructureType
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
 
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR
-        = VkStructureType 1000076000
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR =
+        VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
 
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR ::
-        VkStructureType
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR =
+        VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
 
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR =
-        VkStructureType 1000076001
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR =
+        VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
+        = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR =
+        VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR =
+        VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
+
+pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR =
+        VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT
+
+pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR =
+        VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
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
@@ -24,14 +24,15 @@
 
         -- ** Required extensions: 'VK_KHR_external_semaphore'.
         module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkImportSemaphoreFdInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkSemaphoreGetFdInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkImportSemaphoreFdKHR, vkGetSemaphoreFdKHR,
+        vkImportSemaphoreFdKHR, vkImportSemaphoreFdKHRSafe,
+        vkGetSemaphoreFdKHR, vkGetSemaphoreFdKHRSafe,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION,
@@ -41,13 +42,12 @@
         pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR)
        where
-import           GHC.Ptr
-                                                                                   (Ptr (..))
+import           GHC.Ptr                                                       (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkResult
-import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
 import           Graphics.Vulkan.Types.Struct.VkImportSemaphoreFdInfoKHR
@@ -55,14 +55,14 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
 --
 --   > VkResult vkImportSemaphoreFdKHR
 --   >     ( VkDevice device
 --   >     , const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkImportSemaphoreFdKHR.html vkImportSemaphoreFdKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportSemaphoreFdKHR.html vkImportSemaphoreFdKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkImportSemaphoreFdKHR"
                vkImportSemaphoreFdKHR ::
                VkDevice -- ^ device
@@ -71,6 +71,22 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkImportSemaphoreFdKHR
+--   >     ( VkDevice device
+--   >     , const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportSemaphoreFdKHR.html vkImportSemaphoreFdKHR registry at www.khronos.org>
+foreign import ccall safe "vkImportSemaphoreFdKHR"
+               vkImportSemaphoreFdKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkImportSemaphoreFdInfoKHR -- ^ pImportSemaphoreFdInfo
+                                                          -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
 --
 --   > VkResult vkGetSemaphoreFdKHR
@@ -79,7 +95,7 @@
 --   >     , int* pFd
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetSemaphoreFdKHR.html vkGetSemaphoreFdKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSemaphoreFdKHR.html vkGetSemaphoreFdKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetSemaphoreFdKHR"
                vkGetSemaphoreFdKHR ::
                VkDevice -- ^ device
@@ -87,6 +103,24 @@
                                                        -> Ptr CInt -- ^ pFd
                                                                    -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetSemaphoreFdKHR
+--   >     ( VkDevice device
+--   >     , const VkSemaphoreGetFdInfoKHR* pGetFdInfo
+--   >     , int* pFd
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSemaphoreFdKHR.html vkGetSemaphoreFdKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetSemaphoreFdKHR"
+               vkGetSemaphoreFdKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkSemaphoreGetFdInfoKHR -- ^ pGetFdInfo
+                                                       -> Ptr CInt -- ^ pFd
+                                                                   -> IO VkResult
+
 pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -111,7 +145,8 @@
 
 is_VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME =
      "VK_KHR_external_semaphore_fd"
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
@@ -17,31 +17,30 @@
         --
         -- type: @device@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @79@
         --
         -- Required extensions: 'VK_KHR_external_semaphore'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_external_semaphore'.
         module Graphics.Vulkan.Types.Struct.VkD3D12FenceSubmitInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkExportSemaphoreWin32HandleInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkImportSemaphoreWin32HandleInfoKHR,
         module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo,
         module Graphics.Vulkan.Types.Struct.VkSemaphoreGetWin32HandleInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR,
+        module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Struct.VkSubmitInfo,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <windows.h>
-        vkImportSemaphoreWin32HandleKHR, vkGetSemaphoreWin32HandleKHR,
-        module Graphics.Vulkan.Marshal,
+        vkImportSemaphoreWin32HandleKHR,
+        vkImportSemaphoreWin32HandleKHRSafe, vkGetSemaphoreWin32HandleKHR,
+        vkGetSemaphoreWin32HandleKHRSafe, module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         module Graphics.Vulkan.Types.Include,
@@ -59,10 +58,10 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags
 import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
 import           Graphics.Vulkan.Types.Enum.VkResult
-import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
 import           Graphics.Vulkan.Types.Include
@@ -75,14 +74,14 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR'.
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
 --
 --   > VkResult vkImportSemaphoreWin32HandleKHR
 --   >     ( VkDevice device
 --   >     , const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkImportSemaphoreWin32HandleKHR.html vkImportSemaphoreWin32HandleKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportSemaphoreWin32HandleKHR.html vkImportSemaphoreWin32HandleKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkImportSemaphoreWin32HandleKHR"
                vkImportSemaphoreWin32HandleKHR ::
                VkDevice -- ^ device
@@ -91,6 +90,22 @@
 
 -- | Success codes: 'VK_SUCCESS'.
 --
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkImportSemaphoreWin32HandleKHR
+--   >     ( VkDevice device
+--   >     , const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkImportSemaphoreWin32HandleKHR.html vkImportSemaphoreWin32HandleKHR registry at www.khronos.org>
+foreign import ccall safe "vkImportSemaphoreWin32HandleKHR"
+               vkImportSemaphoreWin32HandleKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkImportSemaphoreWin32HandleInfoKHR -- ^ pImportSemaphoreWin32HandleInfo
+                                                                   -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
 --
 --   > VkResult vkGetSemaphoreWin32HandleKHR
@@ -99,7 +114,7 @@
 --   >     , HANDLE* pHandle
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetSemaphoreWin32HandleKHR.html vkGetSemaphoreWin32HandleKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSemaphoreWin32HandleKHR.html vkGetSemaphoreWin32HandleKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetSemaphoreWin32HandleKHR"
                vkGetSemaphoreWin32HandleKHR ::
                VkDevice -- ^ device
@@ -108,6 +123,25 @@
                                                       -> Ptr HANDLE -- ^ pHandle
                                                                     -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetSemaphoreWin32HandleKHR
+--   >     ( VkDevice device
+--   >     , const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo
+--   >     , HANDLE* pHandle
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSemaphoreWin32HandleKHR.html vkGetSemaphoreWin32HandleKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetSemaphoreWin32HandleKHR"
+               vkGetSemaphoreWin32HandleKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreGetWin32HandleInfoKHR -- ^ pGetWin32HandleInfo
+                                                      -> Ptr HANDLE -- ^ pHandle
+                                                                    -> IO VkResult
+
 pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -133,7 +167,8 @@
 is_VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
-  = eqCStrings _VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
 
 type VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME =
      "VK_KHR_external_semaphore_win32"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -19,24 +20,31 @@
         --
         -- Extension number: @147@
         module Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2KHR,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
-        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
         module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR,
         module Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2KHR,
-        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements,
         module Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR,
-        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements,
         module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2KHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         vkGetImageMemoryRequirements2KHR,
+        vkGetImageMemoryRequirements2KHRSafe,
         vkGetBufferMemoryRequirements2KHR,
+        vkGetBufferMemoryRequirements2KHRSafe,
         vkGetImageSparseMemoryRequirements2KHR,
+        vkGetImageSparseMemoryRequirements2KHRSafe,
         module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
+        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2,
+        module Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2,
+        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements,
+        module Graphics.Vulkan.Types.Struct.VkMemoryRequirements2,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2,
         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,
@@ -49,73 +57,145 @@
        where
 import           GHC.Ptr
                                                                                        (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                       (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)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
 import           Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2
 import           Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2KHR
 import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2
 import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR
+import           Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2
 import           Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2KHR
 import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2
 import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR
 import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
 import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2
 import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2KHR
 
--- | > () vkGetImageMemoryRequirements2KHR
+-- | This is an alias for `vkGetImageMemoryRequirements2`.
+--
+--   > () vkGetImageMemoryRequirements2KHR
 --   >     ( VkDevice device
---   >     , const VkImageMemoryRequirementsInfo2KHR* pInfo
---   >     , VkMemoryRequirements2KHR* pMemoryRequirements
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetImageMemoryRequirements2KHR.html vkGetImageMemoryRequirements2KHR registry at www.khronos.org>
-foreign import ccall unsafe "vkGetImageMemoryRequirements2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageMemoryRequirements2KHR.html vkGetImageMemoryRequirements2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageMemoryRequirements2"
                vkGetImageMemoryRequirements2KHR ::
                VkDevice -- ^ device
                         ->
-                 Ptr VkImageMemoryRequirementsInfo2KHR -- ^ pInfo
-                                                       ->
-                   Ptr VkMemoryRequirements2KHR -- ^ pMemoryRequirements
-                                                -> IO ()
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
 
--- | > () vkGetBufferMemoryRequirements2KHR
+-- | This is an alias for `vkGetImageMemoryRequirements2`.
+--
+--   > () vkGetImageMemoryRequirements2KHR
 --   >     ( VkDevice device
---   >     , const VkBufferMemoryRequirementsInfo2KHR* pInfo
---   >     , VkMemoryRequirements2KHR* pMemoryRequirements
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetBufferMemoryRequirements2KHR.html vkGetBufferMemoryRequirements2KHR registry at www.khronos.org>
-foreign import ccall unsafe "vkGetBufferMemoryRequirements2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageMemoryRequirements2KHR.html vkGetImageMemoryRequirements2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2KHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+-- | This is an alias for `vkGetBufferMemoryRequirements2`.
+--
+--   > () vkGetBufferMemoryRequirements2KHR
+--   >     ( VkDevice device
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetBufferMemoryRequirements2KHR.html vkGetBufferMemoryRequirements2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
                vkGetBufferMemoryRequirements2KHR ::
                VkDevice -- ^ device
                         ->
-                 Ptr VkBufferMemoryRequirementsInfo2KHR -- ^ pInfo
-                                                        ->
-                   Ptr VkMemoryRequirements2KHR -- ^ pMemoryRequirements
-                                                -> IO ()
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
 
--- | > () vkGetImageSparseMemoryRequirements2KHR
+-- | This is an alias for `vkGetBufferMemoryRequirements2`.
+--
+--   > () vkGetBufferMemoryRequirements2KHR
 --   >     ( VkDevice device
---   >     , const VkImageSparseMemoryRequirementsInfo2KHR* pInfo
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetBufferMemoryRequirements2KHR.html vkGetBufferMemoryRequirements2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2KHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+-- | This is an alias for `vkGetImageSparseMemoryRequirements2`.
+--
+--   > () vkGetImageSparseMemoryRequirements2KHR
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
 --   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetImageSparseMemoryRequirements2KHR.html vkGetImageSparseMemoryRequirements2KHR registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetImageSparseMemoryRequirements2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSparseMemoryRequirements2KHR.html vkGetImageSparseMemoryRequirements2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
                vkGetImageSparseMemoryRequirements2KHR ::
                VkDevice -- ^ device
                         ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2KHR -- ^ pInfo
-                                                             ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
                    Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2KHR -- ^ pSparseMemoryRequirements
-                                                                         -> IO ()
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
 
+-- | This is an alias for `vkGetImageSparseMemoryRequirements2`.
+--
+--   > () vkGetImageSparseMemoryRequirements2KHR
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetImageSparseMemoryRequirements2KHR.html vkGetImageSparseMemoryRequirements2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2KHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
 pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -141,37 +221,23 @@
 is_VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME ::
                                                    CString -> Bool
 is_VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
-  = eqCStrings _VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
 
 type VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME =
      "VK_KHR_get_memory_requirements2"
 
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR =
-        VkStructureType 1000146000
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
 
 pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR =
-        VkStructureType 1000146001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR
-        :: VkStructureType
+        VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
 
 pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR
-        = VkStructureType 1000146002
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR ::
-        VkStructureType
+        = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
 
 pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR =
-        VkStructureType 1000146003
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
 
 pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR =
-        VkStructureType 1000146004
+        VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -18,55 +19,72 @@
         -- type: @instance@
         --
         -- Extension number: @60@
+        module Graphics.Vulkan.Types.Struct.VkFormatProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2KHR,
+        vkGetPhysicalDeviceFeatures2KHR,
+        vkGetPhysicalDeviceFeatures2KHRSafe,
+        vkGetPhysicalDeviceProperties2KHR,
+        vkGetPhysicalDeviceProperties2KHRSafe,
+        vkGetPhysicalDeviceFormatProperties2KHR,
+        vkGetPhysicalDeviceFormatProperties2KHRSafe,
+        vkGetPhysicalDeviceImageFormatProperties2KHR,
+        vkGetPhysicalDeviceImageFormatProperties2KHRSafe,
+        vkGetPhysicalDeviceQueueFamilyProperties2KHR,
+        vkGetPhysicalDeviceQueueFamilyProperties2KHRSafe,
+        vkGetPhysicalDeviceMemoryProperties2KHR,
+        vkGetPhysicalDeviceMemoryProperties2KHRSafe,
+        vkGetPhysicalDeviceSparseImageFormatProperties2KHR,
+        vkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags,
         module Graphics.Vulkan.Types.Enum.VkFormat,
         module Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags,
-        module Graphics.Vulkan.Types.Struct.VkFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkFormatProperties2KHR,
         module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
         module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR,
         module Graphics.Vulkan.Types.Enum.VkImageTiling,
         module Graphics.Vulkan.Types.Enum.VkImageType,
         module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
-        module Graphics.Vulkan.Types.Struct.VkMemoryHeap,
         module Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags,
         module Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags,
+        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
+        module Graphics.Vulkan.Types.Enum.VkQueueFlags,
+        module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Struct.VkFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkFormatProperties2,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
+        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2,
+        module Graphics.Vulkan.Types.Struct.VkMemoryHeap,
         module Graphics.Vulkan.Types.Struct.VkMemoryType,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties,
-        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2KHR,
-        module Graphics.Vulkan.Types.Enum.VkQueueFlags,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags,
+        module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2,
         module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2KHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
-        vkGetPhysicalDeviceFeatures2KHR, vkGetPhysicalDeviceProperties2KHR,
-        vkGetPhysicalDeviceFormatProperties2KHR,
-        vkGetPhysicalDeviceImageFormatProperties2KHR,
-        vkGetPhysicalDeviceQueueFamilyProperties2KHR,
-        vkGetPhysicalDeviceMemoryProperties2KHR,
-        vkGetPhysicalDeviceSparseImageFormatProperties2KHR,
-        module Graphics.Vulkan.Types.Enum.VkResult,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2,
         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,
@@ -83,9 +101,20 @@
        where
 import           GHC.Ptr
                                                                                          (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                         (pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
+                                                                                         pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Bitmasks
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags
 import           Graphics.Vulkan.Types.Enum.VkFormat
 import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
@@ -106,135 +135,275 @@
 import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkExtent3D
 import           Graphics.Vulkan.Types.Struct.VkFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkFormatProperties2
 import           Graphics.Vulkan.Types.Struct.VkFormatProperties2KHR
 import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2
 import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
 import           Graphics.Vulkan.Types.Struct.VkMemoryHeap
 import           Graphics.Vulkan.Types.Struct.VkMemoryType
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2KHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2KHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties
+import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2
 import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2KHR
 import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
+import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2
 import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2KHR
 
--- | > () vkGetPhysicalDeviceFeatures2KHR
+-- | This is an alias for `vkGetPhysicalDeviceFeatures2`.
+--
+--   > () vkGetPhysicalDeviceFeatures2KHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures2KHR* pFeatures
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceFeatures2KHR.html vkGetPhysicalDeviceFeatures2KHR registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFeatures2KHR.html vkGetPhysicalDeviceFeatures2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
                vkGetPhysicalDeviceFeatures2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2KHR -- ^ pFeatures
-                                                                    -> IO ()
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
 
--- | > () vkGetPhysicalDeviceProperties2KHR
+-- | This is an alias for `vkGetPhysicalDeviceFeatures2`.
+--
+--   > () vkGetPhysicalDeviceFeatures2KHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties2KHR* pProperties
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceProperties2KHR.html vkGetPhysicalDeviceProperties2KHR registry at www.khronos.org>
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFeatures2KHR.html vkGetPhysicalDeviceFeatures2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+-- | This is an alias for `vkGetPhysicalDeviceProperties2`.
+--
+--   > () vkGetPhysicalDeviceProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceProperties2KHR.html vkGetPhysicalDeviceProperties2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
                vkGetPhysicalDeviceProperties2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2KHR -- ^ pProperties
-                                                                      -> IO ()
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
 
--- | > () vkGetPhysicalDeviceFormatProperties2KHR
+-- | This is an alias for `vkGetPhysicalDeviceProperties2`.
+--
+--   > () vkGetPhysicalDeviceProperties2KHR
 --   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceProperties2KHR.html vkGetPhysicalDeviceProperties2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+-- | This is an alias for `vkGetPhysicalDeviceFormatProperties2`.
+--
+--   > () vkGetPhysicalDeviceFormatProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
 --   >     , VkFormat format
---   >     , VkFormatProperties2KHR* pFormatProperties
+--   >     , VkFormatProperties2* pFormatProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html vkGetPhysicalDeviceFormatProperties2KHR registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceFormatProperties2KHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html vkGetPhysicalDeviceFormatProperties2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
                vkGetPhysicalDeviceFormatProperties2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2KHR -- ^ pFormatProperties
-                                                                          -> IO ()
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
 
--- | Success codes: 'VK_SUCCESS'.
+-- | This is an alias for `vkGetPhysicalDeviceFormatProperties2`.
 --
+--   > () vkGetPhysicalDeviceFormatProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties2* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html vkGetPhysicalDeviceFormatProperties2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+-- | This is an alias for `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 vkGetPhysicalDeviceImageFormatProperties2KHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo
---   >     , VkImageFormatProperties2KHR* pImageFormatProperties
+--   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+--   >     , VkImageFormatProperties2* pImageFormatProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html vkGetPhysicalDeviceImageFormatProperties2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html vkGetPhysicalDeviceImageFormatProperties2KHR registry at www.khronos.org>
 foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties2KHR"
+               "vkGetPhysicalDeviceImageFormatProperties2"
                vkGetPhysicalDeviceImageFormatProperties2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2KHR -- ^ pImageFormatInfo
-                                                         ->
-                   Ptr VkImageFormatProperties2KHR -- ^ pImageFormatProperties
-                                                   -> IO VkResult
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
 
--- | > () vkGetPhysicalDeviceQueueFamilyProperties2KHR
+-- | This is an alias for `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 vkGetPhysicalDeviceImageFormatProperties2KHR
 --   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+--   >     , VkImageFormatProperties2* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html vkGetPhysicalDeviceImageFormatProperties2KHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+-- | This is an alias for `vkGetPhysicalDeviceQueueFamilyProperties2`.
+--
+--   > () vkGetPhysicalDeviceQueueFamilyProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties2KHR* pQueueFamilyProperties
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html vkGetPhysicalDeviceQueueFamilyProperties2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html vkGetPhysicalDeviceQueueFamilyProperties2KHR registry at www.khronos.org>
 foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties2KHR"
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
                vkGetPhysicalDeviceQueueFamilyProperties2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
                  Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2KHR -- ^ pQueueFamilyProperties
-                                                               -> IO ()
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
 
--- | > () vkGetPhysicalDeviceMemoryProperties2KHR
+-- | This is an alias for `vkGetPhysicalDeviceQueueFamilyProperties2`.
+--
+--   > () vkGetPhysicalDeviceQueueFamilyProperties2KHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html vkGetPhysicalDeviceMemoryProperties2KHR registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceMemoryProperties2KHR"
-               vkGetPhysicalDeviceMemoryProperties2KHR ::
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html vkGetPhysicalDeviceQueueFamilyProperties2KHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2KHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
-                 Ptr VkPhysicalDeviceMemoryProperties2KHR -- ^ pMemoryProperties
-                                                          -> IO ()
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
 
--- | > () vkGetPhysicalDeviceSparseImageFormatProperties2KHR
+-- | This is an alias for `vkGetPhysicalDeviceMemoryProperties2`.
+--
+--   > () vkGetPhysicalDeviceMemoryProperties2KHR
 --   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html vkGetPhysicalDeviceMemoryProperties2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2KHR ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+-- | This is an alias for `vkGetPhysicalDeviceMemoryProperties2`.
+--
+--   > () vkGetPhysicalDeviceMemoryProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html vkGetPhysicalDeviceMemoryProperties2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+-- | This is an alias for `vkGetPhysicalDeviceSparseImageFormatProperties2`.
+--
+--   > () vkGetPhysicalDeviceSparseImageFormatProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
 --   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties2KHR* pProperties
+--   >     , VkSparseImageFormatProperties2* pProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html vkGetPhysicalDeviceSparseImageFormatProperties2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html vkGetPhysicalDeviceSparseImageFormatProperties2KHR registry at www.khronos.org>
 foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
                vkGetPhysicalDeviceSparseImageFormatProperties2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
                                 ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2KHR -- ^ pFormatInfo
-                                                               ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
                    Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2KHR -- ^ pProperties
-                                                                       -> IO ()
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
 
+-- | This is an alias for `vkGetPhysicalDeviceSparseImageFormatProperties2`.
+--
+--   > () vkGetPhysicalDeviceSparseImageFormatProperties2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html vkGetPhysicalDeviceSparseImageFormatProperties2KHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
 pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -263,62 +432,35 @@
 is_VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME ::
                                                           CString -> Bool
 is_VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-  = eqCStrings
-      _VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
 
 type VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME =
      "VK_KHR_get_physical_device_properties2"
 
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR ::
-        VkStructureType
-
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR =
-        VkStructureType 1000059000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR =
-        VkStructureType 1000059001
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
 
 pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR =
-        VkStructureType 1000059002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2
 
 pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR =
-        VkStructureType 1000059003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR
-        :: VkStructureType
+        VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR =
-        VkStructureType 1000059004
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
 
 pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR =
-        VkStructureType 1000059005
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR
-        :: VkStructureType
+        VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR =
-        VkStructureType 1000059006
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
 
 pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR =
-        VkStructureType 1000059007
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR
-        :: VkStructureType
+        VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR
-        = VkStructureType 1000059008
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
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
@@ -38,7 +38,9 @@
         module Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR,
         -- > #include "vk_platform.h"
         vkGetPhysicalDeviceSurfaceCapabilities2KHR,
+        vkGetPhysicalDeviceSurfaceCapabilities2KHRSafe,
         vkGetPhysicalDeviceSurfaceFormats2KHR,
+        vkGetPhysicalDeviceSurfaceFormats2KHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
@@ -78,7 +80,7 @@
 --   >     , VkSurfaceCapabilities2KHR* pSurfaceCapabilities
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html vkGetPhysicalDeviceSurfaceCapabilities2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html vkGetPhysicalDeviceSurfaceCapabilities2KHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfaceCapabilities2KHR"
                vkGetPhysicalDeviceSurfaceCapabilities2KHR ::
@@ -89,6 +91,27 @@
                    Ptr VkSurfaceCapabilities2KHR -- ^ pSurfaceCapabilities
                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo
+--   >     , VkSurfaceCapabilities2KHR* pSurfaceCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html vkGetPhysicalDeviceSurfaceCapabilities2KHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceSurfaceCapabilities2KHR"
+               vkGetPhysicalDeviceSurfaceCapabilities2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSurfaceInfo2KHR -- ^ pSurfaceInfo
+                                                     ->
+                   Ptr VkSurfaceCapabilities2KHR -- ^ pSurfaceCapabilities
+                                                 -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -100,7 +123,7 @@
 --   >     , VkSurfaceFormat2KHR* pSurfaceFormats
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html vkGetPhysicalDeviceSurfaceFormats2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html vkGetPhysicalDeviceSurfaceFormats2KHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceFormats2KHR"
                vkGetPhysicalDeviceSurfaceFormats2KHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -111,6 +134,28 @@
                               -> Ptr VkSurfaceFormat2KHR -- ^ pSurfaceFormats
                                                          -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetPhysicalDeviceSurfaceFormats2KHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo
+--   >     , uint32_t* pSurfaceFormatCount
+--   >     , VkSurfaceFormat2KHR* pSurfaceFormats
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html vkGetPhysicalDeviceSurfaceFormats2KHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceSurfaceFormats2KHR"
+               vkGetPhysicalDeviceSurfaceFormats2KHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSurfaceInfo2KHR -- ^ pSurfaceInfo
+                                                     ->
+                   Ptr Word32 -- ^ pSurfaceFormatCount
+                              -> Ptr VkSurfaceFormat2KHR -- ^ pSurfaceFormats
+                                                         -> IO VkResult
+
 pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -136,7 +181,8 @@
 is_VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME ::
                                                     CString -> Bool
 is_VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
-  = eqCStrings _VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
 
 type VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME =
      "VK_KHR_get_surface_capabilities2"
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
@@ -76,7 +76,7 @@
 
 is_VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
-  = eqCStrings _VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
 
 type VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME =
      "VK_KHR_image_format_list"
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
@@ -72,7 +72,7 @@
 
 is_VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
-  = eqCStrings _VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
 
 type VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME =
      "VK_KHR_incremental_present"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
@@ -19,9 +20,9 @@
         -- type: @device@
         --
         -- Extension number: @70@
-        vkTrimCommandPoolKHR, module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.Bitmasks, vkTrimCommandPoolKHR,
+        vkTrimCommandPoolKHRSafe, module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Handles,
         VK_KHR_MAINTENANCE1_SPEC_VERSION,
         pattern VK_KHR_MAINTENANCE1_SPEC_VERSION,
@@ -32,36 +33,53 @@
         pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
         pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR)
        where
-import           GHC.Ptr                                         (Ptr (..))
+import           GHC.Ptr                         (Ptr (..))
+import           Graphics.Vulkan.Core_1_1        (pattern VK_ERROR_OUT_OF_POOL_MEMORY,
+                                                  pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+                                                  pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
+                                                  pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags (VkFormatFeatureBitmask (..),
-                                                                  VkFormatFeatureFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags   (VkImageCreateBitmask (..),
-                                                                  VkImageCreateFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkResult             (VkResult (..))
 import           Graphics.Vulkan.Types.Handles
 
--- | > () vkTrimCommandPoolKHR
+-- | This is an alias for `vkTrimCommandPool`.
+--
+--   > () vkTrimCommandPoolKHR
 --   >     ( VkDevice device
 --   >     , VkCommandPool commandPool
---   >     , VkCommandPoolTrimFlagsKHR flags
+--   >     , VkCommandPoolTrimFlags flags
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkTrimCommandPoolKHR.html vkTrimCommandPoolKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkTrimCommandPoolKHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkTrimCommandPoolKHR.html vkTrimCommandPoolKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkTrimCommandPool"
                vkTrimCommandPoolKHR ::
                VkDevice -- ^ device
                         -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolTrimFlagsKHR -- ^ flags
-                                                                      -> IO ()
+                                         -> VkCommandPoolTrimFlags -- ^ flags
+                                                                   -> IO ()
 
+-- | This is an alias for `vkTrimCommandPool`.
+--
+--   > () vkTrimCommandPoolKHR
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolTrimFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkTrimCommandPoolKHR.html vkTrimCommandPoolKHR registry at www.khronos.org>
+foreign import ccall safe "vkTrimCommandPool"
+               vkTrimCommandPoolKHRSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolTrimFlags -- ^ flags
+                                                                   -> IO ()
+
 pattern VK_KHR_MAINTENANCE1_SPEC_VERSION :: (Num a, Eq a) => a
 
-pattern VK_KHR_MAINTENANCE1_SPEC_VERSION = 1
+pattern VK_KHR_MAINTENANCE1_SPEC_VERSION = 2
 
-type VK_KHR_MAINTENANCE1_SPEC_VERSION = 1
+type VK_KHR_MAINTENANCE1_SPEC_VERSION = 2
 
 pattern VK_KHR_MAINTENANCE1_EXTENSION_NAME :: CString
 
@@ -80,37 +98,18 @@
 
 is_VK_KHR_MAINTENANCE1_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_MAINTENANCE1_EXTENSION_NAME
-  = eqCStrings _VK_KHR_MAINTENANCE1_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_MAINTENANCE1_EXTENSION_NAME
 
 type VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1"
 
-pattern VK_ERROR_OUT_OF_POOL_MEMORY_KHR :: VkResult
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VkResult (-1000069000)
-
--- | Format can be used as the source image of image transfer commands
---
---   bitpos = @14@
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR ::
-        VkFormatFeatureFlagBits
+pattern VK_ERROR_OUT_OF_POOL_MEMORY_KHR =
+        VK_ERROR_OUT_OF_POOL_MEMORY
 
 pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR =
-        VkFormatFeatureFlagBits 16384
-
--- | Format can be used as the destination image of image transfer commands
---
---   bitpos = @15@
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR ::
-        VkFormatFeatureFlagBits
+        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
 
 pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR =
-        VkFormatFeatureFlagBits 32768
-
--- | The 3D image can be viewed as a 2D or 2D array image
---
---   bitpos = @5@
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR ::
-        VkImageCreateFlagBits
+        VK_FORMAT_FEATURE_TRANSFER_DST_BIT
 
 pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR =
-        VkImageCreateFlagBits 32
+        VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -17,47 +18,13 @@
         -- type: @device@
         --
         -- Extension number: @118@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.VkAccessFlags,
-        module Graphics.Vulkan.Types.Struct.VkAttachmentDescription,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp,
-        module Graphics.Vulkan.Types.Struct.VkAttachmentReference,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
-        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
-        module Graphics.Vulkan.Types.Enum.VkDependencyFlags,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
-        module Graphics.Vulkan.Types.Enum.VkImageLayout,
-        module Graphics.Vulkan.Types.Struct.VkImageSubresourceRange,
-        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkImageViewType,
         module Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReferenceKHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingPropertiesKHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
-        module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
         module Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfoKHR,
-        module Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo,
         module Graphics.Vulkan.Types.Enum.VkPointClippingBehaviorKHR,
-        module Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo,
         module Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        module Graphics.Vulkan.Types.Struct.VkSubpassDependency,
-        module Graphics.Vulkan.Types.Struct.VkSubpassDescription,
-        module Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags,
         module Graphics.Vulkan.Types.Enum.VkTessellationDomainOriginKHR,
-        -- > #include "vk_platform.h"
         VK_KHR_MAINTENANCE2_SPEC_VERSION,
         pattern VK_KHR_MAINTENANCE2_SPEC_VERSION,
         VK_KHR_MAINTENANCE2_EXTENSION_NAME,
@@ -69,53 +36,35 @@
         pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR,
         pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
-        pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR)
+        pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR,
+        pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
+        pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR,
+        pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
+        pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR)
        where
 import           GHC.Ptr
                                                                                                     (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                                    (pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
+                                                                                                    pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
+                                                                                                    pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+                                                                                                    pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
+                                                                                                    pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
+                                                                                                    pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
+                                                                                                    pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
+                                                                                                    pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO)
 import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkAccessFlags
-import           Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags
-import           Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp
-import           Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp
-import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle
-import           Graphics.Vulkan.Types.Enum.VkDependencyFlags
-import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
-                                                                                                    (VkImageCreateBitmask (..),
-                                                                                                    VkImageCreateFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkImageLayout
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkImageViewType
-import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
-import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
+import           Graphics.Vulkan.Types.Enum.VkPointClippingBehavior
+                                                                                                    (VkPointClippingBehavior (..))
 import           Graphics.Vulkan.Types.Enum.VkPointClippingBehaviorKHR
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags
+import           Graphics.Vulkan.Types.Enum.VkTessellationDomainOrigin
+                                                                                                    (VkTessellationDomainOrigin (..))
 import           Graphics.Vulkan.Types.Enum.VkTessellationDomainOriginKHR
-import           Graphics.Vulkan.Types.Struct.VkAttachmentDescription
-import           Graphics.Vulkan.Types.Struct.VkAttachmentReference
-import           Graphics.Vulkan.Types.Struct.VkComponentMapping
-import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
-import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReferenceKHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingPropertiesKHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkSubpassDependency
-import           Graphics.Vulkan.Types.Struct.VkSubpassDescription
 
 pattern VK_KHR_MAINTENANCE2_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -140,56 +89,43 @@
 
 is_VK_KHR_MAINTENANCE2_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_MAINTENANCE2_EXTENSION_NAME
-  = eqCStrings _VK_KHR_MAINTENANCE2_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_MAINTENANCE2_EXTENSION_NAME
 
 type VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2"
 
--- | bitpos = @7@
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR ::
-        VkImageCreateFlagBits
-
 pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR =
-        VkImageCreateFlagBits 128
-
--- | bitpos = @8@
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR ::
-        VkImageCreateFlagBits
+        VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
 
 pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR =
-        VkImageCreateFlagBits 256
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR
-        :: VkStructureType
+        VK_IMAGE_CREATE_EXTENDED_USAGE_BIT
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR
-        = VkStructureType 1000117000
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR
-        :: VkStructureType
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
 
 pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR
-        = VkStructureType 1000117001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR ::
-        VkStructureType
+        = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
 
 pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR =
-        VkStructureType 1000117002
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR
-        :: VkStructureType
+        VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
 
 pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR
-        = VkStructureType 1000117003
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
-        :: VkImageLayout
+        =
+        VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
 
 pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
-        = VkImageLayout 1000117000
+        = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
 
 pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
-        :: VkImageLayout
+        = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
 
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
-        = VkImageLayout 1000117001
+pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR =
+        VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
+
+pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR =
+        VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
+
+pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR =
+        VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
+
+pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR =
+        VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
@@ -0,0 +1,133 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE MagicHash                #-}
+{-# LANGUAGE PatternSynonyms          #-}
+{-# LANGUAGE Strict                   #-}
+{-# LANGUAGE ViewPatterns             #-}
+module Graphics.Vulkan.Ext.VK_KHR_maintenance3
+       (-- * Vulkan extension: @VK_KHR_maintenance3@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Jeff Bolz @jbolz@
+        --
+        -- author: @KHR@
+        --
+        -- type: @device@
+        --
+        -- Extension number: @169@
+        --
+        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        --
+
+        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupportKHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3PropertiesKHR,
+        vkGetDescriptorSetLayoutSupportKHR,
+        vkGetDescriptorSetLayoutSupportKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags,
+        module Graphics.Vulkan.Types.Enum.VkDescriptorType,
+        module Graphics.Vulkan.Types.Enum.VkShaderStageFlags,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
+        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo,
+        module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport,
+        VK_KHR_MAINTENANCE3_SPEC_VERSION,
+        pattern VK_KHR_MAINTENANCE3_SPEC_VERSION,
+        VK_KHR_MAINTENANCE3_EXTENSION_NAME,
+        pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR,
+        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR)
+       where
+import           GHC.Ptr
+                                                                                         (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                         (pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+                                                                                         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Types.BaseTypes
+import           Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkDescriptorType
+import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupportKHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3PropertiesKHR
+
+-- | This is an alias for `vkGetDescriptorSetLayoutSupport`.
+--
+--   > () vkGetDescriptorSetLayoutSupportKHR
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDescriptorSetLayoutSupportKHR.html vkGetDescriptorSetLayoutSupportKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportKHR ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+-- | This is an alias for `vkGetDescriptorSetLayoutSupport`.
+--
+--   > () vkGetDescriptorSetLayoutSupportKHR
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDescriptorSetLayoutSupportKHR.html vkGetDescriptorSetLayoutSupportKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+pattern VK_KHR_MAINTENANCE3_SPEC_VERSION :: (Num a, Eq a) => a
+
+pattern VK_KHR_MAINTENANCE3_SPEC_VERSION = 1
+
+type VK_KHR_MAINTENANCE3_SPEC_VERSION = 1
+
+pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME :: CString
+
+pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME <-
+        (is_VK_KHR_MAINTENANCE3_EXTENSION_NAME -> True)
+  where VK_KHR_MAINTENANCE3_EXTENSION_NAME
+          = _VK_KHR_MAINTENANCE3_EXTENSION_NAME
+
+{-# INLINE _VK_KHR_MAINTENANCE3_EXTENSION_NAME #-}
+
+_VK_KHR_MAINTENANCE3_EXTENSION_NAME :: CString
+_VK_KHR_MAINTENANCE3_EXTENSION_NAME
+  = Ptr "VK_KHR_maintenance3\NUL"#
+
+{-# INLINE is_VK_KHR_MAINTENANCE3_EXTENSION_NAME #-}
+
+is_VK_KHR_MAINTENANCE3_EXTENSION_NAME :: CString -> Bool
+is_VK_KHR_MAINTENANCE3_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_MAINTENANCE3_EXTENSION_NAME
+
+type VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3"
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR =
+        VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @mir@
+        --
         -- Extension number: @8@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_MIR_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,10 +30,9 @@
         module Graphics.Vulkan.Types.Struct.VkMirSurfaceCreateInfoKHR,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <mir_toolkit/client_types.h>
-        vkCreateMirSurfaceKHR,
+        vkCreateMirSurfaceKHR, vkCreateMirSurfaceKHRSafe,
         vkGetPhysicalDeviceMirPresentationSupportKHR,
+        vkGetPhysicalDeviceMirPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -73,7 +72,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateMirSurfaceKHR.html vkCreateMirSurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateMirSurfaceKHR.html vkCreateMirSurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateMirSurfaceKHR"
                vkCreateMirSurfaceKHR ::
                VkInstance -- ^ instance
@@ -84,13 +83,35 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateMirSurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkMirSurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateMirSurfaceKHR.html vkCreateMirSurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateMirSurfaceKHR"
+               vkCreateMirSurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkMirSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 -- | > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
 --   >     , MirConnection* connection
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceMirPresentationSupportKHR.html vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMirPresentationSupportKHR.html vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceMirPresentationSupportKHR"
                vkGetPhysicalDeviceMirPresentationSupportKHR ::
@@ -99,6 +120,21 @@
                                           -> Ptr MirConnection -- ^ connection
                                                                -> IO VkBool32
 
+-- | > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t queueFamilyIndex
+--   >     , MirConnection* connection
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceMirPresentationSupportKHR.html vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceMirPresentationSupportKHR"
+               vkGetPhysicalDeviceMirPresentationSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> Ptr MirConnection -- ^ connection
+                                                               -> IO VkBool32
+
 pattern VK_KHR_MIR_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_MIR_SURFACE_SPEC_VERSION = 4
@@ -121,7 +157,7 @@
 
 is_VK_KHR_MIR_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_MIR_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_MIR_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_MIR_SURFACE_EXTENSION_NAME
 
 type VK_KHR_MIR_SURFACE_EXTENSION_NAME = "VK_KHR_mir_surface"
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
@@ -0,0 +1,86 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
+{-# OPTIONS_HADDOCK not-home#-}
+{-# LANGUAGE DataKinds       #-}
+{-# LANGUAGE MagicHash       #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE Strict          #-}
+{-# LANGUAGE ViewPatterns    #-}
+module Graphics.Vulkan.Ext.VK_KHR_multiview
+       (-- * Vulkan extension: @VK_KHR_multiview@
+        -- |
+        --
+        -- supported: @vulkan@
+        --
+        -- contact: @Jeff Bolz @jbolz@
+        --
+        -- author: @KHR@
+        --
+        -- type: @device@
+        --
+        -- Extension number: @54@
+        --
+        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        --
+
+        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHR,
+        module Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHR,
+        VK_KHR_MULTIVIEW_SPEC_VERSION,
+        pattern VK_KHR_MULTIVIEW_SPEC_VERSION,
+        VK_KHR_MULTIVIEW_EXTENSION_NAME,
+        pattern VK_KHR_MULTIVIEW_EXTENSION_NAME,
+        pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR,
+        pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR)
+       where
+import           GHC.Ptr
+                                                                                      (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                      (pattern VK_DEPENDENCY_VIEW_LOCAL_BIT,
+                                                                                      pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+                                                                                      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.VkPhysicalDeviceMultiviewFeaturesKHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHR
+import           Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHR
+
+pattern VK_KHR_MULTIVIEW_SPEC_VERSION :: (Num a, Eq a) => a
+
+pattern VK_KHR_MULTIVIEW_SPEC_VERSION = 1
+
+type VK_KHR_MULTIVIEW_SPEC_VERSION = 1
+
+pattern VK_KHR_MULTIVIEW_EXTENSION_NAME :: CString
+
+pattern VK_KHR_MULTIVIEW_EXTENSION_NAME <-
+        (is_VK_KHR_MULTIVIEW_EXTENSION_NAME -> True)
+  where VK_KHR_MULTIVIEW_EXTENSION_NAME
+          = _VK_KHR_MULTIVIEW_EXTENSION_NAME
+
+{-# INLINE _VK_KHR_MULTIVIEW_EXTENSION_NAME #-}
+
+_VK_KHR_MULTIVIEW_EXTENSION_NAME :: CString
+_VK_KHR_MULTIVIEW_EXTENSION_NAME = Ptr "VK_KHR_multiview\NUL"#
+
+{-# INLINE is_VK_KHR_MULTIVIEW_EXTENSION_NAME #-}
+
+is_VK_KHR_MULTIVIEW_EXTENSION_NAME :: CString -> Bool
+is_VK_KHR_MULTIVIEW_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_MULTIVIEW_EXTENSION_NAME
+
+type VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview"
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR =
+        VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR =
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
+
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR =
+        VK_DEPENDENCY_VIEW_LOCAL_BIT
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,14 +27,14 @@
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePushDescriptorPropertiesKHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkCmdPushDescriptorSetKHR,
+        vkCmdPushDescriptorSetKHR, vkCmdPushDescriptorSetKHRSafe,
         module Graphics.Vulkan.Types.Enum.VkDescriptorType,
         module Graphics.Vulkan.Types.Enum.VkImageLayout,
         module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
@@ -47,7 +47,11 @@
         VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
         pattern VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
         pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
-        pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR)
+        pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,
+        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
+        vkCmdPushDescriptorSetWithTemplateKHR,
+        vkCmdPushDescriptorSetWithTemplateKHRSafe,
+        pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
        where
 import           GHC.Ptr
                                                                                            (Ptr (..))
@@ -57,6 +61,8 @@
                                                                                            (VkDescriptorSetLayoutCreateBitmask (..),
                                                                                            VkDescriptorSetLayoutCreateFlagBits)
 import           Graphics.Vulkan.Types.Enum.VkDescriptorType
+import           Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType
+                                                                                           (VkDescriptorUpdateTemplateType (..))
 import           Graphics.Vulkan.Types.Enum.VkImageLayout
 import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
 import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
@@ -67,7 +73,7 @@
 import           Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDevicePushDescriptorPropertiesKHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 import           Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet
@@ -85,7 +91,7 @@
 --   >     , const VkWriteDescriptorSet* pDescriptorWrites
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdPushDescriptorSetKHR.html vkCmdPushDescriptorSetKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdPushDescriptorSetKHR.html vkCmdPushDescriptorSetKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdPushDescriptorSetKHR"
                vkCmdPushDescriptorSetKHR ::
                VkCommandBuffer -- ^ commandBuffer
@@ -99,11 +105,38 @@
                                       -> Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
                                                                   -> IO ()
 
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdPushDescriptorSetKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipelineLayout layout
+--   >     , uint32_t set
+--   >     , uint32_t descriptorWriteCount
+--   >     , const VkWriteDescriptorSet* pDescriptorWrites
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdPushDescriptorSetKHR.html vkCmdPushDescriptorSetKHR registry at www.khronos.org>
+foreign import ccall safe "vkCmdPushDescriptorSetKHR"
+               vkCmdPushDescriptorSetKHRSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ set
+                            -> Word32 -- ^ descriptorWriteCount
+                                      -> Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                                  -> IO ()
+
 pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: (Num a, Eq a) => a
 
-pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 1
+pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2
 
-type VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 1
+type VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2
 
 pattern VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME :: CString
 
@@ -122,7 +155,7 @@
 
 is_VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
-  = eqCStrings _VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
 
 type VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME =
      "VK_KHR_push_descriptor"
@@ -141,3 +174,58 @@
 
 pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR =
         VkDescriptorSetLayoutCreateFlagBits 1
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdPushDescriptorSetWithTemplateKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , VkPipelineLayout layout
+--   >     , uint32_t set
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html vkCmdPushDescriptorSetWithTemplateKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkCmdPushDescriptorSetWithTemplateKHR"
+               vkCmdPushDescriptorSetWithTemplateKHR ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            ->
+                   VkPipelineLayout -- ^ layout
+                                    -> Word32 -- ^ set
+                                              -> Ptr Void -- ^ pData
+                                                          -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdPushDescriptorSetWithTemplateKHR
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , VkPipelineLayout layout
+--   >     , uint32_t set
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html vkCmdPushDescriptorSetWithTemplateKHR registry at www.khronos.org>
+foreign import ccall safe "vkCmdPushDescriptorSetWithTemplateKHR"
+               vkCmdPushDescriptorSetWithTemplateKHRSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            ->
+                   VkPipelineLayout -- ^ layout
+                                    -> Word32 -- ^ set
+                                              -> Ptr Void -- ^ pData
+                                                          -> IO ()
+
+-- | Create descriptor update template for pushed descriptor updates
+pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR ::
+        VkDescriptorUpdateTemplateType
+
+pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR =
+        VkDescriptorUpdateTemplateType 1
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
@@ -49,7 +49,7 @@
 
 is_VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
-  = eqCStrings _VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
 
 type VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME =
      "VK_KHR_relaxed_block_layout"
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
@@ -54,7 +54,8 @@
 is_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME ::
                                                       CString -> Bool
 is_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
 
 type VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME =
      "VK_KHR_sampler_mirror_clamp_to_edge"
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -23,51 +24,36 @@
         --
 
         -- ** Required extensions: 'VK_KHR_maintenance1', 'VK_KHR_bind_memory2', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfoKHR,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkBorderColor,
         module Graphics.Vulkan.Types.Enum.VkChromaLocationKHR,
-        module Graphics.Vulkan.Types.Enum.VkCompareOp,
-        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
-        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
-        module Graphics.Vulkan.Types.Enum.VkFilter,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties,
-        module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR,
         module Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfoKHR,
-        module Graphics.Vulkan.Types.Struct.VkImageSubresourceRange,
-        module Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkImageViewType,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkSamplerAddressMode,
-        module Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode,
         module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfoKHR,
         module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatPropertiesKHR,
         module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfoKHR,
         module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversionKHR,
         module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRangeKHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         vkCreateSamplerYcbcrConversionKHR,
+        vkCreateSamplerYcbcrConversionKHRSafe,
         vkDestroySamplerYcbcrConversionKHR,
+        vkDestroySamplerYcbcrConversionKHRSafe,
+        module Graphics.Vulkan.Marshal,
+        module Graphics.Vulkan.Types.BaseTypes,
+        module Graphics.Vulkan.Types.Enum.VkChromaLocation,
+        module Graphics.Vulkan.Types.Enum.VkComponentSwizzle,
+        module Graphics.Vulkan.Types.Enum.VkFilter,
+        module Graphics.Vulkan.Types.Enum.VkFormat,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
+        module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion,
+        module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange,
+        module Graphics.Vulkan.Types.Enum.VkStructureType,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
         module Graphics.Vulkan.Types.Funcpointers,
         module Graphics.Vulkan.Types.Handles,
         module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks,
+        module Graphics.Vulkan.Types.Struct.VkComponentMapping,
+        module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo,
         VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION,
         pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION,
         VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
@@ -124,101 +110,187 @@
         pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
         pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
         pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
-        pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR)
+        pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,
+        pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
+        pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
+        pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
+        pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
+        pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR,
+        pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
+        pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR,
+        pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
+        pattern VK_CHROMA_LOCATION_MIDPOINT_KHR,
+        -- ** Required extensions: 'VK_EXT_debug_report', 'VK_KHR_maintenance1', 'VK_KHR_bind_memory2', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2'.
+        pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT)
        where
 import           GHC.Ptr
                                                                                                  (Ptr (..))
+import           Graphics.Vulkan.Core_1_1
+                                                                                                 (pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
+                                                                                                 pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
+                                                                                                 pattern VK_FORMAT_B16G16R16G16_422_UNORM,
+                                                                                                 pattern VK_FORMAT_B8G8R8G8_422_UNORM,
+                                                                                                 pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
+                                                                                                 pattern VK_FORMAT_FEATURE_DISJOINT_BIT,
+                                                                                                 pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_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_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
+                                                                                                 pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
+                                                                                                 pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
+                                                                                                 pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
+                                                                                                 pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
+                                                                                                 pattern VK_FORMAT_G16B16G16R16_422_UNORM,
+                                                                                                 pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
+                                                                                                 pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
+                                                                                                 pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
+                                                                                                 pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
+                                                                                                 pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
+                                                                                                 pattern VK_FORMAT_G8B8G8R8_422_UNORM,
+                                                                                                 pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
+                                                                                                 pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
+                                                                                                 pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
+                                                                                                 pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
+                                                                                                 pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
+                                                                                                 pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
+                                                                                                 pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
+                                                                                                 pattern VK_FORMAT_R10X6_UNORM_PACK16,
+                                                                                                 pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
+                                                                                                 pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
+                                                                                                 pattern VK_FORMAT_R12X4_UNORM_PACK16,
+                                                                                                 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_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
+                                                                                                 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_CREATE_INFO,
+                                                                                                 pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
+                                                                                                 pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO)
+import           Graphics.Vulkan.Ext.VK_EXT_debug_report
+                                                                                                 (pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkBorderColor
+import           Graphics.Vulkan.Types.Enum.VkChromaLocation
 import           Graphics.Vulkan.Types.Enum.VkChromaLocationKHR
-import           Graphics.Vulkan.Types.Enum.VkCompareOp
 import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle
-import           Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT
-                                                                                                 (VkDebugReportObjectTypeEXT (..))
 import           Graphics.Vulkan.Types.Enum.VkFilter
 import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
-                                                                                                 (VkFormatFeatureBitmask (..),
-                                                                                                 VkFormatFeatureFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
-                                                                                                 (VkImageCreateBitmask (..),
-                                                                                                 VkImageCreateFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkImageViewType
 import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
-import           Graphics.Vulkan.Types.Enum.VkObjectType
-                                                                                                 (VkObjectType (..))
 import           Graphics.Vulkan.Types.Enum.VkResult
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
-import           Graphics.Vulkan.Types.Enum.VkSamplerAddressMode
-import           Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion
 import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversionKHR
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange
 import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRangeKHR
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
 import           Graphics.Vulkan.Types.Funcpointers
 import           Graphics.Vulkan.Types.Handles
 import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkComponentMapping
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkExtent3D
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
-import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR
 import           Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
-import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo
 import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatPropertiesKHR
 import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfoKHR
 
--- | Success codes: 'VK_SUCCESS'.
+-- | This is an alias for `vkCreateSamplerYcbcrConversion`.
 --
+--   Success codes: 'VK_SUCCESS'.
+--
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
 --   > VkResult vkCreateSamplerYcbcrConversionKHR
 --   >     ( VkDevice device
---   >     , const VkSamplerYcbcrConversionCreateInfoKHR* pCreateInfo
+--   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
 --   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSamplerYcbcrConversionKHR* pYcbcrConversion
+--   >     , VkSamplerYcbcrConversion* pYcbcrConversion
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateSamplerYcbcrConversionKHR.html vkCreateSamplerYcbcrConversionKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkCreateSamplerYcbcrConversionKHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateSamplerYcbcrConversionKHR.html vkCreateSamplerYcbcrConversionKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
                vkCreateSamplerYcbcrConversionKHR ::
                VkDevice -- ^ device
                         ->
-                 Ptr VkSamplerYcbcrConversionCreateInfoKHR -- ^ pCreateInfo
-                                                           ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
                    Ptr VkAllocationCallbacks -- ^ pAllocator
                                              ->
-                     Ptr VkSamplerYcbcrConversionKHR -- ^ pYcbcrConversion
-                                                     -> IO VkResult
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
 
--- | > () vkDestroySamplerYcbcrConversionKHR
+-- | This is an alias for `vkCreateSamplerYcbcrConversion`.
+--
+--   Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSamplerYcbcrConversionKHR
 --   >     ( VkDevice device
---   >     , VkSamplerYcbcrConversionKHR ycbcrConversion
+--   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
 --   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSamplerYcbcrConversion* pYcbcrConversion
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroySamplerYcbcrConversionKHR.html vkDestroySamplerYcbcrConversionKHR registry at www.khronos.org>
-foreign import ccall unsafe "vkDestroySamplerYcbcrConversionKHR"
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateSamplerYcbcrConversionKHR.html vkCreateSamplerYcbcrConversionKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+-- | This is an alias for `vkDestroySamplerYcbcrConversion`.
+--
+--   > () vkDestroySamplerYcbcrConversionKHR
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySamplerYcbcrConversionKHR.html vkDestroySamplerYcbcrConversionKHR registry at www.khronos.org>
+foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
                vkDestroySamplerYcbcrConversionKHR ::
                VkDevice -- ^ device
                         ->
-                 VkSamplerYcbcrConversionKHR -- ^ ycbcrConversion
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
 
+-- | This is an alias for `vkDestroySamplerYcbcrConversion`.
+--
+--   > () vkDestroySamplerYcbcrConversionKHR
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySamplerYcbcrConversionKHR.html vkDestroySamplerYcbcrConversionKHR registry at www.khronos.org>
+foreign import ccall safe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
 pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -244,314 +316,200 @@
 is_VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
-  = eqCStrings _VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
 
 type VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME =
      "VK_KHR_sampler_ycbcr_conversion"
 
 pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR
-        = VkStructureType 1000156000
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR ::
-        VkStructureType
+        = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
 
 pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR =
-        VkStructureType 1000156001
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR ::
-        VkStructureType
+        VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
 
 pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR =
-        VkStructureType 1000156002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR
-        :: VkStructureType
+        VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
 
 pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR
-        = VkStructureType 1000156003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR
-        :: VkStructureType
+        = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR
-        = VkStructureType 1000156004
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR
-        :: VkStructureType
+        =
+        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
 
 pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR
-        = VkStructureType 1000156005
-
-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
-        :: VkDebugReportObjectTypeEXT
+        =
+        VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
 
 pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
-        = VkDebugReportObjectTypeEXT 1000156000
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR :: VkObjectType
+        = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT
 
 pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR =
-        VkObjectType 1000156000
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM_KHR :: VkFormat
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VkFormat 1000156000
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM_KHR :: VkFormat
+        VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
 
-pattern VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VkFormat 1000156001
+pattern VK_FORMAT_G8B8G8R8_422_UNORM_KHR =
+        VK_FORMAT_G8B8G8R8_422_UNORM
 
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR :: VkFormat
+pattern VK_FORMAT_B8G8R8G8_422_UNORM_KHR =
+        VK_FORMAT_B8G8R8G8_422_UNORM
 
 pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR =
-        VkFormat 1000156002
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR :: VkFormat
+        VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
 
 pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR =
-        VkFormat 1000156003
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR :: VkFormat
+        VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
 
 pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR =
-        VkFormat 1000156004
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR :: VkFormat
+        VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM
 
 pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR =
-        VkFormat 1000156005
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR :: VkFormat
+        VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
 
 pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR =
-        VkFormat 1000156006
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16_KHR :: VkFormat
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16_KHR = VkFormat 1000156007
+        VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM
 
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR :: VkFormat
+pattern VK_FORMAT_R10X6_UNORM_PACK16_KHR =
+        VK_FORMAT_R10X6_UNORM_PACK16
 
 pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR =
-        VkFormat 1000156008
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_R10X6G10X6_UNORM_2PACK16
 
 pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR =
-        VkFormat 1000156009
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
 
 pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR =
-        VkFormat 1000156010
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
 
 pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR =
-        VkFormat 1000156011
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
 
 pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR =
-        VkFormat 1000156012
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
 
 pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR =
-        VkFormat 1000156013
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
 
 pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR =
-        VkFormat 1000156014
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
 
 pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR =
-        VkFormat 1000156015
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
 
 pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR =
-        VkFormat 1000156016
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16_KHR :: VkFormat
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16_KHR = VkFormat 1000156017
+        VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
 
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR :: VkFormat
+pattern VK_FORMAT_R12X4_UNORM_PACK16_KHR =
+        VK_FORMAT_R12X4_UNORM_PACK16
 
 pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR =
-        VkFormat 1000156018
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_R12X4G12X4_UNORM_2PACK16
 
 pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR =
-        VkFormat 1000156019
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
 
 pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR =
-        VkFormat 1000156020
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
 
 pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR =
-        VkFormat 1000156021
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
 
 pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR =
-        VkFormat 1000156022
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
 
 pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR =
-        VkFormat 1000156023
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
 
 pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR =
-        VkFormat 1000156024
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
 
 pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR =
-        VkFormat 1000156025
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR ::
-        VkFormat
+        VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
 
 pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR =
-        VkFormat 1000156026
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM_KHR :: VkFormat
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VkFormat 1000156027
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM_KHR :: VkFormat
+        VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
 
-pattern VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VkFormat 1000156028
+pattern VK_FORMAT_G16B16G16R16_422_UNORM_KHR =
+        VK_FORMAT_G16B16G16R16_422_UNORM
 
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR :: VkFormat
+pattern VK_FORMAT_B16G16R16G16_422_UNORM_KHR =
+        VK_FORMAT_B16G16R16G16_422_UNORM
 
 pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR =
-        VkFormat 1000156029
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR :: VkFormat
+        VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM
 
 pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR =
-        VkFormat 1000156030
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR :: VkFormat
+        VK_FORMAT_G16_B16R16_2PLANE_420_UNORM
 
 pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR =
-        VkFormat 1000156031
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR :: VkFormat
+        VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM
 
 pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR =
-        VkFormat 1000156032
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR :: VkFormat
+        VK_FORMAT_G16_B16R16_2PLANE_422_UNORM
 
 pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR =
-        VkFormat 1000156033
-
--- | bitpos = @4@
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT_KHR :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VkImageAspectFlagBits 16
-
--- | bitpos = @5@
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT_KHR :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VkImageAspectFlagBits 32
+        VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM
 
--- | bitpos = @6@
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT_KHR :: VkImageAspectFlagBits
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT_KHR =
+        VK_IMAGE_ASPECT_PLANE_0_BIT
 
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VkImageAspectFlagBits 64
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT_KHR =
+        VK_IMAGE_ASPECT_PLANE_1_BIT
 
--- | bitpos = @9@
-pattern VK_IMAGE_CREATE_DISJOINT_BIT_KHR :: VkImageCreateFlagBits
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT_KHR =
+        VK_IMAGE_ASPECT_PLANE_2_BIT
 
 pattern VK_IMAGE_CREATE_DISJOINT_BIT_KHR =
-        VkImageCreateFlagBits 512
-
--- | Format can have midpoint rather than cosited chroma samples
---
---   bitpos = @17@
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR ::
-        VkFormatFeatureFlagBits
+        VK_IMAGE_CREATE_DISJOINT_BIT
 
 pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR =
-        VkFormatFeatureFlagBits 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_KHR
-        :: VkFormatFeatureFlagBits
+        VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
 
 pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR
-        = VkFormatFeatureFlagBits 262144
-
--- | Format can have different chroma, min and mag filters
---
---   bitpos = @19@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
-        :: VkFormatFeatureFlagBits
+        =
+        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
 
 pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
-        = VkFormatFeatureFlagBits 524288
-
--- | bitpos = @20@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
-        :: VkFormatFeatureFlagBits
+        =
+        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
 
 pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
-        = VkFormatFeatureFlagBits 1048576
+        =
+        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
 
--- | bitpos = @21@
 pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
-        :: VkFormatFeatureFlagBits
+        =
+        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
 
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
-        = VkFormatFeatureFlagBits 2097152
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR =
+        VK_FORMAT_FEATURE_DISJOINT_BIT
 
--- | Format supports disjoint planes
---
---   bitpos = @22@
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR ::
-        VkFormatFeatureFlagBits
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR =
+        VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
 
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR =
-        VkFormatFeatureFlagBits 4194304
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR =
+        VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
 
--- | Format can have cosited rather than midpoint chroma samples
---
---   bitpos = @23@
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR ::
-        VkFormatFeatureFlagBits
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR =
+        VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
 
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR =
-        VkFormatFeatureFlagBits 8388608
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR =
+        VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR =
+        VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR =
+        VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
+
+pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR =
+        VK_SAMPLER_YCBCR_RANGE_ITU_FULL
+
+pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR =
+        VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
+
+pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR =
+        VK_CHROMA_LOCATION_COSITED_EVEN
+
+pattern VK_CHROMA_LOCATION_MIDPOINT_KHR =
+        VK_CHROMA_LOCATION_MIDPOINT
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
@@ -49,7 +49,8 @@
 
 is_VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
-  = eqCStrings _VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
 
 type VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME =
      "VK_KHR_shader_draw_parameters"
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
@@ -33,7 +33,7 @@
         module Graphics.Vulkan.Types.Struct.VkSurfaceCapabilitiesKHR,
         module Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR,
         -- > #include "vk_platform.h"
-        vkGetSwapchainStatusKHR,
+        vkGetSwapchainStatusKHR, vkGetSwapchainStatusKHRSafe,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION,
@@ -73,13 +73,29 @@
 --   >     , VkSwapchainKHR swapchain
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetSwapchainStatusKHR.html vkGetSwapchainStatusKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSwapchainStatusKHR.html vkGetSwapchainStatusKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetSwapchainStatusKHR"
                vkGetSwapchainStatusKHR ::
                VkDevice -- ^ device
                         -> VkSwapchainKHR -- ^ swapchain
                                           -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetSwapchainStatusKHR
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSwapchainStatusKHR.html vkGetSwapchainStatusKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetSwapchainStatusKHR"
+               vkGetSwapchainStatusKHRSafe ::
+               VkDevice -- ^ device
+                        -> VkSwapchainKHR -- ^ swapchain
+                                          -> IO VkResult
+
 pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -105,7 +121,8 @@
 is_VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
 
 type VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME =
      "VK_KHR_shared_presentable_image"
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
@@ -52,7 +52,8 @@
 is_VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME ::
                                                       CString -> Bool
 is_VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-  = eqCStrings _VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
 
 type VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME =
      "VK_KHR_storage_buffer_storage_class"
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
@@ -19,10 +19,15 @@
         -- type: @instance@
         --
         -- Extension number: @1@
-        vkDestroySurfaceKHR, vkGetPhysicalDeviceSurfaceSupportKHR,
+        vkDestroySurfaceKHR, vkDestroySurfaceKHRSafe,
+        vkGetPhysicalDeviceSurfaceSupportKHR,
+        vkGetPhysicalDeviceSurfaceSupportKHRSafe,
         vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
+        vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe,
         vkGetPhysicalDeviceSurfaceFormatsKHR,
+        vkGetPhysicalDeviceSurfaceFormatsKHRSafe,
         vkGetPhysicalDeviceSurfacePresentModesKHR,
+        vkGetPhysicalDeviceSurfacePresentModesKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Enum.VkColorSpaceKHR,
@@ -74,7 +79,7 @@
 --   >     , const VkAllocationCallbacks* pAllocator
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroySurfaceKHR.html vkDestroySurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySurfaceKHR.html vkDestroySurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkDestroySurfaceKHR"
                vkDestroySurfaceKHR ::
                VkInstance -- ^ instance
@@ -82,6 +87,20 @@
                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                        -> IO ()
 
+-- | > () vkDestroySurfaceKHR
+--   >     ( VkInstance instance
+--   >     , VkSurfaceKHR surface
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySurfaceKHR.html vkDestroySurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkDestroySurfaceKHR"
+               vkDestroySurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          -> VkSurfaceKHR -- ^ surface
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -93,7 +112,7 @@
 --   >     , VkBool32* pSupported
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceSupportKHR"
                vkGetPhysicalDeviceSurfaceSupportKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -107,13 +126,34 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
 --
+--   > VkResult vkGetPhysicalDeviceSurfaceSupportKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t queueFamilyIndex
+--   >     , VkSurfaceKHR surface
+--   >     , VkBool32* pSupported
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceSurfaceSupportKHR"
+               vkGetPhysicalDeviceSurfaceSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Word32 -- ^ queueFamilyIndex
+                        -> VkSurfaceKHR -- ^ surface
+                                        -> Ptr VkBool32 -- ^ pSupported
+                                                        -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
 --   > VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , VkSurfaceKHR surface
 --   >     , VkSurfaceCapabilitiesKHR* pSurfaceCapabilities
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
                vkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
@@ -123,6 +163,26 @@
                               -> Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
                                                               -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSurfaceKHR surface
+--   >     , VkSurfaceCapabilitiesKHR* pSurfaceCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
+               vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
+                                                              -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -134,7 +194,7 @@
 --   >     , VkSurfaceFormatKHR* pSurfaceFormats
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceFormatsKHR"
                vkGetPhysicalDeviceSurfaceFormatsKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -148,6 +208,27 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
 --
+--   > VkResult vkGetPhysicalDeviceSurfaceFormatsKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSurfaceKHR surface
+--   >     , uint32_t* pSurfaceFormatCount
+--   >     , VkSurfaceFormatKHR* pSurfaceFormats
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDeviceSurfaceFormatsKHR"
+               vkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr Word32 -- ^ pSurfaceFormatCount
+                                            -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
+                                                                      -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
 --   > VkResult vkGetPhysicalDeviceSurfacePresentModesKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , VkSurfaceKHR surface
@@ -155,7 +236,7 @@
 --   >     , VkPresentModeKHR* pPresentModes
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfacePresentModesKHR"
                vkGetPhysicalDeviceSurfacePresentModesKHR ::
@@ -166,6 +247,28 @@
                                             -> Ptr VkPresentModeKHR -- ^ pPresentModes
                                                                     -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetPhysicalDeviceSurfacePresentModesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSurfaceKHR surface
+--   >     , uint32_t* pPresentModeCount
+--   >     , VkPresentModeKHR* pPresentModes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceSurfacePresentModesKHR"
+               vkGetPhysicalDeviceSurfacePresentModesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr Word32 -- ^ pPresentModeCount
+                                            -> Ptr VkPresentModeKHR -- ^ pPresentModes
+                                                                    -> IO VkResult
+
 pattern VK_KHR_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_SURFACE_SPEC_VERSION = 25
@@ -188,7 +291,7 @@
 
 is_VK_KHR_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_SURFACE_EXTENSION_NAME
 
 type VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds                #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
@@ -23,8 +24,11 @@
         --
 
         -- ** Required extensions: 'VK_KHR_surface'.
-        vkCreateSwapchainKHR, vkDestroySwapchainKHR,
-        vkGetSwapchainImagesKHR, vkAcquireNextImageKHR, vkQueuePresentKHR,
+        vkCreateSwapchainKHR, vkCreateSwapchainKHRSafe,
+        vkDestroySwapchainKHR, vkDestroySwapchainKHRSafe,
+        vkGetSwapchainImagesKHR, vkGetSwapchainImagesKHRSafe,
+        vkAcquireNextImageKHR, vkAcquireNextImageKHRSafe,
+        vkQueuePresentKHR, vkQueuePresentKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Enum.VkColorSpaceKHR,
@@ -53,20 +57,61 @@
         pattern VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
         pattern VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, pattern VK_SUBOPTIMAL_KHR,
         pattern VK_ERROR_OUT_OF_DATE_KHR,
-        pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR)
+        pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR,
+        -- ** Required extensions: 'VK_KHR_surface'.
+        module Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo,
+        module Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHR,
+        module Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR,
+        module Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHR,
+        module Graphics.Vulkan.Types.Struct.VkExtent3D,
+        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
+        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
+        module Graphics.Vulkan.Types.Enum.VkImageLayout,
+        module Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHR,
+        module Graphics.Vulkan.Types.Enum.VkImageTiling,
+        module Graphics.Vulkan.Types.Enum.VkImageType,
+        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
+        -- > #include "vk_platform.h"
+        vkGetDeviceGroupPresentCapabilitiesKHR,
+        vkGetDeviceGroupPresentCapabilitiesKHRSafe,
+        vkGetDeviceGroupSurfacePresentModesKHR,
+        vkGetDeviceGroupSurfacePresentModesKHRSafe,
+        vkGetPhysicalDevicePresentRectanglesKHR,
+        vkGetPhysicalDevicePresentRectanglesKHRSafe,
+        vkAcquireNextImage2KHR, vkAcquireNextImage2KHRSafe,
+        module Graphics.Vulkan.Types.Struct.VkOffset2D,
+        module Graphics.Vulkan.Types.Struct.VkRect2D,
+        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,
+        pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
+        pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
+        pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR)
        where
-import           GHC.Ptr                                               (Ptr (..))
+import           GHC.Ptr
+                                                                                   (Ptr (..))
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Types.BaseTypes
 import           Graphics.Vulkan.Types.Enum.VkColorSpaceKHR
 import           Graphics.Vulkan.Types.Enum.VkCompositeAlphaFlagsKHR
+import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR
 import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkImageLayout              (VkImageLayout (..))
+import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
+import           Graphics.Vulkan.Types.Enum.VkImageLayout
+import           Graphics.Vulkan.Types.Enum.VkImageTiling
+import           Graphics.Vulkan.Types.Enum.VkImageType
 import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
 import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
-import           Graphics.Vulkan.Types.Enum.VkObjectType               (VkObjectType (..))
+import           Graphics.Vulkan.Types.Enum.VkObjectType
+                                                                                   (VkObjectType (..))
 import           Graphics.Vulkan.Types.Enum.VkPresentModeKHR
 import           Graphics.Vulkan.Types.Enum.VkResult
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
 import           Graphics.Vulkan.Types.Enum.VkSharingMode
 import           Graphics.Vulkan.Types.Enum.VkStructureType
 import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR
@@ -74,9 +119,20 @@
 import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
 import           Graphics.Vulkan.Types.Funcpointers
 import           Graphics.Vulkan.Types.Handles
+import           Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHR
 import           Graphics.Vulkan.Types.Struct.VkExtent2D
+import           Graphics.Vulkan.Types.Struct.VkExtent3D
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
+import           Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkOffset2D
 import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR
+import           Graphics.Vulkan.Types.Struct.VkRect2D
 import           Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -90,7 +146,7 @@
 --   >     , VkSwapchainKHR* pSwapchain
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateSwapchainKHR.html vkCreateSwapchainKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateSwapchainKHR.html vkCreateSwapchainKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateSwapchainKHR"
                vkCreateSwapchainKHR ::
                VkDevice -- ^ device
@@ -101,13 +157,35 @@
                                              -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                    -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+--   > VkResult vkCreateSwapchainKHR
+--   >     ( VkDevice device
+--   >     , const VkSwapchainCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSwapchainKHR* pSwapchain
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateSwapchainKHR.html vkCreateSwapchainKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateSwapchainKHR"
+               vkCreateSwapchainKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSwapchainCreateInfoKHR -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSwapchainKHR -- ^ pSwapchain
+                                                                   -> IO VkResult
+
 -- | > () vkDestroySwapchainKHR
 --   >     ( VkDevice device
 --   >     , VkSwapchainKHR swapchain
 --   >     , const VkAllocationCallbacks* pAllocator
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroySwapchainKHR.html vkDestroySwapchainKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySwapchainKHR.html vkDestroySwapchainKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkDestroySwapchainKHR"
                vkDestroySwapchainKHR ::
                VkDevice -- ^ device
@@ -115,6 +193,20 @@
                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                        -> IO ()
 
+-- | > () vkDestroySwapchainKHR
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroySwapchainKHR.html vkDestroySwapchainKHR registry at www.khronos.org>
+foreign import ccall safe "vkDestroySwapchainKHR"
+               vkDestroySwapchainKHRSafe ::
+               VkDevice -- ^ device
+                        -> VkSwapchainKHR -- ^ swapchain
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -126,7 +218,7 @@
 --   >     , VkImage* pSwapchainImages
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetSwapchainImagesKHR.html vkGetSwapchainImagesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSwapchainImagesKHR.html vkGetSwapchainImagesKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkGetSwapchainImagesKHR"
                vkGetSwapchainImagesKHR ::
                VkDevice -- ^ device
@@ -136,6 +228,27 @@
                                               -> Ptr VkImage -- ^ pSwapchainImages
                                                              -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetSwapchainImagesKHR
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     , uint32_t* pSwapchainImageCount
+--   >     , VkImage* pSwapchainImages
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetSwapchainImagesKHR.html vkGetSwapchainImagesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetSwapchainImagesKHR"
+               vkGetSwapchainImagesKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSwapchainKHR -- ^ swapchain
+                                -> Ptr Word32 -- ^ pSwapchainImageCount
+                                              -> Ptr VkImage -- ^ pSwapchainImages
+                                                             -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -149,7 +262,7 @@
 --   >     , uint32_t* pImageIndex
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkAcquireNextImageKHR.html vkAcquireNextImageKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkAcquireNextImageKHR.html vkAcquireNextImageKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkAcquireNextImageKHR"
                vkAcquireNextImageKHR ::
                VkDevice -- ^ device
@@ -162,6 +275,32 @@
                                                     -> Ptr Word32 -- ^ pImageIndex
                                                                   -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkAcquireNextImageKHR
+--   >     ( VkDevice device
+--   >     , VkSwapchainKHR swapchain
+--   >     , uint64_t timeout
+--   >     , VkSemaphore semaphore
+--   >     , VkFence fence
+--   >     , uint32_t* pImageIndex
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkAcquireNextImageKHR.html vkAcquireNextImageKHR registry at www.khronos.org>
+foreign import ccall safe "vkAcquireNextImageKHR"
+               vkAcquireNextImageKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSwapchainKHR -- ^ swapchain
+                                ->
+                   Word64 -- ^ timeout
+                          -> VkSemaphore -- ^ semaphore
+                                         -> VkFence -- ^ fence
+                                                    -> Ptr Word32 -- ^ pImageIndex
+                                                                  -> IO VkResult
+
 -- | Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
@@ -171,17 +310,32 @@
 --   >     , const VkPresentInfoKHR* pPresentInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkQueuePresentKHR.html vkQueuePresentKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueuePresentKHR.html vkQueuePresentKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkQueuePresentKHR" vkQueuePresentKHR
                :: VkQueue -- ^ queue
                           -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                   -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkQueuePresentKHR
+--   >     ( VkQueue queue
+--   >     , const VkPresentInfoKHR* pPresentInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkQueuePresentKHR.html vkQueuePresentKHR registry at www.khronos.org>
+foreign import ccall safe "vkQueuePresentKHR" vkQueuePresentKHRSafe
+               :: VkQueue -- ^ queue
+                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
+                                                  -> IO VkResult
+
 pattern VK_KHR_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a
 
-pattern VK_KHR_SWAPCHAIN_SPEC_VERSION = 68
+pattern VK_KHR_SWAPCHAIN_SPEC_VERSION = 70
 
-type VK_KHR_SWAPCHAIN_SPEC_VERSION = 68
+type VK_KHR_SWAPCHAIN_SPEC_VERSION = 70
 
 pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString
 
@@ -199,7 +353,7 @@
 
 is_VK_KHR_SWAPCHAIN_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_SWAPCHAIN_EXTENSION_NAME
-  = eqCStrings _VK_KHR_SWAPCHAIN_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_SWAPCHAIN_EXTENSION_NAME
 
 type VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain"
 
@@ -230,3 +384,210 @@
 pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR :: VkObjectType
 
 pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR = VkObjectType 1000001000
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
+--   >     ( VkDevice device
+--   >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetDeviceGroupPresentCapabilitiesKHR"
+               vkGetDeviceGroupPresentCapabilitiesKHR ::
+               VkDevice -- ^ device
+                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
+                                                                   -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
+--   >     ( VkDevice device
+--   >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceGroupPresentCapabilitiesKHR"
+               vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
+                                                                   -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetDeviceGroupSurfacePresentModesKHR
+--   >     ( VkDevice device
+--   >     , VkSurfaceKHR surface
+--   >     , VkDeviceGroupPresentModeFlagsKHR* pModes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetDeviceGroupSurfacePresentModesKHR"
+               vkGetDeviceGroupSurfacePresentModesKHR ::
+               VkDevice -- ^ device
+                        ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
+                                                                      -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkGetDeviceGroupSurfacePresentModesKHR
+--   >     ( VkDevice device
+--   >     , VkSurfaceKHR surface
+--   >     , VkDeviceGroupPresentModeFlagsKHR* pModes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetDeviceGroupSurfacePresentModesKHR"
+               vkGetDeviceGroupSurfacePresentModesKHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
+                                                                      -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPhysicalDevicePresentRectanglesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSurfaceKHR surface
+--   >     , uint32_t* pRectCount
+--   >     , VkRect2D* pRects
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
+foreign import ccall unsafe
+               "vkGetPhysicalDevicePresentRectanglesKHR"
+               vkGetPhysicalDevicePresentRectanglesKHR ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr Word32 -- ^ pRectCount
+                                            -> Ptr VkRect2D -- ^ pRects
+                                                            -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPhysicalDevicePresentRectanglesKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkSurfaceKHR surface
+--   >     , uint32_t* pRectCount
+--   >     , VkRect2D* pRects
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
+foreign import ccall safe "vkGetPhysicalDevicePresentRectanglesKHR"
+               vkGetPhysicalDevicePresentRectanglesKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkSurfaceKHR -- ^ surface
+                              -> Ptr Word32 -- ^ pRectCount
+                                            -> Ptr VkRect2D -- ^ pRects
+                                                            -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkAcquireNextImage2KHR
+--   >     ( VkDevice device
+--   >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
+--   >     , uint32_t* pImageIndex
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkAcquireNextImage2KHR.html vkAcquireNextImage2KHR registry at www.khronos.org>
+foreign import ccall unsafe "vkAcquireNextImage2KHR"
+               vkAcquireNextImage2KHR ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
+                                               -> Ptr Word32 -- ^ pImageIndex
+                                                             -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
+--
+--   > VkResult vkAcquireNextImage2KHR
+--   >     ( VkDevice device
+--   >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
+--   >     , uint32_t* pImageIndex
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkAcquireNextImage2KHR.html vkAcquireNextImage2KHR registry at www.khronos.org>
+foreign import ccall safe "vkAcquireNextImage2KHR"
+               vkAcquireNextImage2KHRSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
+                                               -> Ptr Word32 -- ^ pImageIndex
+                                                             -> IO VkResult
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR =
+        VkStructureType 1000060007
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR =
+        VkStructureType 1000060008
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR =
+        VkStructureType 1000060009
+
+pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR =
+        VkStructureType 1000060010
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR =
+        VkStructureType 1000060011
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR =
+        VkStructureType 1000060012
+
+-- | Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
+--
+--   bitpos = @0@
+pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR ::
+        VkSwapchainCreateFlagBitsKHR
+
+pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR =
+        VkSwapchainCreateFlagBitsKHR 1
+
+-- | Swapchain is protected
+--
+--   bitpos = @1@
+pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR ::
+        VkSwapchainCreateFlagBitsKHR
+
+pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR =
+        VkSwapchainCreateFlagBitsKHR 2
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
 {-# OPTIONS_HADDOCK not-home#-}
 {-# LANGUAGE DataKinds       #-}
 {-# LANGUAGE MagicHash       #-}
@@ -22,16 +23,7 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_storage_buffer_storage_class'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeaturesKHR,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
         VK_KHR_VARIABLE_POINTERS_SPEC_VERSION,
         pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION,
         VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME,
@@ -40,14 +32,9 @@
        where
 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.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeaturesKHR
 
 pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION :: (Num a, Eq a) => a
@@ -73,13 +60,10 @@
 
 is_VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
-  = eqCStrings _VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
 
 type VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME =
      "VK_KHR_variable_pointers"
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR
-        = VkStructureType 1000120000
+        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @wayland@
+        --
         -- Extension number: @7@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WAYLAND_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,10 +30,9 @@
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkWaylandSurfaceCreateInfoKHR,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <wayland-client.h>
-        vkCreateWaylandSurfaceKHR,
+        vkCreateWaylandSurfaceKHR, vkCreateWaylandSurfaceKHRSafe,
         vkGetPhysicalDeviceWaylandPresentationSupportKHR,
+        vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -73,7 +72,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateWaylandSurfaceKHR.html vkCreateWaylandSurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateWaylandSurfaceKHR.html vkCreateWaylandSurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateWaylandSurfaceKHR"
                vkCreateWaylandSurfaceKHR ::
                VkInstance -- ^ instance
@@ -84,13 +83,35 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateWaylandSurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkWaylandSurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateWaylandSurfaceKHR.html vkCreateWaylandSurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateWaylandSurfaceKHR"
+               vkCreateWaylandSurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkWaylandSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                   ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 -- | > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
 --   >     , struct wl_display* display
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
                vkGetPhysicalDeviceWaylandPresentationSupportKHR ::
@@ -99,6 +120,21 @@
                                           -> Ptr WlDisplay -- ^ display
                                                            -> IO VkBool32
 
+-- | > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t queueFamilyIndex
+--   >     , struct wl_display* display
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
+               vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> Ptr WlDisplay -- ^ display
+                                                           -> IO VkBool32
+
 pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6
@@ -122,7 +158,7 @@
 
 is_VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
 
 type VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME =
      "VK_KHR_wayland_surface"
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
@@ -16,12 +16,12 @@
         --
         -- type: @device@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @76@
         --
         -- Required extensions: 'VK_KHR_external_memory_win32'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_external_memory_win32'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -68,7 +68,7 @@
 
 is_VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
-  = eqCStrings _VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
 
 type VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME =
      "VK_KHR_win32_keyed_mutex"
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @10@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,10 +30,9 @@
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkWin32SurfaceCreateInfoKHR,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <windows.h>
-        vkCreateWin32SurfaceKHR,
+        vkCreateWin32SurfaceKHR, vkCreateWin32SurfaceKHRSafe,
         vkGetPhysicalDeviceWin32PresentationSupportKHR,
+        vkGetPhysicalDeviceWin32PresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -73,7 +72,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateWin32SurfaceKHR.html vkCreateWin32SurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateWin32SurfaceKHR.html vkCreateWin32SurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateWin32SurfaceKHR"
                vkCreateWin32SurfaceKHR ::
                VkInstance -- ^ instance
@@ -84,12 +83,34 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateWin32SurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkWin32SurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateWin32SurfaceKHR.html vkCreateWin32SurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateWin32SurfaceKHR"
+               vkCreateWin32SurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkWin32SurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                 ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 -- | > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceWin32PresentationSupportKHR"
                vkGetPhysicalDeviceWin32PresentationSupportKHR ::
@@ -97,6 +118,19 @@
                                 -> Word32 -- ^ queueFamilyIndex
                                           -> IO VkBool32
 
+-- | > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t queueFamilyIndex
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceWin32PresentationSupportKHR"
+               vkGetPhysicalDeviceWin32PresentationSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> IO VkBool32
+
 pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6
@@ -120,7 +154,7 @@
 
 is_VK_KHR_WIN32_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_WIN32_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_WIN32_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_WIN32_SURFACE_EXTENSION_NAME
 
 type VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface"
 
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @xcb@
+        --
         -- Extension number: @6@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_XCB_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,10 +30,9 @@
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkXcbSurfaceCreateInfoKHR,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <xcb/xcb.h>
-        vkCreateXcbSurfaceKHR,
+        vkCreateXcbSurfaceKHR, vkCreateXcbSurfaceKHRSafe,
         vkGetPhysicalDeviceXcbPresentationSupportKHR,
+        vkGetPhysicalDeviceXcbPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -73,7 +72,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateXcbSurfaceKHR.html vkCreateXcbSurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateXcbSurfaceKHR.html vkCreateXcbSurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateXcbSurfaceKHR"
                vkCreateXcbSurfaceKHR ::
                VkInstance -- ^ instance
@@ -84,6 +83,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateXcbSurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkXcbSurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateXcbSurfaceKHR.html vkCreateXcbSurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateXcbSurfaceKHR"
+               vkCreateXcbSurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkXcbSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 -- | > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -91,7 +112,7 @@
 --   >     , xcb_visualid_t visual_id
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceXcbPresentationSupportKHR"
                vkGetPhysicalDeviceXcbPresentationSupportKHR ::
@@ -102,6 +123,24 @@
                                               -> XcbVisualidT -- ^ visual_id
                                                               -> IO VkBool32
 
+-- | > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t queueFamilyIndex
+--   >     , xcb_connection_t* connection
+--   >     , xcb_visualid_t visual_id
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceXcbPresentationSupportKHR"
+               vkGetPhysicalDeviceXcbPresentationSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Word32 -- ^ queueFamilyIndex
+                        -> Ptr XcbConnectionT -- ^ connection
+                                              -> XcbVisualidT -- ^ visual_id
+                                                              -> IO VkBool32
+
 pattern VK_KHR_XCB_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_XCB_SURFACE_SPEC_VERSION = 6
@@ -124,7 +163,7 @@
 
 is_VK_KHR_XCB_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_XCB_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_XCB_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_XCB_SURFACE_EXTENSION_NAME
 
 type VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface"
 
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @xlib@
+        --
         -- Extension number: @5@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_XLIB_KHR@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,10 +30,9 @@
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkXlibSurfaceCreateInfoKHR,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <X11/Xlib.h>
-        vkCreateXlibSurfaceKHR,
+        vkCreateXlibSurfaceKHR, vkCreateXlibSurfaceKHRSafe,
         vkGetPhysicalDeviceXlibPresentationSupportKHR,
+        vkGetPhysicalDeviceXlibPresentationSupportKHRSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -73,7 +72,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateXlibSurfaceKHR.html vkCreateXlibSurfaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateXlibSurfaceKHR.html vkCreateXlibSurfaceKHR registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateXlibSurfaceKHR"
                vkCreateXlibSurfaceKHR ::
                VkInstance -- ^ instance
@@ -84,6 +83,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateXlibSurfaceKHR
+--   >     ( VkInstance instance
+--   >     , const VkXlibSurfaceCreateInfoKHR* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateXlibSurfaceKHR.html vkCreateXlibSurfaceKHR registry at www.khronos.org>
+foreign import ccall safe "vkCreateXlibSurfaceKHR"
+               vkCreateXlibSurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkXlibSurfaceCreateInfoKHR -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 -- | > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , uint32_t queueFamilyIndex
@@ -91,7 +112,7 @@
 --   >     , VisualID visualID
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceXlibPresentationSupportKHR"
                vkGetPhysicalDeviceXlibPresentationSupportKHR ::
@@ -102,6 +123,24 @@
                                        -> VisualID -- ^ visualID
                                                    -> IO VkBool32
 
+-- | > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t queueFamilyIndex
+--   >     , Display* dpy
+--   >     , VisualID visualID
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceXlibPresentationSupportKHR"
+               vkGetPhysicalDeviceXlibPresentationSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Word32 -- ^ queueFamilyIndex
+                        -> Ptr Display -- ^ dpy
+                                       -> VisualID -- ^ visualID
+                                                   -> IO VkBool32
+
 pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6
@@ -125,7 +164,7 @@
 
 is_VK_KHR_XLIB_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_KHR_XLIB_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_KHR_XLIB_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_KHR_XLIB_SURFACE_EXTENSION_NAME
 
 type VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface"
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHX_device_group.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHX_device_group.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHX_device_group.hs
+++ /dev/null
@@ -1,481 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-{-# OPTIONS_HADDOCK not-home#-}
-{-# LANGUAGE DataKinds                #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE MagicHash                #-}
-{-# LANGUAGE PatternSynonyms          #-}
-{-# LANGUAGE Strict                   #-}
-{-# LANGUAGE ViewPatterns             #-}
-module Graphics.Vulkan.Ext.VK_KHX_device_group
-       (-- * Vulkan extension: @VK_KHX_device_group@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jeff Bolz @jbolz@
-        --
-        -- author: @KHX@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @61@
-        --
-        -- Required extensions: 'VK_KHX_device_group_creation'.
-        --
-
-        -- ** Required extensions: 'VK_KHX_device_group_creation'.
-        module Graphics.Vulkan.Types.Struct.VkBindSparseInfo,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Struct.VkClearColorValue,
-        module Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue,
-        module Graphics.Vulkan.Types.Struct.VkClearValue,
-        module Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo,
-        module Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo,
-        module Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkExtent2D,
-        module Graphics.Vulkan.Types.Struct.VkExtent3D,
-        module Graphics.Vulkan.Types.Enum.VkImageAspectFlags,
-        module Graphics.Vulkan.Types.Struct.VkImageSubresource,
-        module Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagsKHX,
-        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
-        module Graphics.Vulkan.Types.Struct.VkOffset2D,
-        module Graphics.Vulkan.Types.Struct.VkOffset3D,
-        module Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagsKHX,
-        module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
-        module Graphics.Vulkan.Types.Enum.VkQueryControlFlags,
-        module Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags,
-        module Graphics.Vulkan.Types.Struct.VkRect2D,
-        module Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo,
-        module Graphics.Vulkan.Types.Struct.VkSparseMemoryBind,
-        module Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        module Graphics.Vulkan.Types.Struct.VkSubmitInfo,
-        -- > #include "vk_platform.h"
-        vkGetDeviceGroupPeerMemoryFeaturesKHX, vkCmdSetDeviceMaskKHX,
-        vkCmdDispatchBaseKHX, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Handles,
-        VK_KHX_DEVICE_GROUP_SPEC_VERSION,
-        pattern VK_KHX_DEVICE_GROUP_SPEC_VERSION,
-        VK_KHX_DEVICE_GROUP_EXTENSION_NAME,
-        pattern VK_KHX_DEVICE_GROUP_EXTENSION_NAME,
-        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
-        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
-        pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHX,
-        pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX,
-        -- ** Required extensions: 'VK_KHR_bind_memory2', 'VK_KHX_device_group_creation'.
-        module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR,
-        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX,
-        pattern VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
-        -- ** Required extensions: 'VK_KHR_surface', 'VK_KHX_device_group_creation'.
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHX,
-        module Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHX,
-        -- > #include "vk_platform.h"
-        vkGetDeviceGroupPresentCapabilitiesKHX,
-        vkGetDeviceGroupSurfacePresentModesKHX,
-        vkGetPhysicalDevicePresentRectanglesKHX,
-        module Graphics.Vulkan.Types.Enum.VkResult,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
-        -- ** Required extensions: 'VK_KHR_swapchain', 'VK_KHX_device_group_creation'.
-        module Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHX,
-        module Graphics.Vulkan.Types.Enum.VkColorSpaceKHR,
-        module Graphics.Vulkan.Types.Enum.VkCompositeAlphaFlagsKHR,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHX,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
-        module Graphics.Vulkan.Types.Struct.VkImageCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkImageLayout,
-        module Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHX,
-        module Graphics.Vulkan.Types.Enum.VkImageTiling,
-        module Graphics.Vulkan.Types.Enum.VkImageType,
-        module Graphics.Vulkan.Types.Enum.VkImageUsageFlags,
-        module Graphics.Vulkan.Types.Struct.VkPresentInfoKHR,
-        module Graphics.Vulkan.Types.Enum.VkPresentModeKHR,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkSharingMode,
-        module Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.VkSwapchainCreateFlagsKHR,
-        module Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR,
-        -- > #include "vk_platform.h"
-        vkAcquireNextImage2KHX,
-        pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
-        pattern VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX)
-       where
-import           GHC.Ptr
-                                                                                      (Ptr (..))
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Enum.VkColorSpaceKHR
-import           Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkCompositeAlphaFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkDependencyFlags
-                                                                                      (VkDependencyBitmask (..),
-                                                                                      VkDependencyFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHX
-import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags
-import           Graphics.Vulkan.Types.Enum.VkImageLayout
-import           Graphics.Vulkan.Types.Enum.VkImageTiling
-import           Graphics.Vulkan.Types.Enum.VkImageType
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags
-import           Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagsKHX
-import           Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagsKHX
-import           Graphics.Vulkan.Types.Enum.VkPipelineCreateFlags
-                                                                                      (VkPipelineCreateBitmask (..),
-                                                                                      VkPipelineCreateFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
-import           Graphics.Vulkan.Types.Enum.VkPresentModeKHR
-import           Graphics.Vulkan.Types.Enum.VkQueryControlFlags
-import           Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags
-import           Graphics.Vulkan.Types.Enum.VkResult
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
-import           Graphics.Vulkan.Types.Enum.VkSharingMode
-import           Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR
-import           Graphics.Vulkan.Types.Enum.VkSwapchainCreateFlagsKHR
-import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkBindSparseInfo
-import           Graphics.Vulkan.Types.Struct.VkClearColorValue
-import           Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue
-import           Graphics.Vulkan.Types.Struct.VkClearValue
-import           Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo
-import           Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkExtent2D
-import           Graphics.Vulkan.Types.Struct.VkExtent3D
-import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkImageSubresource
-import           Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
-import           Graphics.Vulkan.Types.Struct.VkOffset2D
-import           Graphics.Vulkan.Types.Struct.VkOffset3D
-import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR
-import           Graphics.Vulkan.Types.Struct.VkRect2D
-import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind
-import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo
-import           Graphics.Vulkan.Types.Struct.VkSparseMemoryBind
-import           Graphics.Vulkan.Types.Struct.VkSubmitInfo
-import           Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR
-
--- | > () vkGetDeviceGroupPeerMemoryFeaturesKHX
---   >     ( VkDevice device
---   >     , uint32_t heapIndex
---   >     , uint32_t localDeviceIndex
---   >     , uint32_t remoteDeviceIndex
---   >     , VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHX.html vkGetDeviceGroupPeerMemoryFeaturesKHX registry at www.khronos.org>
-foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeaturesKHX"
-               vkGetDeviceGroupPeerMemoryFeaturesKHX ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        ->
-                   Word32 -- ^ localDeviceIndex
-                          -> Word32 -- ^ remoteDeviceIndex
-                                    -> Ptr VkPeerMemoryFeatureFlagsKHX -- ^ pPeerMemoryFeatures
-                                                                       -> IO ()
-
--- | queues: 'graphics', 'compute', 'transfer'.
---
---   renderpass: @both@
---
---   > () vkCmdSetDeviceMaskKHX
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t deviceMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetDeviceMaskKHX.html vkCmdSetDeviceMaskKHX registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdSetDeviceMaskKHX"
-               vkCmdSetDeviceMaskKHX :: VkCommandBuffer -- ^ commandBuffer
-                                                        -> Word32 -- ^ deviceMask
-                                                                  -> IO ()
-
--- | queues: 'compute'.
---
---   renderpass: @outside@
---
---   > () vkCmdDispatchBaseKHX
---   >     ( 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.0-extensions/man/html/vkCmdDispatchBaseKHX.html vkCmdDispatchBaseKHX registry at www.khronos.org>
-foreign import ccall unsafe "vkCmdDispatchBaseKHX"
-               vkCmdDispatchBaseKHX ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-pattern VK_KHX_DEVICE_GROUP_SPEC_VERSION :: (Num a, Eq a) => a
-
-pattern VK_KHX_DEVICE_GROUP_SPEC_VERSION = 2
-
-type VK_KHX_DEVICE_GROUP_SPEC_VERSION = 2
-
-pattern VK_KHX_DEVICE_GROUP_EXTENSION_NAME :: CString
-
-pattern VK_KHX_DEVICE_GROUP_EXTENSION_NAME <-
-        (is_VK_KHX_DEVICE_GROUP_EXTENSION_NAME -> True)
-  where VK_KHX_DEVICE_GROUP_EXTENSION_NAME
-          = _VK_KHX_DEVICE_GROUP_EXTENSION_NAME
-
-{-# INLINE _VK_KHX_DEVICE_GROUP_EXTENSION_NAME #-}
-
-_VK_KHX_DEVICE_GROUP_EXTENSION_NAME :: CString
-_VK_KHX_DEVICE_GROUP_EXTENSION_NAME
-  = Ptr "VK_KHX_device_group\NUL"#
-
-{-# INLINE is_VK_KHX_DEVICE_GROUP_EXTENSION_NAME #-}
-
-is_VK_KHX_DEVICE_GROUP_EXTENSION_NAME :: CString -> Bool
-is_VK_KHX_DEVICE_GROUP_EXTENSION_NAME
-  = eqCStrings _VK_KHX_DEVICE_GROUP_EXTENSION_NAME
-
-type VK_KHX_DEVICE_GROUP_EXTENSION_NAME = "VK_KHX_device_group"
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX =
-        VkStructureType 1000060000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX =
-        VkStructureType 1000060003
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX
-        = VkStructureType 1000060004
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX =
-        VkStructureType 1000060005
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX =
-        VkStructureType 1000060006
-
-pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX =
-        VkStructureType 1000060010
-
--- | bitpos = @3@
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX ::
-        VkPipelineCreateFlagBits
-
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX =
-        VkPipelineCreateFlagBits 8
-
--- | bitpos = @4@
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHX ::
-        VkPipelineCreateFlagBits
-
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHX =
-        VkPipelineCreateFlagBits 16
-
--- | Dependency is across devices
---
---   bitpos = @2@
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX :: VkDependencyFlagBits
-
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = VkDependencyFlagBits 4
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX
-        = VkStructureType 1000060013
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX =
-        VkStructureType 1000060014
-
--- | Allows using VkBindImageMemoryDeviceGroupInfoKHX::pSFRRects when binding memory to the image
---
---   bitpos = @6@
-pattern VK_IMAGE_CREATE_BIND_SFR_BIT_KHX :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = VkImageCreateFlagBits 64
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkGetDeviceGroupPresentCapabilitiesKHX
---   >     ( VkDevice device
---   >     , VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDeviceGroupPresentCapabilitiesKHX.html vkGetDeviceGroupPresentCapabilitiesKHX registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetDeviceGroupPresentCapabilitiesKHX"
-               vkGetDeviceGroupPresentCapabilitiesKHX ::
-               VkDevice -- ^ device
-                        -> Ptr VkDeviceGroupPresentCapabilitiesKHX -- ^ pDeviceGroupPresentCapabilities
-                                                                   -> IO VkResult
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
---   > VkResult vkGetDeviceGroupSurfacePresentModesKHX
---   >     ( VkDevice device
---   >     , VkSurfaceKHR surface
---   >     , VkDeviceGroupPresentModeFlagsKHX* pModes
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetDeviceGroupSurfacePresentModesKHX.html vkGetDeviceGroupSurfacePresentModesKHX registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetDeviceGroupSurfacePresentModesKHX"
-               vkGetDeviceGroupSurfacePresentModesKHX ::
-               VkDevice -- ^ device
-                        ->
-                 VkSurfaceKHR -- ^ surface
-                              -> Ptr VkDeviceGroupPresentModeFlagsKHX -- ^ pModes
-                                                                      -> IO VkResult
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkGetPhysicalDevicePresentRectanglesKHX
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkSurfaceKHR surface
---   >     , uint32_t* pRectCount
---   >     , VkRect2D* pRects
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDevicePresentRectanglesKHX.html vkGetPhysicalDevicePresentRectanglesKHX registry at www.khronos.org>
-foreign import ccall unsafe
-               "vkGetPhysicalDevicePresentRectanglesKHX"
-               vkGetPhysicalDevicePresentRectanglesKHX ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkSurfaceKHR -- ^ surface
-                              -> Ptr Word32 -- ^ pRectCount
-                                            -> Ptr VkRect2D -- ^ pRects
-                                                            -> IO VkResult
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX =
-        VkStructureType 1000060007
-
--- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
---   > VkResult vkAcquireNextImage2KHX
---   >     ( VkDevice device
---   >     , const VkAcquireNextImageInfoKHX* pAcquireInfo
---   >     , uint32_t* pImageIndex
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkAcquireNextImage2KHX.html vkAcquireNextImage2KHX registry at www.khronos.org>
-foreign import ccall unsafe "vkAcquireNextImage2KHX"
-               vkAcquireNextImage2KHX ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkAcquireNextImageInfoKHX -- ^ pAcquireInfo
-                                               -> Ptr Word32 -- ^ pImageIndex
-                                                             -> IO VkResult
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX =
-        VkStructureType 1000060008
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX =
-        VkStructureType 1000060009
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX =
-        VkStructureType 1000060011
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX =
-        VkStructureType 1000060012
-
--- | Allow images with VK_IMAGE_CREATE_BIND_SFR_BIT_KHX
---
---   bitpos = @0@
-pattern VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX ::
-        VkSwapchainCreateFlagBitsKHR
-
-pattern VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX =
-        VkSwapchainCreateFlagBitsKHR 1
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHX_device_group_creation.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHX_device_group_creation.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHX_device_group_creation.hs
+++ /dev/null
@@ -1,127 +0,0 @@
-{-# OPTIONS_HADDOCK not-home#-}
-{-# LANGUAGE DataKinds                #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE MagicHash                #-}
-{-# LANGUAGE PatternSynonyms          #-}
-{-# LANGUAGE Strict                   #-}
-{-# LANGUAGE ViewPatterns             #-}
-module Graphics.Vulkan.Ext.VK_KHX_device_group_creation
-       (-- * Vulkan extension: @VK_KHX_device_group_creation@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jeff Bolz @jbolz@
-        --
-        -- author: @KHX@
-        --
-        -- type: @instance@
-        --
-        -- Extension number: @71@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHX,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHX,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        -- > #include "vk_platform.h"
-        vkEnumeratePhysicalDeviceGroupsKHX,
-        module Graphics.Vulkan.Types.Enum.VkResult,
-        module Graphics.Vulkan.Types.Handles,
-        VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION,
-        pattern VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION,
-        VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME,
-        pattern VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
-        pattern VK_MAX_DEVICE_GROUP_SIZE_KHX, VK_MAX_DEVICE_GROUP_SIZE_KHX,
-        pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX)
-       where
-import           GHC.Ptr                                                         (Ptr (..))
-import           Graphics.Vulkan.Constants                                       (VK_MAX_DEVICE_GROUP_SIZE_KHX,
-                                                                                  pattern VK_MAX_DEVICE_GROUP_SIZE_KHX)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags                    (VkMemoryHeapBitmask (..),
-                                                                                  VkMemoryHeapFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkResult
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Handles
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHX
-
--- | 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 vkEnumeratePhysicalDeviceGroupsKHX
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceGroupCount
---   >     , VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkEnumeratePhysicalDeviceGroupsKHX.html vkEnumeratePhysicalDeviceGroupsKHX registry at www.khronos.org>
-foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroupsKHX"
-               vkEnumeratePhysicalDeviceGroupsKHX ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupPropertiesKHX -- ^ pPhysicalDeviceGroupProperties
-                                                                      -> IO VkResult
-
-pattern VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION ::
-        (Num a, Eq a) => a
-
-pattern VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION = 1
-
-type VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION = 1
-
-pattern VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME :: CString
-
-pattern VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME <-
-        (is_VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME -> True)
-  where VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME
-          = _VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME
-
-{-# INLINE _VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME #-}
-
-_VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME :: CString
-_VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME
-  = Ptr "VK_KHX_device_group_creation\NUL"#
-
-{-# INLINE is_VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME #-}
-
-is_VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME :: CString -> Bool
-is_VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME
-  = eqCStrings _VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME
-
-type VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME =
-     "VK_KHX_device_group_creation"
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX =
-        VkStructureType 1000070000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX =
-        VkStructureType 1000070001
-
--- | If set, heap allocations allocate multiple instances by default
---
---   bitpos = @1@
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX ::
-        VkMemoryHeapFlagBits
-
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX =
-        VkMemoryHeapFlagBits 2
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHX_multiview.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHX_multiview.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHX_multiview.hs
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# OPTIONS_HADDOCK not-home#-}
-{-# LANGUAGE DataKinds       #-}
-{-# LANGUAGE MagicHash       #-}
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE Strict          #-}
-{-# LANGUAGE ViewPatterns    #-}
-module Graphics.Vulkan.Ext.VK_KHX_multiview
-       (-- * Vulkan extension: @VK_KHX_multiview@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jeff Bolz @jbolz@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @54@
-        --
-        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.VkAccessFlags,
-        module Graphics.Vulkan.Types.Struct.VkAttachmentDescription,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp,
-        module Graphics.Vulkan.Types.Struct.VkAttachmentReference,
-        module Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.VkDependencyFlags,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo,
-        module Graphics.Vulkan.Types.Enum.VkFormat,
-        module Graphics.Vulkan.Types.Enum.VkImageLayout,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHX,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHX,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
-        module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint,
-        module Graphics.Vulkan.Types.Enum.VkPipelineStageFlags,
-        module Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo,
-        module Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHX,
-        module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.VkStructureType,
-        module Graphics.Vulkan.Types.Struct.VkSubpassDependency,
-        module Graphics.Vulkan.Types.Struct.VkSubpassDescription,
-        module Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags,
-        -- > #include "vk_platform.h"
-        VK_KHX_MULTIVIEW_SPEC_VERSION,
-        pattern VK_KHX_MULTIVIEW_SPEC_VERSION,
-        VK_KHX_MULTIVIEW_EXTENSION_NAME,
-        pattern VK_KHX_MULTIVIEW_EXTENSION_NAME,
-        pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
-        pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX)
-       where
-import           GHC.Ptr
-                                                                                      (Ptr (..))
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes
-import           Graphics.Vulkan.Types.Bitmasks
-import           Graphics.Vulkan.Types.Enum.VkAccessFlags
-import           Graphics.Vulkan.Types.Enum.VkAttachmentDescriptionFlags
-import           Graphics.Vulkan.Types.Enum.VkAttachmentLoadOp
-import           Graphics.Vulkan.Types.Enum.VkAttachmentStoreOp
-import           Graphics.Vulkan.Types.Enum.VkDependencyFlags
-import           Graphics.Vulkan.Types.Enum.VkFormat
-import           Graphics.Vulkan.Types.Enum.VkImageLayout
-import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
-import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
-import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-import           Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags
-import           Graphics.Vulkan.Types.Struct.VkAttachmentDescription
-import           Graphics.Vulkan.Types.Struct.VkAttachmentReference
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHX
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHX
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
-import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
-import           Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHX
-import           Graphics.Vulkan.Types.Struct.VkSubpassDependency
-import           Graphics.Vulkan.Types.Struct.VkSubpassDescription
-
-pattern VK_KHX_MULTIVIEW_SPEC_VERSION :: (Num a, Eq a) => a
-
-pattern VK_KHX_MULTIVIEW_SPEC_VERSION = 1
-
-type VK_KHX_MULTIVIEW_SPEC_VERSION = 1
-
-pattern VK_KHX_MULTIVIEW_EXTENSION_NAME :: CString
-
-pattern VK_KHX_MULTIVIEW_EXTENSION_NAME <-
-        (is_VK_KHX_MULTIVIEW_EXTENSION_NAME -> True)
-  where VK_KHX_MULTIVIEW_EXTENSION_NAME
-          = _VK_KHX_MULTIVIEW_EXTENSION_NAME
-
-{-# INLINE _VK_KHX_MULTIVIEW_EXTENSION_NAME #-}
-
-_VK_KHX_MULTIVIEW_EXTENSION_NAME :: CString
-_VK_KHX_MULTIVIEW_EXTENSION_NAME = Ptr "VK_KHX_multiview\NUL"#
-
-{-# INLINE is_VK_KHX_MULTIVIEW_EXTENSION_NAME #-}
-
-is_VK_KHX_MULTIVIEW_EXTENSION_NAME :: CString -> Bool
-is_VK_KHX_MULTIVIEW_EXTENSION_NAME
-  = eqCStrings _VK_KHX_MULTIVIEW_EXTENSION_NAME
-
-type VK_KHX_MULTIVIEW_EXTENSION_NAME = "VK_KHX_multiview"
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX =
-        VkStructureType 1000053000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX =
-        VkStructureType 1000053001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX
-        = VkStructureType 1000053002
-
--- | bitpos = @1@
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX :: VkDependencyFlagBits
-
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = VkDependencyFlagBits 2
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @ios@
+        --
         -- Extension number: @123@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_IOS_MVK@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,7 +30,8 @@
         module Graphics.Vulkan.Types.Struct.VkIOSSurfaceCreateInfoMVK,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkCreateIOSSurfaceMVK, module Graphics.Vulkan.Marshal,
+        vkCreateIOSSurfaceMVK, vkCreateIOSSurfaceMVKSafe,
+        module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
@@ -67,7 +68,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateIOSSurfaceMVK.html vkCreateIOSSurfaceMVK registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateIOSSurfaceMVK.html vkCreateIOSSurfaceMVK registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateIOSSurfaceMVK"
                vkCreateIOSSurfaceMVK ::
                VkInstance -- ^ instance
@@ -78,6 +79,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+--   > VkResult vkCreateIOSSurfaceMVK
+--   >     ( VkInstance instance
+--   >     , const VkIOSSurfaceCreateInfoMVK* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateIOSSurfaceMVK.html vkCreateIOSSurfaceMVK registry at www.khronos.org>
+foreign import ccall safe "vkCreateIOSSurfaceMVK"
+               vkCreateIOSSurfaceMVKSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkIOSSurfaceCreateInfoMVK -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 pattern VK_MVK_IOS_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_MVK_IOS_SURFACE_SPEC_VERSION = 2
@@ -100,7 +123,7 @@
 
 is_VK_MVK_IOS_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_MVK_IOS_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_MVK_IOS_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_MVK_IOS_SURFACE_EXTENSION_NAME
 
 type VK_MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface"
 
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @macos@
+        --
         -- Extension number: @124@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_MACOS_MVK@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,7 +30,8 @@
         module Graphics.Vulkan.Types.Struct.VkMacOSSurfaceCreateInfoMVK,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkCreateMacOSSurfaceMVK, module Graphics.Vulkan.Marshal,
+        vkCreateMacOSSurfaceMVK, vkCreateMacOSSurfaceMVKSafe,
+        module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
@@ -67,7 +68,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateMacOSSurfaceMVK.html vkCreateMacOSSurfaceMVK registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateMacOSSurfaceMVK.html vkCreateMacOSSurfaceMVK registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateMacOSSurfaceMVK"
                vkCreateMacOSSurfaceMVK ::
                VkInstance -- ^ instance
@@ -78,6 +79,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+--   > VkResult vkCreateMacOSSurfaceMVK
+--   >     ( VkInstance instance
+--   >     , const VkMacOSSurfaceCreateInfoMVK* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateMacOSSurfaceMVK.html vkCreateMacOSSurfaceMVK registry at www.khronos.org>
+foreign import ccall safe "vkCreateMacOSSurfaceMVK"
+               vkCreateMacOSSurfaceMVKSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkMacOSSurfaceCreateInfoMVK -- ^ pCreateInfo
+                                                 ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION = 2
@@ -101,7 +124,7 @@
 
 is_VK_MVK_MACOS_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_MVK_MACOS_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_MVK_MACOS_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_MVK_MACOS_SURFACE_EXTENSION_NAME
 
 type VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface"
 
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
@@ -17,12 +17,12 @@
         --
         -- type: @instance@
         --
+        -- platform: @vi@
+        --
         -- Extension number: @63@
         --
         -- Required extensions: 'VK_KHR_surface'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_VI_NN@
-        --
 
         -- ** Required extensions: 'VK_KHR_surface'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -30,7 +30,8 @@
         module Graphics.Vulkan.Types.Bitmasks,
         module Graphics.Vulkan.Types.Struct.VkViSurfaceCreateInfoNN,
         -- > #include "vk_platform.h"
-        vkCreateViSurfaceNN, module Graphics.Vulkan.Marshal,
+        vkCreateViSurfaceNN, vkCreateViSurfaceNNSafe,
+        module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope,
@@ -67,7 +68,7 @@
 --   >     , VkSurfaceKHR* pSurface
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateViSurfaceNN.html vkCreateViSurfaceNN registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateViSurfaceNN.html vkCreateViSurfaceNN registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateViSurfaceNN"
                vkCreateViSurfaceNN ::
                VkInstance -- ^ instance
@@ -78,6 +79,28 @@
                                              -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                  -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
+--
+--   > VkResult vkCreateViSurfaceNN
+--   >     ( VkInstance instance
+--   >     , const VkViSurfaceCreateInfoNN* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSurfaceKHR* pSurface
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateViSurfaceNN.html vkCreateViSurfaceNN registry at www.khronos.org>
+foreign import ccall safe "vkCreateViSurfaceNN"
+               vkCreateViSurfaceNNSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr VkViSurfaceCreateInfoNN -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSurfaceKHR -- ^ pSurface
+                                                                 -> IO VkResult
+
 pattern VK_NN_VI_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_NN_VI_SURFACE_SPEC_VERSION = 1
@@ -100,7 +123,7 @@
 
 is_VK_NN_VI_SURFACE_EXTENSION_NAME :: CString -> Bool
 is_VK_NN_VI_SURFACE_EXTENSION_NAME
-  = eqCStrings _VK_NN_VI_SURFACE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NN_VI_SURFACE_EXTENSION_NAME
 
 type VK_NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface"
 
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
@@ -42,12 +42,19 @@
         module Graphics.Vulkan.Types.Enum.VkShaderStageFlags,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        vkCmdProcessCommandsNVX, vkCmdReserveSpaceForCommandsNVX,
+        vkCmdProcessCommandsNVX, vkCmdProcessCommandsNVXSafe,
+        vkCmdReserveSpaceForCommandsNVX,
+        vkCmdReserveSpaceForCommandsNVXSafe,
         vkCreateIndirectCommandsLayoutNVX,
-        vkDestroyIndirectCommandsLayoutNVX, vkCreateObjectTableNVX,
-        vkDestroyObjectTableNVX, vkRegisterObjectsNVX,
-        vkUnregisterObjectsNVX,
+        vkCreateIndirectCommandsLayoutNVXSafe,
+        vkDestroyIndirectCommandsLayoutNVX,
+        vkDestroyIndirectCommandsLayoutNVXSafe, vkCreateObjectTableNVX,
+        vkCreateObjectTableNVXSafe, vkDestroyObjectTableNVX,
+        vkDestroyObjectTableNVXSafe, vkRegisterObjectsNVX,
+        vkRegisterObjectsNVXSafe, vkUnregisterObjectsNVX,
+        vkUnregisterObjectsNVXSafe,
         vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,
+        vkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkInternalAllocationType,
         module Graphics.Vulkan.Types.Enum.VkResult,
@@ -121,7 +128,7 @@
 --   >     , const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdProcessCommandsNVX.html vkCmdProcessCommandsNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdProcessCommandsNVX.html vkCmdProcessCommandsNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdProcessCommandsNVX"
                vkCmdProcessCommandsNVX ::
                VkCommandBuffer -- ^ commandBuffer
@@ -132,18 +139,50 @@
 --
 --   renderpass: @inside@
 --
+--   > () vkCmdProcessCommandsNVX
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdProcessCommandsNVX.html vkCmdProcessCommandsNVX registry at www.khronos.org>
+foreign import ccall safe "vkCmdProcessCommandsNVX"
+               vkCmdProcessCommandsNVXSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCmdProcessCommandsInfoNVX -- ^ pProcessCommandsInfo
+                                                                  -> IO ()
+
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @inside@
+--
 --   > () vkCmdReserveSpaceForCommandsNVX
 --   >     ( VkCommandBuffer commandBuffer
 --   >     , const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdReserveSpaceForCommandsNVX.html vkCmdReserveSpaceForCommandsNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdReserveSpaceForCommandsNVX.html vkCmdReserveSpaceForCommandsNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdReserveSpaceForCommandsNVX"
                vkCmdReserveSpaceForCommandsNVX ::
                VkCommandBuffer -- ^ commandBuffer
                                -> Ptr VkCmdReserveSpaceForCommandsInfoNVX -- ^ pReserveSpaceInfo
                                                                           -> IO ()
 
+-- | queues: 'graphics', 'compute'.
+--
+--   renderpass: @inside@
+--
+--   > () vkCmdReserveSpaceForCommandsNVX
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdReserveSpaceForCommandsNVX.html vkCmdReserveSpaceForCommandsNVX registry at www.khronos.org>
+foreign import ccall safe "vkCmdReserveSpaceForCommandsNVX"
+               vkCmdReserveSpaceForCommandsNVXSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCmdReserveSpaceForCommandsInfoNVX -- ^ pReserveSpaceInfo
+                                                                          -> IO ()
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -155,7 +194,7 @@
 --   >     , VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateIndirectCommandsLayoutNVX.html vkCreateIndirectCommandsLayoutNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateIndirectCommandsLayoutNVX.html vkCreateIndirectCommandsLayoutNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateIndirectCommandsLayoutNVX"
                vkCreateIndirectCommandsLayoutNVX ::
                VkDevice -- ^ device
@@ -167,13 +206,36 @@
                      Ptr VkIndirectCommandsLayoutNVX -- ^ pIndirectCommandsLayout
                                                      -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateIndirectCommandsLayoutNVX
+--   >     ( VkDevice device
+--   >     , const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateIndirectCommandsLayoutNVX.html vkCreateIndirectCommandsLayoutNVX registry at www.khronos.org>
+foreign import ccall safe "vkCreateIndirectCommandsLayoutNVX"
+               vkCreateIndirectCommandsLayoutNVXSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkIndirectCommandsLayoutCreateInfoNVX -- ^ pCreateInfo
+                                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkIndirectCommandsLayoutNVX -- ^ pIndirectCommandsLayout
+                                                     -> IO VkResult
+
 -- | > () vkDestroyIndirectCommandsLayoutNVX
 --   >     ( VkDevice device
 --   >     , VkIndirectCommandsLayoutNVX indirectCommandsLayout
 --   >     , const VkAllocationCallbacks* pAllocator
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyIndirectCommandsLayoutNVX.html vkDestroyIndirectCommandsLayoutNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyIndirectCommandsLayoutNVX.html vkDestroyIndirectCommandsLayoutNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkDestroyIndirectCommandsLayoutNVX"
                vkDestroyIndirectCommandsLayoutNVX ::
                VkDevice -- ^ device
@@ -182,6 +244,21 @@
                                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                           -> IO ()
 
+-- | > () vkDestroyIndirectCommandsLayoutNVX
+--   >     ( VkDevice device
+--   >     , VkIndirectCommandsLayoutNVX indirectCommandsLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyIndirectCommandsLayoutNVX.html vkDestroyIndirectCommandsLayoutNVX registry at www.khronos.org>
+foreign import ccall safe "vkDestroyIndirectCommandsLayoutNVX"
+               vkDestroyIndirectCommandsLayoutNVXSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkIndirectCommandsLayoutNVX -- ^ indirectCommandsLayout
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -193,7 +270,7 @@
 --   >     , VkObjectTableNVX* pObjectTable
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCreateObjectTableNVX.html vkCreateObjectTableNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateObjectTableNVX.html vkCreateObjectTableNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkCreateObjectTableNVX"
                vkCreateObjectTableNVX ::
                VkDevice -- ^ device
@@ -204,13 +281,35 @@
                                              -> Ptr VkObjectTableNVX -- ^ pObjectTable
                                                                      -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateObjectTableNVX
+--   >     ( VkDevice device
+--   >     , const VkObjectTableCreateInfoNVX* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkObjectTableNVX* pObjectTable
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateObjectTableNVX.html vkCreateObjectTableNVX registry at www.khronos.org>
+foreign import ccall safe "vkCreateObjectTableNVX"
+               vkCreateObjectTableNVXSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkObjectTableCreateInfoNVX -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkObjectTableNVX -- ^ pObjectTable
+                                                                     -> IO VkResult
+
 -- | > () vkDestroyObjectTableNVX
 --   >     ( VkDevice device
 --   >     , VkObjectTableNVX objectTable
 --   >     , const VkAllocationCallbacks* pAllocator
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkDestroyObjectTableNVX.html vkDestroyObjectTableNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyObjectTableNVX.html vkDestroyObjectTableNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkDestroyObjectTableNVX"
                vkDestroyObjectTableNVX ::
                VkDevice -- ^ device
@@ -218,6 +317,20 @@
                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                          -> IO ()
 
+-- | > () vkDestroyObjectTableNVX
+--   >     ( VkDevice device
+--   >     , VkObjectTableNVX objectTable
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkDestroyObjectTableNVX.html vkDestroyObjectTableNVX registry at www.khronos.org>
+foreign import ccall safe "vkDestroyObjectTableNVX"
+               vkDestroyObjectTableNVXSafe ::
+               VkDevice -- ^ device
+                        -> VkObjectTableNVX -- ^ objectTable
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
 -- | Success codes: 'VK_SUCCESS'.
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
@@ -230,7 +343,7 @@
 --   >     , const uint32_t* pObjectIndices
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkRegisterObjectsNVX.html vkRegisterObjectsNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkRegisterObjectsNVX.html vkRegisterObjectsNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkRegisterObjectsNVX"
                vkRegisterObjectsNVX ::
                VkDevice -- ^ device
@@ -247,6 +360,31 @@
 --
 --   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
 --
+--   > VkResult vkRegisterObjectsNVX
+--   >     ( VkDevice device
+--   >     , VkObjectTableNVX objectTable
+--   >     , uint32_t objectCount
+--   >     , const VkObjectTableEntryNVX* const*    ppObjectTableEntries
+--   >     , const uint32_t* pObjectIndices
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkRegisterObjectsNVX.html vkRegisterObjectsNVX registry at www.khronos.org>
+foreign import ccall safe "vkRegisterObjectsNVX"
+               vkRegisterObjectsNVXSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkObjectTableNVX -- ^ objectTable
+                                  ->
+                   Word32 -- ^ objectCount
+                          ->
+                     Ptr (Ptr VkObjectTableEntryNVX) -- ^ ppObjectTableEntries
+                                                     -> Ptr Word32 -- ^ pObjectIndices
+                                                                   -> IO VkResult
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
 --   > VkResult vkUnregisterObjectsNVX
 --   >     ( VkDevice device
 --   >     , VkObjectTableNVX objectTable
@@ -255,7 +393,7 @@
 --   >     , const uint32_t* pObjectIndices
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkUnregisterObjectsNVX.html vkUnregisterObjectsNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUnregisterObjectsNVX.html vkUnregisterObjectsNVX registry at www.khronos.org>
 foreign import ccall unsafe "vkUnregisterObjectsNVX"
                vkUnregisterObjectsNVX ::
                VkDevice -- ^ device
@@ -267,13 +405,37 @@
                                                       -> Ptr Word32 -- ^ pObjectIndices
                                                                     -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkUnregisterObjectsNVX
+--   >     ( VkDevice device
+--   >     , VkObjectTableNVX objectTable
+--   >     , uint32_t objectCount
+--   >     , const VkObjectEntryTypeNVX* pObjectEntryTypes
+--   >     , const uint32_t* pObjectIndices
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkUnregisterObjectsNVX.html vkUnregisterObjectsNVX registry at www.khronos.org>
+foreign import ccall safe "vkUnregisterObjectsNVX"
+               vkUnregisterObjectsNVXSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkObjectTableNVX -- ^ objectTable
+                                  ->
+                   Word32 -- ^ objectCount
+                          -> Ptr VkObjectEntryTypeNVX -- ^ pObjectEntryTypes
+                                                      -> Ptr Word32 -- ^ pObjectIndices
+                                                                    -> IO VkResult
+
 -- | > () vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 --   >     ( VkPhysicalDevice physicalDevice
 --   >     , VkDeviceGeneratedCommandsFeaturesNVX* pFeatures
 --   >     , VkDeviceGeneratedCommandsLimitsNVX* pLimits
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX.html vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX.html vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"
                vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ::
@@ -284,6 +446,23 @@
                    Ptr VkDeviceGeneratedCommandsLimitsNVX -- ^ pLimits
                                                           -> IO ()
 
+-- | > () vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkDeviceGeneratedCommandsFeaturesNVX* pFeatures
+--   >     , VkDeviceGeneratedCommandsLimitsNVX* pLimits
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX.html vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"
+               vkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceGeneratedCommandsFeaturesNVX -- ^ pFeatures
+                                                          ->
+                   Ptr VkDeviceGeneratedCommandsLimitsNVX -- ^ pLimits
+                                                          -> IO ()
+
 pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -309,7 +488,8 @@
 is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME ::
                                                    CString -> Bool
 is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
-  = eqCStrings _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
 
 type VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME =
      "VK_NVX_device_generated_commands"
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
@@ -18,16 +18,16 @@
         --
         -- Extension number: @98@
         --
-        -- Required extensions: 'VK_KHX_multiview'.
+        -- Required extensions: 'VK_KHR_multiview'.
         --
 
-        -- ** Required extensions: 'VK_KHX_multiview'.
+        -- ** Required extensions: 'VK_KHR_multiview'.
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.BaseTypes,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties,
-        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR,
+        module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2,
         module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties,
         module Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType,
         module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
@@ -54,7 +54,7 @@
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
 
 pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION ::
@@ -84,7 +84,8 @@
 is_VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME ::
                                                        CString -> Bool
 is_VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
-  = eqCStrings _VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
 
 type VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME =
      "VK_NVX_multiview_per_view_attributes"
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
@@ -29,7 +29,8 @@
         module Graphics.Vulkan.Types.Struct.VkViewport,
         module Graphics.Vulkan.Types.Struct.VkViewportWScalingNV,
         -- > #include "vk_platform.h"
-        vkCmdSetViewportWScalingNV, module Graphics.Vulkan.Types.Handles,
+        vkCmdSetViewportWScalingNV, vkCmdSetViewportWScalingNVSafe,
+        module Graphics.Vulkan.Types.Handles,
         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,
@@ -65,7 +66,7 @@
 --   >     , const VkViewportWScalingNV* pViewportWScalings
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkCmdSetViewportWScalingNV.html vkCmdSetViewportWScalingNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetViewportWScalingNV.html vkCmdSetViewportWScalingNV registry at www.khronos.org>
 foreign import ccall unsafe "vkCmdSetViewportWScalingNV"
                vkCmdSetViewportWScalingNV ::
                VkCommandBuffer -- ^ commandBuffer
@@ -75,6 +76,27 @@
                                   -> Ptr VkViewportWScalingNV -- ^ pViewportWScalings
                                                               -> IO ()
 
+-- | queues: 'graphics'.
+--
+--   renderpass: @both@
+--
+--   > () vkCmdSetViewportWScalingNV
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstViewport
+--   >     , uint32_t viewportCount
+--   >     , const VkViewportWScalingNV* pViewportWScalings
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCmdSetViewportWScalingNV.html vkCmdSetViewportWScalingNV registry at www.khronos.org>
+foreign import ccall safe "vkCmdSetViewportWScalingNV"
+               vkCmdSetViewportWScalingNVSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstViewport
+                        -> Word32 -- ^ viewportCount
+                                  -> Ptr VkViewportWScalingNV -- ^ pViewportWScalings
+                                                              -> IO ()
+
 pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: (Num a, Eq a) =>
         a
 
@@ -99,7 +121,7 @@
 
 is_VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
-  = eqCStrings _VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
 
 type VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME =
      "VK_NV_clip_space_w_scaling"
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
@@ -92,7 +92,7 @@
 
 is_VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
-  = eqCStrings _VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
 
 type VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME =
      "VK_NV_dedicated_allocation"
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
@@ -88,7 +88,7 @@
 
 is_VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
-  = eqCStrings _VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
 
 type VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory"
 
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
@@ -28,6 +28,7 @@
         module Graphics.Vulkan.Types.Enum.VkSampleCountFlags,
         -- > #include "vk_platform.h"
         vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
+        vkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe,
         module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkFormat,
         module Graphics.Vulkan.Types.Enum.VkImageCreateFlags,
@@ -73,7 +74,7 @@
 --   >     , VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html vkGetPhysicalDeviceExternalImageFormatPropertiesNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html vkGetPhysicalDeviceExternalImageFormatPropertiesNV registry at www.khronos.org>
 foreign import ccall unsafe
                "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
                vkGetPhysicalDeviceExternalImageFormatPropertiesNV ::
@@ -94,6 +95,42 @@
                              Ptr VkExternalImageFormatPropertiesNV -- ^ pExternalImageFormatProperties
                                                                    -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkImageTiling tiling
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageCreateFlags flags
+--   >     , VkExternalMemoryHandleTypeFlagsNV externalHandleType
+--   >     , VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html vkGetPhysicalDeviceExternalImageFormatPropertiesNV registry at www.khronos.org>
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
+               vkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            ->
+                           VkExternalMemoryHandleTypeFlagsNV -- ^ externalHandleType
+                                                             ->
+                             Ptr VkExternalImageFormatPropertiesNV -- ^ pExternalImageFormatProperties
+                                                                   -> IO VkResult
+
 pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -120,7 +157,8 @@
 is_VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME ::
                                                      CString -> Bool
 is_VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
-  = eqCStrings _VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
 
 type VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME =
      "VK_NV_external_memory_capabilities"
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
@@ -18,12 +18,12 @@
         --
         -- type: @device@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @58@
         --
         -- Required extensions: 'VK_NV_external_memory'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_NV_external_memory'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -33,9 +33,8 @@
         module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo,
         module Graphics.Vulkan.Types.Enum.VkStructureType,
         -- > #include "vk_platform.h"
-        --
-        -- > #include <windows.h>
-        vkGetMemoryWin32HandleNV, module Graphics.Vulkan.Marshal,
+        vkGetMemoryWin32HandleNV, vkGetMemoryWin32HandleNVSafe,
+        module Graphics.Vulkan.Marshal,
         module Graphics.Vulkan.Types.Enum.VkResult,
         module Graphics.Vulkan.Types.Handles,
         VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION,
@@ -68,7 +67,7 @@
 --   >     , HANDLE* pHandle
 --   >     )
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/vkGetMemoryWin32HandleNV.html vkGetMemoryWin32HandleNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryWin32HandleNV.html vkGetMemoryWin32HandleNV registry at www.khronos.org>
 foreign import ccall unsafe "vkGetMemoryWin32HandleNV"
                vkGetMemoryWin32HandleNV ::
                VkDevice -- ^ device
@@ -79,6 +78,28 @@
                                                      -> Ptr HANDLE -- ^ pHandle
                                                                    -> IO VkResult
 
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_OUT_OF_HOST_MEMORY'.
+--
+--   > VkResult vkGetMemoryWin32HandleNV
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkExternalMemoryHandleTypeFlagsNV handleType
+--   >     , HANDLE* pHandle
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkGetMemoryWin32HandleNV.html vkGetMemoryWin32HandleNV registry at www.khronos.org>
+foreign import ccall safe "vkGetMemoryWin32HandleNV"
+               vkGetMemoryWin32HandleNVSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkExternalMemoryHandleTypeFlagsNV -- ^ handleType
+                                                     -> Ptr HANDLE -- ^ pHandle
+                                                                   -> IO VkResult
+
 pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
 
@@ -103,7 +124,7 @@
 
 is_VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
-  = eqCStrings _VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
 
 type VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME =
      "VK_NV_external_memory_win32"
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
@@ -50,7 +50,7 @@
 
 is_VK_NV_FILL_RECTANGLE_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_FILL_RECTANGLE_EXTENSION_NAME
-  = eqCStrings _VK_NV_FILL_RECTANGLE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_FILL_RECTANGLE_EXTENSION_NAME
 
 type VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle"
 
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
@@ -65,7 +65,8 @@
 is_VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME ::
                                                    CString -> Bool
 is_VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
-  = eqCStrings _VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
 
 type VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME =
      "VK_NV_fragment_coverage_to_color"
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
@@ -67,7 +67,8 @@
 is_VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME ::
                                                   CString -> Bool
 is_VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
-  = eqCStrings _VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
 
 type VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME =
      "VK_NV_framebuffer_mixed_samples"
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
@@ -50,7 +50,8 @@
 is_VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME ::
                                                     CString -> Bool
 is_VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
-  = eqCStrings _VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
 
 type VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME =
      "VK_NV_geometry_shader_passthrough"
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
@@ -49,7 +49,7 @@
 
 is_VK_NV_GLSL_SHADER_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_GLSL_SHADER_EXTENSION_NAME
-  = eqCStrings _VK_NV_GLSL_SHADER_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_GLSL_SHADER_EXTENSION_NAME
 
 type VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader"
 
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
@@ -52,7 +52,8 @@
 is_VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME ::
                                                       CString -> Bool
 is_VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
-  = eqCStrings _VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
+  = (EQ ==) .
+      cmpCStrings _VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
 
 type VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME =
      "VK_NV_sample_mask_override_coverage"
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
@@ -48,6 +48,6 @@
 
 is_VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
-  = eqCStrings _VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
 
 type VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2"
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
@@ -73,7 +73,7 @@
 
 is_VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
-  = eqCStrings _VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
 
 type VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME =
      "VK_NV_viewport_swizzle"
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
@@ -16,12 +16,12 @@
         --
         -- type: @device@
         --
+        -- platform: @win32@
+        --
         -- Extension number: @59@
         --
         -- Required extensions: 'VK_NV_external_memory_win32'.
         --
-        -- Protected by CPP ifdef: @VK_USE_PLATFORM_WIN32_KHR@
-        --
 
         -- ** Required extensions: 'VK_NV_external_memory_win32'.
         module Graphics.Vulkan.Types.BaseTypes,
@@ -68,7 +68,7 @@
 
 is_VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME :: CString -> Bool
 is_VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
-  = eqCStrings _VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
+  = (EQ ==) . cmpCStrings _VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
 
 type VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME =
      "VK_NV_win32_keyed_mutex"
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
@@ -5,15 +5,26 @@
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Bitmasks
        (VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
-        VkCommandPoolTrimFlagsKHR(..), VkDescriptorPoolResetFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
         VkDescriptorUpdateTemplateCreateFlagsKHR(..),
-        VkDeviceCreateFlags(..), VkDeviceQueueCreateFlags(..),
-        VkDisplayModeCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
         VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
-        VkFramebufferCreateFlags(..), VkIOSSurfaceCreateFlagsMVK(..),
-        VkImageViewCreateFlags(..), VkInstanceCreateFlags(..),
-        VkMacOSSurfaceCreateFlagsMVK(..), VkMemoryMapFlags(..),
-        VkMirSurfaceCreateFlagsKHR(..), VkPipelineCacheCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
         VkPipelineColorBlendStateCreateFlags(..),
         VkPipelineCoverageModulationStateCreateFlagsNV(..),
         VkPipelineCoverageToColorStateCreateFlagsNV(..),
@@ -32,8 +43,9 @@
         VkPipelineViewportSwizzleStateCreateFlagsNV(..),
         VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
         VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
-        VkShaderModuleCreateFlags(..), VkValidationCacheCreateFlagsEXT(..),
-        VkViSurfaceCreateFlagsNN(..), VkWaylandSurfaceCreateFlagsKHR(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
         VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
         VkXlibSurfaceCreateFlagsKHR(..))
        where
@@ -68,6 +80,18 @@
         {-# 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)
+
+instance Show VkCommandPoolTrimFlags where
+        {-# INLINE show #-}
+        show (VkCommandPoolTrimFlags x) = show x
+
+instance Read VkCommandPoolTrimFlags where
+        {-# 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)
@@ -80,6 +104,32 @@
         {-# 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)
+
+instance Show VkDebugUtilsMessengerCallbackDataFlagsEXT where
+        {-# INLINE show #-}
+        show (VkDebugUtilsMessengerCallbackDataFlagsEXT x) = show x
+
+instance Read VkDebugUtilsMessengerCallbackDataFlagsEXT where
+        {-# 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)
+
+instance Show VkDebugUtilsMessengerCreateFlagsEXT where
+        {-# INLINE show #-}
+        show (VkDebugUtilsMessengerCreateFlagsEXT x) = show x
+
+instance Read VkDebugUtilsMessengerCreateFlagsEXT where
+        {-# 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)
@@ -92,6 +142,19 @@
         {-# 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)
+
+instance Show VkDescriptorUpdateTemplateCreateFlags where
+        {-# INLINE show #-}
+        show (VkDescriptorUpdateTemplateCreateFlags x) = show x
+
+instance Read VkDescriptorUpdateTemplateCreateFlags where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+
 newtype VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlagsKHR VkFlags
                                                      deriving (Eq, Ord, Num, Bounded, Enum,
                                                                Integral, Bits, FiniteBits, Storable,
@@ -117,18 +180,6 @@
         {-# INLINE readsPrec #-}
         readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
-newtype VkDeviceQueueCreateFlags = VkDeviceQueueCreateFlags VkFlags
-                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                               FiniteBits, Storable, Real, Data, Generic)
-
-instance Show VkDeviceQueueCreateFlags where
-        {-# INLINE show #-}
-        show (VkDeviceQueueCreateFlags x) = show x
-
-instance Read VkDeviceQueueCreateFlags where
-        {-# 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)
@@ -165,6 +216,93 @@
         {-# 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)
+
+instance Show VkExternalFenceFeatureFlagsKHR where
+        {-# INLINE show #-}
+        show (VkExternalFenceFeatureFlagsKHR x) = show x
+
+instance Read VkExternalFenceFeatureFlagsKHR where
+        {-# 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)
+
+instance Show VkExternalFenceHandleTypeFlagsKHR where
+        {-# INLINE show #-}
+        show (VkExternalFenceHandleTypeFlagsKHR x) = show x
+
+instance Read VkExternalFenceHandleTypeFlagsKHR where
+        {-# 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)
+
+instance Show VkExternalMemoryFeatureFlagsKHR where
+        {-# INLINE show #-}
+        show (VkExternalMemoryFeatureFlagsKHR x) = show x
+
+instance Read VkExternalMemoryFeatureFlagsKHR where
+        {-# 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)
+
+instance Show VkExternalMemoryHandleTypeFlagsKHR where
+        {-# INLINE show #-}
+        show (VkExternalMemoryHandleTypeFlagsKHR x) = show x
+
+instance Read VkExternalMemoryHandleTypeFlagsKHR where
+        {-# 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)
+
+instance Show VkExternalSemaphoreFeatureFlagsKHR where
+        {-# INLINE show #-}
+        show (VkExternalSemaphoreFeatureFlagsKHR x) = show x
+
+instance Read VkExternalSemaphoreFeatureFlagsKHR where
+        {-# 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)
+
+instance Show VkExternalSemaphoreHandleTypeFlagsKHR where
+        {-# INLINE show #-}
+        show (VkExternalSemaphoreHandleTypeFlagsKHR x) = show x
+
+instance Read VkExternalSemaphoreHandleTypeFlagsKHR where
+        {-# 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)
+
+instance Show VkFenceImportFlagsKHR where
+        {-# INLINE show #-}
+        show (VkFenceImportFlagsKHR x) = show x
+
+instance Read VkFenceImportFlagsKHR where
+        {-# 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)
@@ -225,6 +363,18 @@
         {-# 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)
+
+instance Show VkMemoryAllocateFlagsKHR where
+        {-# INLINE show #-}
+        show (VkMemoryAllocateFlagsKHR x) = show x
+
+instance Read VkMemoryAllocateFlagsKHR where
+        {-# 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)
@@ -249,6 +399,18 @@
         {-# 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)
+
+instance Show VkPeerMemoryFeatureFlagsKHR where
+        {-# INLINE show #-}
+        show (VkPeerMemoryFeatureFlagsKHR x) = show x
+
+instance Read VkPeerMemoryFeatureFlagsKHR where
+        {-# 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)
@@ -517,6 +679,18 @@
         show (VkSemaphoreCreateFlags x) = show x
 
 instance Read VkSemaphoreCreateFlags where
+        {-# 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)
+
+instance Show VkSemaphoreImportFlagsKHR where
+        {-# INLINE show #-}
+        show (VkSemaphoreImportFlagsKHR x) = show x
+
+instance Read VkSemaphoreImportFlagsKHR where
         {-# INLINE readsPrec #-}
         readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Defines.hs b/src-gen/Graphics/Vulkan/Types/Defines.hs
--- a/src-gen/Graphics/Vulkan/Types/Defines.hs
+++ b/src-gen/Graphics/Vulkan/Types/Defines.hs
@@ -1,36 +1,45 @@
 {-# LANGUAGE CPP             #-}
 {-# LANGUAGE DataKinds       #-}
+{-# LANGUAGE EmptyDataDecls  #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE Strict          #-}
 module Graphics.Vulkan.Types.Defines
-       (-- | ===== @VK_API_VERSION@
-        -- > // DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
-        -- > //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
-        VK_API_VERSION_1_0, pattern VK_API_VERSION_1_0, Ptr(), -- | ===== @VK_DEFINE_HANDLE@
-                                                               -- Dispatchable handles are represented as `Foreign.Ptr`
-                                                               --
-                                                               -- >
-                                                               -- > #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-                                                               VkPtr(..),
-        -- | ===== @VK_DEFINE_NON_DISPATCHABLE_HANDLE@
-        -- Non-dispatchable handles are represented as `VkPtr`
-        --
-        -- >
-        -- > #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
-        -- > #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-        -- >         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
-        -- > #else
-        -- >         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
-        -- > #endif
-        -- > #endif
-        -- >
-        VK_HEADER_VERSION, pattern VK_HEADER_VERSION, _VK_MAKE_VERSION,
-        VulkanPtr(..), pattern VK_NULL_HANDLE, _VK_VERSION_MAJOR,
-        _VK_VERSION_MINOR, _VK_VERSION_PATCH)
+       (AHardwareBuffer(), ANativeWindow(), -- | ===== @VK_API_VERSION@
+                                            -- > // DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
+                                            -- > //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
+                                            VK_API_VERSION_1_0,
+        pattern VK_API_VERSION_1_0, VK_API_VERSION_1_1,
+        pattern VK_API_VERSION_1_1, Ptr(), -- | ===== @VK_DEFINE_HANDLE@
+                                           -- Dispatchable handles are represented as `Foreign.Ptr`
+                                           --
+                                           -- >
+                                           -- > #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
+                                           VkPtr(..), -- | ===== @VK_DEFINE_NON_DISPATCHABLE_HANDLE@
+                                                      -- Non-dispatchable handles are represented as `VkPtr`
+                                                      --
+                                                      -- >
+                                                      -- > #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
+                                                      -- > #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
+                                                      -- >         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
+                                                      -- > #else
+                                                      -- >         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
+                                                      -- > #endif
+                                                      -- > #endif
+                                                      -- >
+                                                      VK_HEADER_VERSION,
+        pattern VK_HEADER_VERSION, _VK_MAKE_VERSION, VulkanPtr(..),
+        pattern VK_NULL_HANDLE, _VK_VERSION_MAJOR, _VK_VERSION_MINOR,
+        _VK_VERSION_PATCH)
        where
 import           Data.Bits               (Bits (..))
 import           Graphics.Vulkan.Marshal
 
+-- | > struct AHardwareBuffer;
+data AHardwareBuffer
+
+-- | > struct ANativeWindow;
+data ANativeWindow
+
 -- | > // Vulkan 1.0 version number
 --   > #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
 pattern VK_API_VERSION_1_0 :: (Num a, Eq a) => a
@@ -39,13 +48,21 @@
 
 type VK_API_VERSION_1_0 = 4194304
 
+-- | > // Vulkan 1.1 version number
+--   > #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
+pattern VK_API_VERSION_1_1 :: (Num a, Eq a) => a
+
+pattern VK_API_VERSION_1_1 = 4198400
+
+type VK_API_VERSION_1_1 = 4198400
+
 -- | > // Version of this file
---   > #define VK_HEADER_VERSION 69
+--   > #define VK_HEADER_VERSION 71
 pattern VK_HEADER_VERSION :: (Num a, Eq a) => a
 
-pattern VK_HEADER_VERSION = 69
+pattern VK_HEADER_VERSION = 71
 
-type VK_HEADER_VERSION = 69
+type VK_HEADER_VERSION = 71
 
 -- | > #define VK_MAKE_VERSION(major, minor, patch) \
 --   >     (((major) << 22) | ((minor) << 12) | (patch))
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentLoadOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentLoadOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentLoadOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentLoadOp.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAttachmentLoadOp.html VkAttachmentLoadOp registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAttachmentLoadOp.html VkAttachmentLoadOp registry at www.khronos.org>
 newtype VkAttachmentLoadOp = VkAttachmentLoadOp Int32
                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentStoreOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentStoreOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentStoreOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkAttachmentStoreOp.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAttachmentStoreOp.html VkAttachmentStoreOp registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAttachmentStoreOp.html VkAttachmentStoreOp registry at www.khronos.org>
 newtype VkAttachmentStoreOp = VkAttachmentStoreOp Int32
                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkBlendFactor.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkBlendFactor.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkBlendFactor.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkBlendFactor.hs
@@ -31,7 +31,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBlendFactor.html VkBlendFactor registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBlendFactor.html VkBlendFactor registry at www.khronos.org>
 newtype VkBlendFactor = VkBlendFactor Int32
                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOp.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBlendOp.html VkBlendOp registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBlendOp.html VkBlendOp registry at www.khronos.org>
 newtype VkBlendOp = VkBlendOp Int32
                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOverlapEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOverlapEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOverlapEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkBlendOverlapEXT.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBlendOverlapEXT.html VkBlendOverlapEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBlendOverlapEXT.html VkBlendOverlapEXT registry at www.khronos.org>
 newtype VkBlendOverlapEXT = VkBlendOverlapEXT Int32
                               deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkBorderColor.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkBorderColor.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkBorderColor.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkBorderColor.hs
@@ -25,7 +25,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBorderColor.html VkBorderColor registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBorderColor.html VkBorderColor registry at www.khronos.org>
 newtype VkBorderColor = VkBorderColor Int32
                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocation.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocation.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocation.hs
@@ -0,0 +1,54 @@
+{-# OPTIONS_HADDOCK ignore-exports#-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkChromaLocation
+       (VkChromaLocation(VkChromaLocation,
+                         VK_CHROMA_LOCATION_COSITED_EVEN, VK_CHROMA_LOCATION_MIDPOINT))
+       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, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+-- | type = @enum@
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkChromaLocation.html VkChromaLocation registry at www.khronos.org>
+newtype VkChromaLocation = VkChromaLocation Int32
+                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+
+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)
+
+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)))
+
+pattern VK_CHROMA_LOCATION_COSITED_EVEN :: VkChromaLocation
+
+pattern VK_CHROMA_LOCATION_COSITED_EVEN = VkChromaLocation 0
+
+pattern VK_CHROMA_LOCATION_MIDPOINT :: VkChromaLocation
+
+pattern VK_CHROMA_LOCATION_MIDPOINT = VkChromaLocation 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocationKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocationKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocationKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkChromaLocationKHR.hs
@@ -1,56 +1,25 @@
-{-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.VkChromaLocationKHR
-       (VkChromaLocationKHR(VkChromaLocationKHR,
-                            VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
-                            VK_CHROMA_LOCATION_MIDPOINT_KHR))
-       where
+       (VkChromaLocationKHR(..)) 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           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
--- | type = @enum@
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkChromaLocationKHR.html VkChromaLocationKHR registry at www.khronos.org>
-newtype VkChromaLocationKHR = VkChromaLocationKHR Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+newtype VkChromaLocationKHR = VkChromaLocationKHR VkFlags
+                                deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
+                                          Storable, Real, Data, Generic)
 
 instance Show VkChromaLocationKHR where
-        showsPrec _ VK_CHROMA_LOCATION_COSITED_EVEN_KHR
-          = showString "VK_CHROMA_LOCATION_COSITED_EVEN_KHR"
-        showsPrec _ VK_CHROMA_LOCATION_MIDPOINT_KHR
-          = showString "VK_CHROMA_LOCATION_MIDPOINT_KHR"
-        showsPrec p (VkChromaLocationKHR x)
-          = showParen (p >= 11)
-              (showString "VkChromaLocationKHR " . showsPrec 11 x)
+        {-# INLINE show #-}
+        show (VkChromaLocationKHR x) = show x
 
 instance Read VkChromaLocationKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_CHROMA_LOCATION_COSITED_EVEN_KHR",
-                   pure VK_CHROMA_LOCATION_COSITED_EVEN_KHR),
-                  ("VK_CHROMA_LOCATION_MIDPOINT_KHR",
-                   pure VK_CHROMA_LOCATION_MIDPOINT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkChromaLocationKHR") >>
-                      (VkChromaLocationKHR <$> step readPrec)))
-
-pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR :: VkChromaLocationKHR
-
-pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VkChromaLocationKHR 0
-
-pattern VK_CHROMA_LOCATION_MIDPOINT_KHR :: VkChromaLocationKHR
-
-pattern VK_CHROMA_LOCATION_MIDPOINT_KHR = VkChromaLocationKHR 1
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkColorSpaceKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkColorSpaceKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkColorSpaceKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkColorSpaceKHR.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkColorSpaceKHR.html VkColorSpaceKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkColorSpaceKHR.html VkColorSpaceKHR registry at www.khronos.org>
 newtype VkColorSpaceKHR = VkColorSpaceKHR Int32
                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkCommandBufferLevel.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkCommandBufferLevel.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkCommandBufferLevel.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkCommandBufferLevel.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCommandBufferLevel.html VkCommandBufferLevel registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCommandBufferLevel.html VkCommandBufferLevel registry at www.khronos.org>
 newtype VkCommandBufferLevel = VkCommandBufferLevel Int32
                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkCompareOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkCompareOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkCompareOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkCompareOp.hs
@@ -22,7 +22,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCompareOp.html VkCompareOp registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCompareOp.html VkCompareOp registry at www.khronos.org>
 newtype VkCompareOp = VkCompareOp Int32
                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkComponentSwizzle.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkComponentSwizzle.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkComponentSwizzle.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkComponentSwizzle.hs
@@ -23,7 +23,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkComponentSwizzle.html VkComponentSwizzle registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkComponentSwizzle.html VkComponentSwizzle registry at www.khronos.org>
 newtype VkComponentSwizzle = VkComponentSwizzle Int32
                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkConservativeRasterizationModeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkConservativeRasterizationModeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkConservativeRasterizationModeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkConservativeRasterizationModeEXT.hs
@@ -22,7 +22,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkConservativeRasterizationModeEXT.html VkConservativeRasterizationModeEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkConservativeRasterizationModeEXT.html VkConservativeRasterizationModeEXT registry at www.khronos.org>
 newtype VkConservativeRasterizationModeEXT = VkConservativeRasterizationModeEXT Int32
                                                deriving (Eq, Ord, Num, Bounded, Storable, Enum,
                                                          Data, Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkCoverageModulationModeNV.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkCoverageModulationModeNV.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkCoverageModulationModeNV.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkCoverageModulationModeNV.hs
@@ -23,7 +23,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCoverageModulationModeNV.html VkCoverageModulationModeNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCoverageModulationModeNV.html VkCoverageModulationModeNV registry at www.khronos.org>
 newtype VkCoverageModulationModeNV = VkCoverageModulationModeNV Int32
                                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                  Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDebugReportObjectTypeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDebugReportObjectTypeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDebugReportObjectTypeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDebugReportObjectTypeEXT.hs
@@ -53,7 +53,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDebugReportObjectTypeEXT.html VkDebugReportObjectTypeEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugReportObjectTypeEXT.html VkDebugReportObjectTypeEXT registry at www.khronos.org>
 newtype VkDebugReportObjectTypeEXT = VkDebugReportObjectTypeEXT Int32
                                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                  Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDebugUtilsMessageSeverityFlagsEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDebugUtilsMessageSeverityFlagsEXT.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDebugUtilsMessageSeverityFlagsEXT.hs
@@ -0,0 +1,135 @@
+{-# 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.VkDebugUtilsMessageSeverityFlagsEXT
+       (VkDebugUtilsMessageSeverityBitmaskEXT(VkDebugUtilsMessageSeverityBitmaskEXT,
+                                              VkDebugUtilsMessageSeverityFlagsEXT,
+                                              VkDebugUtilsMessageSeverityFlagBitsEXT,
+                                              VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,
+                                              VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,
+                                              VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,
+                                              VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT),
+        VkDebugUtilsMessageSeverityFlagsEXT,
+        VkDebugUtilsMessageSeverityFlagBitsEXT)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkDebugUtilsMessageSeverityBitmaskEXT (a ::
+                                                 FlagType) = VkDebugUtilsMessageSeverityBitmaskEXT VkFlags
+                                                               deriving (Eq, Ord, Storable, Data,
+                                                                         Generic)
+
+type VkDebugUtilsMessageSeverityFlagsEXT =
+     VkDebugUtilsMessageSeverityBitmaskEXT FlagMask
+
+type VkDebugUtilsMessageSeverityFlagBitsEXT =
+     VkDebugUtilsMessageSeverityBitmaskEXT FlagBit
+
+pattern VkDebugUtilsMessageSeverityFlagBitsEXT ::
+        VkFlags -> VkDebugUtilsMessageSeverityBitmaskEXT FlagBit
+
+pattern VkDebugUtilsMessageSeverityFlagBitsEXT n =
+        VkDebugUtilsMessageSeverityBitmaskEXT n
+
+pattern VkDebugUtilsMessageSeverityFlagsEXT ::
+        VkFlags -> VkDebugUtilsMessageSeverityBitmaskEXT FlagMask
+
+pattern VkDebugUtilsMessageSeverityFlagsEXT n =
+        VkDebugUtilsMessageSeverityBitmaskEXT n
+
+deriving instance
+         Bits (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT ::
+        VkDebugUtilsMessageSeverityBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT =
+        VkDebugUtilsMessageSeverityBitmaskEXT 1
+
+-- | bitpos = @4@
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT ::
+        VkDebugUtilsMessageSeverityBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT =
+        VkDebugUtilsMessageSeverityBitmaskEXT 16
+
+-- | bitpos = @8@
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT ::
+        VkDebugUtilsMessageSeverityBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT =
+        VkDebugUtilsMessageSeverityBitmaskEXT 256
+
+-- | bitpos = @12@
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT ::
+        VkDebugUtilsMessageSeverityBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT =
+        VkDebugUtilsMessageSeverityBitmaskEXT 4096
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDebugUtilsMessageTypeFlagsEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDebugUtilsMessageTypeFlagsEXT.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDebugUtilsMessageTypeFlagsEXT.hs
@@ -0,0 +1,118 @@
+{-# 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.VkDebugUtilsMessageTypeFlagsEXT
+       (VkDebugUtilsMessageTypeBitmaskEXT(VkDebugUtilsMessageTypeBitmaskEXT,
+                                          VkDebugUtilsMessageTypeFlagsEXT,
+                                          VkDebugUtilsMessageTypeFlagBitsEXT,
+                                          VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,
+                                          VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,
+                                          VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT),
+        VkDebugUtilsMessageTypeFlagsEXT,
+        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)
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkDebugUtilsMessageTypeBitmaskEXT (a ::
+                                             FlagType) = VkDebugUtilsMessageTypeBitmaskEXT VkFlags
+                                                           deriving (Eq, Ord, Storable, Data,
+                                                                     Generic)
+
+type VkDebugUtilsMessageTypeFlagsEXT =
+     VkDebugUtilsMessageTypeBitmaskEXT FlagMask
+
+type VkDebugUtilsMessageTypeFlagBitsEXT =
+     VkDebugUtilsMessageTypeBitmaskEXT FlagBit
+
+pattern VkDebugUtilsMessageTypeFlagBitsEXT ::
+        VkFlags -> VkDebugUtilsMessageTypeBitmaskEXT FlagBit
+
+pattern VkDebugUtilsMessageTypeFlagBitsEXT n =
+        VkDebugUtilsMessageTypeBitmaskEXT n
+
+pattern VkDebugUtilsMessageTypeFlagsEXT ::
+        VkFlags -> VkDebugUtilsMessageTypeBitmaskEXT FlagMask
+
+pattern VkDebugUtilsMessageTypeFlagsEXT n =
+        VkDebugUtilsMessageTypeBitmaskEXT n
+
+deriving instance Bits (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT ::
+        VkDebugUtilsMessageTypeBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT =
+        VkDebugUtilsMessageTypeBitmaskEXT 1
+
+-- | bitpos = @1@
+pattern VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT ::
+        VkDebugUtilsMessageTypeBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT =
+        VkDebugUtilsMessageTypeBitmaskEXT 2
+
+-- | bitpos = @2@
+pattern VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT ::
+        VkDebugUtilsMessageTypeBitmaskEXT a
+
+pattern VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT =
+        VkDebugUtilsMessageTypeBitmaskEXT 4
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorType.hs
@@ -28,7 +28,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorType.html VkDescriptorType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorType.html VkDescriptorType registry at www.khronos.org>
 newtype VkDescriptorType = VkDescriptorType Int32
                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateType.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateType.hs
@@ -0,0 +1,51 @@
+{-# OPTIONS_HADDOCK ignore-exports#-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType
+       (VkDescriptorUpdateTemplateType(VkDescriptorUpdateTemplateType,
+                                       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_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, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+-- | type = @enum@
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorUpdateTemplateType.html VkDescriptorUpdateTemplateType registry at www.khronos.org>
+newtype VkDescriptorUpdateTemplateType = VkDescriptorUpdateTemplateType Int32
+                                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
+                                                     Generic)
+
+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)
+
+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)))
+
+-- | Create descriptor update template for descriptor set updates
+pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET ::
+        VkDescriptorUpdateTemplateType
+
+pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET =
+        VkDescriptorUpdateTemplateType 0
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateTypeKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateTypeKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateTypeKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDescriptorUpdateTemplateTypeKHR.hs
@@ -1,65 +1,25 @@
-{-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateTypeKHR
-       (VkDescriptorUpdateTemplateTypeKHR(VkDescriptorUpdateTemplateTypeKHR,
-                                          VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
-                                          VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR))
-       where
+       (VkDescriptorUpdateTemplateTypeKHR(..)) 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           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
--- | type = @enum@
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorUpdateTemplateTypeKHR.html VkDescriptorUpdateTemplateTypeKHR registry at www.khronos.org>
-newtype VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateTypeKHR Int32
-                                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                        Generic)
+newtype VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateTypeKHR VkFlags
+                                              deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                        FiniteBits, Storable, Real, Data, Generic)
 
 instance Show VkDescriptorUpdateTemplateTypeKHR where
-        showsPrec _ VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR
-          = showString
-              "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR"
-        showsPrec _ VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
-          = showString
-              "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"
-        showsPrec p (VkDescriptorUpdateTemplateTypeKHR x)
-          = showParen (p >= 11)
-              (showString "VkDescriptorUpdateTemplateTypeKHR " . showsPrec 11 x)
+        {-# INLINE show #-}
+        show (VkDescriptorUpdateTemplateTypeKHR x) = show x
 
 instance Read VkDescriptorUpdateTemplateTypeKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR",
-                   pure VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR),
-                  ("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR",
-                   pure VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDescriptorUpdateTemplateTypeKHR") >>
-                      (VkDescriptorUpdateTemplateTypeKHR <$> step readPrec)))
-
--- | Create descriptor update template for descriptor set updates
-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR ::
-        VkDescriptorUpdateTemplateTypeKHR
-
-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR =
-        VkDescriptorUpdateTemplateTypeKHR 0
-
--- | Create descriptor update template for pushed descriptor updates
-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR ::
-        VkDescriptorUpdateTemplateTypeKHR
-
-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR =
-        VkDescriptorUpdateTemplateTypeKHR 1
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceEventTypeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceEventTypeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceEventTypeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceEventTypeEXT.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceEventTypeEXT.html VkDeviceEventTypeEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceEventTypeEXT.html VkDeviceEventTypeEXT registry at www.khronos.org>
 newtype VkDeviceEventTypeEXT = VkDeviceEventTypeEXT Int32
                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceGroupPresentModeFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceGroupPresentModeFlagsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceGroupPresentModeFlagsKHR.hs
@@ -0,0 +1,142 @@
+{-# 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.VkDeviceGroupPresentModeFlagsKHR
+       (VkDeviceGroupPresentModeBitmaskKHR(VkDeviceGroupPresentModeBitmaskKHR,
+                                           VkDeviceGroupPresentModeFlagsKHR,
+                                           VkDeviceGroupPresentModeFlagBitsKHR,
+                                           VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,
+                                           VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,
+                                           VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,
+                                           VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR),
+        VkDeviceGroupPresentModeFlagsKHR,
+        VkDeviceGroupPresentModeFlagBitsKHR)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkDeviceGroupPresentModeBitmaskKHR (a ::
+                                              FlagType) = VkDeviceGroupPresentModeBitmaskKHR VkFlags
+                                                            deriving (Eq, Ord, Storable, Data,
+                                                                      Generic)
+
+type VkDeviceGroupPresentModeFlagsKHR =
+     VkDeviceGroupPresentModeBitmaskKHR FlagMask
+
+type VkDeviceGroupPresentModeFlagBitsKHR =
+     VkDeviceGroupPresentModeBitmaskKHR FlagBit
+
+pattern VkDeviceGroupPresentModeFlagBitsKHR ::
+        VkFlags -> VkDeviceGroupPresentModeBitmaskKHR FlagBit
+
+pattern VkDeviceGroupPresentModeFlagBitsKHR n =
+        VkDeviceGroupPresentModeBitmaskKHR n
+
+pattern VkDeviceGroupPresentModeFlagsKHR ::
+        VkFlags -> VkDeviceGroupPresentModeBitmaskKHR FlagMask
+
+pattern VkDeviceGroupPresentModeFlagsKHR n =
+        VkDeviceGroupPresentModeBitmaskKHR n
+
+deriving instance
+         Bits (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
+
+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)
+
+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)))
+
+-- | Present from local memory
+--
+--   bitpos = @0@
+pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR ::
+        VkDeviceGroupPresentModeBitmaskKHR a
+
+pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR =
+        VkDeviceGroupPresentModeBitmaskKHR 1
+
+-- | Present from remote memory
+--
+--   bitpos = @1@
+pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR ::
+        VkDeviceGroupPresentModeBitmaskKHR a
+
+pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR =
+        VkDeviceGroupPresentModeBitmaskKHR 2
+
+-- | Present sum of local and/or remote memory
+--
+--   bitpos = @2@
+pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR ::
+        VkDeviceGroupPresentModeBitmaskKHR a
+
+pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR =
+        VkDeviceGroupPresentModeBitmaskKHR 4
+
+-- | Each physical device presents from local memory
+--
+--   bitpos = @3@
+pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR ::
+        VkDeviceGroupPresentModeBitmaskKHR a
+
+pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR =
+        VkDeviceGroupPresentModeBitmaskKHR 8
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceGroupPresentModeFlagsKHX.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceGroupPresentModeFlagsKHX.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceGroupPresentModeFlagsKHX.hs
+++ /dev/null
@@ -1,142 +0,0 @@
-{-# 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.VkDeviceGroupPresentModeFlagsKHX
-       (VkDeviceGroupPresentModeBitmaskKHX(VkDeviceGroupPresentModeBitmaskKHX,
-                                           VkDeviceGroupPresentModeFlagsKHX,
-                                           VkDeviceGroupPresentModeFlagBitsKHX,
-                                           VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
-                                           VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
-                                           VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
-                                           VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX),
-        VkDeviceGroupPresentModeFlagsKHX,
-        VkDeviceGroupPresentModeFlagBitsKHX)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkDeviceGroupPresentModeBitmaskKHX (a ::
-                                              FlagType) = VkDeviceGroupPresentModeBitmaskKHX VkFlags
-                                                            deriving (Eq, Ord, Storable, Data,
-                                                                      Generic)
-
-type VkDeviceGroupPresentModeFlagsKHX =
-     VkDeviceGroupPresentModeBitmaskKHX FlagMask
-
-type VkDeviceGroupPresentModeFlagBitsKHX =
-     VkDeviceGroupPresentModeBitmaskKHX FlagBit
-
-pattern VkDeviceGroupPresentModeFlagBitsKHX ::
-        VkFlags -> VkDeviceGroupPresentModeBitmaskKHX FlagBit
-
-pattern VkDeviceGroupPresentModeFlagBitsKHX n =
-        VkDeviceGroupPresentModeBitmaskKHX n
-
-pattern VkDeviceGroupPresentModeFlagsKHX ::
-        VkFlags -> VkDeviceGroupPresentModeBitmaskKHX FlagMask
-
-pattern VkDeviceGroupPresentModeFlagsKHX n =
-        VkDeviceGroupPresentModeBitmaskKHX n
-
-deriving instance
-         Bits (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-deriving instance
-         FiniteBits (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-deriving instance
-         Integral (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-deriving instance Num (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-deriving instance
-         Bounded (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-deriving instance
-         Enum (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-deriving instance
-         Real (VkDeviceGroupPresentModeBitmaskKHX FlagMask)
-
-instance Show (VkDeviceGroupPresentModeBitmaskKHX a) where
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX
-          = showString "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX"
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX
-          = showString "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX"
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX
-          = showString "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX"
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
-          = showString
-              "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX"
-        showsPrec p (VkDeviceGroupPresentModeBitmaskKHX x)
-          = showParen (p >= 11)
-              (showString "VkDeviceGroupPresentModeBitmaskKHX " . showsPrec 11 x)
-
-instance Read (VkDeviceGroupPresentModeBitmaskKHX a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX),
-                  ("VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX),
-                  ("VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX),
-                  ("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDeviceGroupPresentModeBitmaskKHX") >>
-                      (VkDeviceGroupPresentModeBitmaskKHX <$> step readPrec)))
-
--- | Present from local memory
---
---   bitpos = @0@
-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX ::
-        VkDeviceGroupPresentModeBitmaskKHX a
-
-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX =
-        VkDeviceGroupPresentModeBitmaskKHX 1
-
--- | Present from remote memory
---
---   bitpos = @1@
-pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX ::
-        VkDeviceGroupPresentModeBitmaskKHX a
-
-pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX =
-        VkDeviceGroupPresentModeBitmaskKHX 2
-
--- | Present sum of local and/or remote memory
---
---   bitpos = @2@
-pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX ::
-        VkDeviceGroupPresentModeBitmaskKHX a
-
-pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX =
-        VkDeviceGroupPresentModeBitmaskKHX 4
-
--- | Each physical device presents from local memory
---
---   bitpos = @3@
-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX ::
-        VkDeviceGroupPresentModeBitmaskKHX a
-
-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX =
-        VkDeviceGroupPresentModeBitmaskKHX 8
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceQueueCreateFlagBits.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceQueueCreateFlagBits.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceQueueCreateFlagBits.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE Strict                     #-}
-module Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlagBits
-       (VkDeviceQueueCreateFlagBits(..)) 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 VkDeviceQueueCreateFlagBits = VkDeviceQueueCreateFlagBits VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
-
-instance Show VkDeviceQueueCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkDeviceQueueCreateFlagBits x) = show x
-
-instance Read VkDeviceQueueCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceQueueCreateFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceQueueCreateFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDeviceQueueCreateFlags.hs
@@ -0,0 +1,73 @@
+{-# 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.VkDeviceQueueCreateFlags
+       (VkDeviceQueueCreateBitmask(VkDeviceQueueCreateBitmask,
+                                   VkDeviceQueueCreateFlags, VkDeviceQueueCreateFlagBits),
+        VkDeviceQueueCreateFlags, VkDeviceQueueCreateFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkDeviceQueueCreateBitmask (a ::
+                                      FlagType) = VkDeviceQueueCreateBitmask VkFlags
+                                                    deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkDeviceQueueCreateFlags = VkDeviceQueueCreateBitmask FlagMask
+
+type VkDeviceQueueCreateFlagBits =
+     VkDeviceQueueCreateBitmask FlagBit
+
+pattern VkDeviceQueueCreateFlagBits ::
+        VkFlags -> VkDeviceQueueCreateBitmask FlagBit
+
+pattern VkDeviceQueueCreateFlagBits n =
+        VkDeviceQueueCreateBitmask n
+
+pattern VkDeviceQueueCreateFlags ::
+        VkFlags -> VkDeviceQueueCreateBitmask FlagMask
+
+pattern VkDeviceQueueCreateFlags n = VkDeviceQueueCreateBitmask n
+
+deriving instance Bits (VkDeviceQueueCreateBitmask FlagMask)
+
+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)
+
+instance Read (VkDeviceQueueCreateBitmask a) where
+        readPrec
+          = parens
+              (choose [] +++
+                 prec 10
+                   (expectP (Ident "VkDeviceQueueCreateBitmask") >>
+                      (VkDeviceQueueCreateBitmask <$> step readPrec)))
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDiscardRectangleModeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDiscardRectangleModeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDiscardRectangleModeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDiscardRectangleModeEXT.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDiscardRectangleModeEXT.html VkDiscardRectangleModeEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDiscardRectangleModeEXT.html VkDiscardRectangleModeEXT registry at www.khronos.org>
 newtype VkDiscardRectangleModeEXT = VkDiscardRectangleModeEXT Int32
                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                 Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayEventTypeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayEventTypeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayEventTypeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayEventTypeEXT.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayEventTypeEXT.html VkDisplayEventTypeEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayEventTypeEXT.html VkDisplayEventTypeEXT registry at www.khronos.org>
 newtype VkDisplayEventTypeEXT = VkDisplayEventTypeEXT Int32
                                   deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayPowerStateEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayPowerStateEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayPowerStateEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDisplayPowerStateEXT.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayPowerStateEXT.html VkDisplayPowerStateEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayPowerStateEXT.html VkDisplayPowerStateEXT registry at www.khronos.org>
 newtype VkDisplayPowerStateEXT = VkDisplayPowerStateEXT Int32
                                    deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkDynamicState.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkDynamicState.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkDynamicState.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkDynamicState.hs
@@ -25,7 +25,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDynamicState.html VkDynamicState registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDynamicState.html VkDynamicState registry at www.khronos.org>
 newtype VkDynamicState = VkDynamicState Int32
                            deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlagBitsKHR.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagBitsKHR
+       (VkExternalFenceFeatureFlagBitsKHR(..)) 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 VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBitsKHR VkFlags
+                                              deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                        FiniteBits, Storable, Real, Data, Generic)
+
+instance Show VkExternalFenceFeatureFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkExternalFenceFeatureFlagBitsKHR x) = show x
+
+instance Read VkExternalFenceFeatureFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlags.hs
@@ -0,0 +1,101 @@
+{-# 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.VkExternalFenceFeatureFlags
+       (VkExternalFenceFeatureBitmask(VkExternalFenceFeatureBitmask,
+                                      VkExternalFenceFeatureFlags, VkExternalFenceFeatureFlagBits,
+                                      VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
+                                      VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT),
+        VkExternalFenceFeatureFlags, VkExternalFenceFeatureFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkExternalFenceFeatureBitmask (a ::
+                                         FlagType) = VkExternalFenceFeatureBitmask VkFlags
+                                                       deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkExternalFenceFeatureFlags =
+     VkExternalFenceFeatureBitmask FlagMask
+
+type VkExternalFenceFeatureFlagBits =
+     VkExternalFenceFeatureBitmask FlagBit
+
+pattern VkExternalFenceFeatureFlagBits ::
+        VkFlags -> VkExternalFenceFeatureBitmask FlagBit
+
+pattern VkExternalFenceFeatureFlagBits n =
+        VkExternalFenceFeatureBitmask n
+
+pattern VkExternalFenceFeatureFlags ::
+        VkFlags -> VkExternalFenceFeatureBitmask FlagMask
+
+pattern VkExternalFenceFeatureFlags n =
+        VkExternalFenceFeatureBitmask n
+
+deriving instance Bits (VkExternalFenceFeatureBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT ::
+        VkExternalFenceFeatureBitmask a
+
+pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT =
+        VkExternalFenceFeatureBitmask 1
+
+-- | bitpos = @1@
+pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT ::
+        VkExternalFenceFeatureBitmask a
+
+pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT =
+        VkExternalFenceFeatureBitmask 2
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceFeatureFlagsKHR.hs
+++ /dev/null
@@ -1,105 +0,0 @@
-{-# 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.VkExternalFenceFeatureFlagsKHR
-       (VkExternalFenceFeatureBitmaskKHR(VkExternalFenceFeatureBitmaskKHR,
-                                         VkExternalFenceFeatureFlagsKHR,
-                                         VkExternalFenceFeatureFlagBitsKHR,
-                                         VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
-                                         VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR),
-        VkExternalFenceFeatureFlagsKHR, VkExternalFenceFeatureFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkExternalFenceFeatureBitmaskKHR (a ::
-                                            FlagType) = VkExternalFenceFeatureBitmaskKHR VkFlags
-                                                          deriving (Eq, Ord, Storable, Data,
-                                                                    Generic)
-
-type VkExternalFenceFeatureFlagsKHR =
-     VkExternalFenceFeatureBitmaskKHR FlagMask
-
-type VkExternalFenceFeatureFlagBitsKHR =
-     VkExternalFenceFeatureBitmaskKHR FlagBit
-
-pattern VkExternalFenceFeatureFlagBitsKHR ::
-        VkFlags -> VkExternalFenceFeatureBitmaskKHR FlagBit
-
-pattern VkExternalFenceFeatureFlagBitsKHR n =
-        VkExternalFenceFeatureBitmaskKHR n
-
-pattern VkExternalFenceFeatureFlagsKHR ::
-        VkFlags -> VkExternalFenceFeatureBitmaskKHR FlagMask
-
-pattern VkExternalFenceFeatureFlagsKHR n =
-        VkExternalFenceFeatureBitmaskKHR n
-
-deriving instance Bits (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         FiniteBits (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Integral (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-deriving instance Num (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-deriving instance Enum (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-deriving instance Real (VkExternalFenceFeatureBitmaskKHR FlagMask)
-
-instance Show (VkExternalFenceFeatureBitmaskKHR a) where
-        showsPrec _ VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR
-          = showString "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
-          = showString "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"
-        showsPrec p (VkExternalFenceFeatureBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkExternalFenceFeatureBitmaskKHR " . showsPrec 11 x)
-
-instance Read (VkExternalFenceFeatureBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR",
-                   pure VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR),
-                  ("VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR",
-                   pure VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalFenceFeatureBitmaskKHR") >>
-                      (VkExternalFenceFeatureBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR ::
-        VkExternalFenceFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR =
-        VkExternalFenceFeatureBitmaskKHR 1
-
--- | bitpos = @1@
-pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR ::
-        VkExternalFenceFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR =
-        VkExternalFenceFeatureBitmaskKHR 2
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlagBitsKHR.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagBitsKHR
+       (VkExternalFenceHandleTypeFlagBitsKHR(..)) 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 VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBitsKHR VkFlags
+                                                 deriving (Eq, Ord, Num, Bounded, Enum, Integral,
+                                                           Bits, FiniteBits, Storable, Real, Data,
+                                                           Generic)
+
+instance Show VkExternalFenceHandleTypeFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkExternalFenceHandleTypeFlagBitsKHR x) = show x
+
+instance Read VkExternalFenceHandleTypeFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlags.hs
@@ -0,0 +1,129 @@
+{-# 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.VkExternalFenceHandleTypeFlags
+       (VkExternalFenceHandleTypeBitmask(VkExternalFenceHandleTypeBitmask,
+                                         VkExternalFenceHandleTypeFlags,
+                                         VkExternalFenceHandleTypeFlagBits,
+                                         VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+                                         VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+                                         VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+                                         VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT),
+        VkExternalFenceHandleTypeFlags, VkExternalFenceHandleTypeFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkExternalFenceHandleTypeBitmask (a ::
+                                            FlagType) = VkExternalFenceHandleTypeBitmask VkFlags
+                                                          deriving (Eq, Ord, Storable, Data,
+                                                                    Generic)
+
+type VkExternalFenceHandleTypeFlags =
+     VkExternalFenceHandleTypeBitmask FlagMask
+
+type VkExternalFenceHandleTypeFlagBits =
+     VkExternalFenceHandleTypeBitmask FlagBit
+
+pattern VkExternalFenceHandleTypeFlagBits ::
+        VkFlags -> VkExternalFenceHandleTypeBitmask FlagBit
+
+pattern VkExternalFenceHandleTypeFlagBits n =
+        VkExternalFenceHandleTypeBitmask n
+
+pattern VkExternalFenceHandleTypeFlags ::
+        VkFlags -> VkExternalFenceHandleTypeBitmask FlagMask
+
+pattern VkExternalFenceHandleTypeFlags n =
+        VkExternalFenceHandleTypeBitmask n
+
+deriving instance Bits (VkExternalFenceHandleTypeBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT ::
+        VkExternalFenceHandleTypeBitmask a
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT =
+        VkExternalFenceHandleTypeBitmask 1
+
+-- | bitpos = @1@
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT ::
+        VkExternalFenceHandleTypeBitmask a
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT =
+        VkExternalFenceHandleTypeBitmask 2
+
+-- | bitpos = @2@
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT ::
+        VkExternalFenceHandleTypeBitmask a
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT =
+        VkExternalFenceHandleTypeBitmask 4
+
+-- | bitpos = @3@
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT ::
+        VkExternalFenceHandleTypeBitmask a
+
+pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT =
+        VkExternalFenceHandleTypeBitmask 8
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalFenceHandleTypeFlagsKHR.hs
+++ /dev/null
@@ -1,136 +0,0 @@
-{-# 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.VkExternalFenceHandleTypeFlagsKHR
-       (VkExternalFenceHandleTypeBitmaskKHR(VkExternalFenceHandleTypeBitmaskKHR,
-                                            VkExternalFenceHandleTypeFlagsKHR,
-                                            VkExternalFenceHandleTypeFlagBitsKHR,
-                                            VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
-                                            VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
-                                            VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
-                                            VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR),
-        VkExternalFenceHandleTypeFlagsKHR,
-        VkExternalFenceHandleTypeFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkExternalFenceHandleTypeBitmaskKHR (a ::
-                                               FlagType) = VkExternalFenceHandleTypeBitmaskKHR VkFlags
-                                                             deriving (Eq, Ord, Storable, Data,
-                                                                       Generic)
-
-type VkExternalFenceHandleTypeFlagsKHR =
-     VkExternalFenceHandleTypeBitmaskKHR FlagMask
-
-type VkExternalFenceHandleTypeFlagBitsKHR =
-     VkExternalFenceHandleTypeBitmaskKHR FlagBit
-
-pattern VkExternalFenceHandleTypeFlagBitsKHR ::
-        VkFlags -> VkExternalFenceHandleTypeBitmaskKHR FlagBit
-
-pattern VkExternalFenceHandleTypeFlagBitsKHR n =
-        VkExternalFenceHandleTypeBitmaskKHR n
-
-pattern VkExternalFenceHandleTypeFlagsKHR ::
-        VkFlags -> VkExternalFenceHandleTypeBitmaskKHR FlagMask
-
-pattern VkExternalFenceHandleTypeFlagsKHR n =
-        VkExternalFenceHandleTypeBitmaskKHR n
-
-deriving instance
-         Bits (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         FiniteBits (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Integral (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Num (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Enum (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Real (VkExternalFenceHandleTypeBitmaskKHR FlagMask)
-
-instance Show (VkExternalFenceHandleTypeBitmaskKHR a) where
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
-          = showString
-              "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"
-        showsPrec p (VkExternalFenceHandleTypeBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkExternalFenceHandleTypeBitmaskKHR " .
-                 showsPrec 11 x)
-
-instance Read (VkExternalFenceHandleTypeBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR),
-                  ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR),
-                  ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR),
-                  ("VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalFenceHandleTypeBitmaskKHR") >>
-                      (VkExternalFenceHandleTypeBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR ::
-        VkExternalFenceHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR =
-        VkExternalFenceHandleTypeBitmaskKHR 1
-
--- | bitpos = @1@
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR ::
-        VkExternalFenceHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR =
-        VkExternalFenceHandleTypeBitmaskKHR 2
-
--- | bitpos = @2@
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR ::
-        VkExternalFenceHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR =
-        VkExternalFenceHandleTypeBitmaskKHR 4
-
--- | bitpos = @3@
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR ::
-        VkExternalFenceHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR =
-        VkExternalFenceHandleTypeBitmaskKHR 8
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlagBitsKHR.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagBitsKHR
+       (VkExternalMemoryFeatureFlagBitsKHR(..)) 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 VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBitsKHR VkFlags
+                                               deriving (Eq, Ord, Num, Bounded, Enum, Integral,
+                                                         Bits, FiniteBits, Storable, Real, Data,
+                                                         Generic)
+
+instance Show VkExternalMemoryFeatureFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkExternalMemoryFeatureFlagBitsKHR x) = show x
+
+instance Read VkExternalMemoryFeatureFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlags.hs
@@ -0,0 +1,115 @@
+{-# 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.VkExternalMemoryFeatureFlags
+       (VkExternalMemoryFeatureBitmask(VkExternalMemoryFeatureBitmask,
+                                       VkExternalMemoryFeatureFlags,
+                                       VkExternalMemoryFeatureFlagBits,
+                                       VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
+                                       VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
+                                       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT),
+        VkExternalMemoryFeatureFlags, VkExternalMemoryFeatureFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkExternalMemoryFeatureBitmask (a ::
+                                          FlagType) = VkExternalMemoryFeatureBitmask VkFlags
+                                                        deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkExternalMemoryFeatureFlags =
+     VkExternalMemoryFeatureBitmask FlagMask
+
+type VkExternalMemoryFeatureFlagBits =
+     VkExternalMemoryFeatureBitmask FlagBit
+
+pattern VkExternalMemoryFeatureFlagBits ::
+        VkFlags -> VkExternalMemoryFeatureBitmask FlagBit
+
+pattern VkExternalMemoryFeatureFlagBits n =
+        VkExternalMemoryFeatureBitmask n
+
+pattern VkExternalMemoryFeatureFlags ::
+        VkFlags -> VkExternalMemoryFeatureBitmask FlagMask
+
+pattern VkExternalMemoryFeatureFlags n =
+        VkExternalMemoryFeatureBitmask n
+
+deriving instance Bits (VkExternalMemoryFeatureBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT ::
+        VkExternalMemoryFeatureBitmask a
+
+pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT =
+        VkExternalMemoryFeatureBitmask 1
+
+-- | bitpos = @1@
+pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT ::
+        VkExternalMemoryFeatureBitmask a
+
+pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT =
+        VkExternalMemoryFeatureBitmask 2
+
+-- | bitpos = @2@
+pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT ::
+        VkExternalMemoryFeatureBitmask a
+
+pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT =
+        VkExternalMemoryFeatureBitmask 4
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryFeatureFlagsKHR.hs
+++ /dev/null
@@ -1,118 +0,0 @@
-{-# 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.VkExternalMemoryFeatureFlagsKHR
-       (VkExternalMemoryFeatureBitmaskKHR(VkExternalMemoryFeatureBitmaskKHR,
-                                          VkExternalMemoryFeatureFlagsKHR,
-                                          VkExternalMemoryFeatureFlagBitsKHR,
-                                          VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
-                                          VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
-                                          VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR),
-        VkExternalMemoryFeatureFlagsKHR,
-        VkExternalMemoryFeatureFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkExternalMemoryFeatureBitmaskKHR (a ::
-                                             FlagType) = VkExternalMemoryFeatureBitmaskKHR VkFlags
-                                                           deriving (Eq, Ord, Storable, Data,
-                                                                     Generic)
-
-type VkExternalMemoryFeatureFlagsKHR =
-     VkExternalMemoryFeatureBitmaskKHR FlagMask
-
-type VkExternalMemoryFeatureFlagBitsKHR =
-     VkExternalMemoryFeatureBitmaskKHR FlagBit
-
-pattern VkExternalMemoryFeatureFlagBitsKHR ::
-        VkFlags -> VkExternalMemoryFeatureBitmaskKHR FlagBit
-
-pattern VkExternalMemoryFeatureFlagBitsKHR n =
-        VkExternalMemoryFeatureBitmaskKHR n
-
-pattern VkExternalMemoryFeatureFlagsKHR ::
-        VkFlags -> VkExternalMemoryFeatureBitmaskKHR FlagMask
-
-pattern VkExternalMemoryFeatureFlagsKHR n =
-        VkExternalMemoryFeatureBitmaskKHR n
-
-deriving instance Bits (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         FiniteBits (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Integral (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-deriving instance Num (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-deriving instance Enum (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-deriving instance Real (VkExternalMemoryFeatureBitmaskKHR FlagMask)
-
-instance Show (VkExternalMemoryFeatureBitmaskKHR a) where
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"
-        showsPrec p (VkExternalMemoryFeatureBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkExternalMemoryFeatureBitmaskKHR " . showsPrec 11 x)
-
-instance Read (VkExternalMemoryFeatureBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalMemoryFeatureBitmaskKHR") >>
-                      (VkExternalMemoryFeatureBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR ::
-        VkExternalMemoryFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR =
-        VkExternalMemoryFeatureBitmaskKHR 1
-
--- | bitpos = @1@
-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR ::
-        VkExternalMemoryFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR =
-        VkExternalMemoryFeatureBitmaskKHR 2
-
--- | bitpos = @2@
-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR ::
-        VkExternalMemoryFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR =
-        VkExternalMemoryFeatureBitmaskKHR 4
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlagBitsKHR.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagBitsKHR
+       (VkExternalMemoryHandleTypeFlagBitsKHR(..)) 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 VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBitsKHR VkFlags
+                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
+                                                            Bits, FiniteBits, Storable, Real, Data,
+                                                            Generic)
+
+instance Show VkExternalMemoryHandleTypeFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkExternalMemoryHandleTypeFlagBitsKHR x) = show x
+
+instance Read VkExternalMemoryHandleTypeFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlags.hs
@@ -0,0 +1,166 @@
+{-# 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.VkExternalMemoryHandleTypeFlags
+       (VkExternalMemoryHandleTypeBitmask(VkExternalMemoryHandleTypeBitmask,
+                                          VkExternalMemoryHandleTypeFlags,
+                                          VkExternalMemoryHandleTypeFlagBits,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
+                                          VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT),
+        VkExternalMemoryHandleTypeFlags,
+        VkExternalMemoryHandleTypeFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkExternalMemoryHandleTypeBitmask (a ::
+                                             FlagType) = VkExternalMemoryHandleTypeBitmask VkFlags
+                                                           deriving (Eq, Ord, Storable, Data,
+                                                                     Generic)
+
+type VkExternalMemoryHandleTypeFlags =
+     VkExternalMemoryHandleTypeBitmask FlagMask
+
+type VkExternalMemoryHandleTypeFlagBits =
+     VkExternalMemoryHandleTypeBitmask FlagBit
+
+pattern VkExternalMemoryHandleTypeFlagBits ::
+        VkFlags -> VkExternalMemoryHandleTypeBitmask FlagBit
+
+pattern VkExternalMemoryHandleTypeFlagBits n =
+        VkExternalMemoryHandleTypeBitmask n
+
+pattern VkExternalMemoryHandleTypeFlags ::
+        VkFlags -> VkExternalMemoryHandleTypeBitmask FlagMask
+
+pattern VkExternalMemoryHandleTypeFlags n =
+        VkExternalMemoryHandleTypeBitmask n
+
+deriving instance Bits (VkExternalMemoryHandleTypeBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT =
+        VkExternalMemoryHandleTypeBitmask 1
+
+-- | bitpos = @1@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT =
+        VkExternalMemoryHandleTypeBitmask 2
+
+-- | bitpos = @2@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT =
+        VkExternalMemoryHandleTypeBitmask 4
+
+-- | bitpos = @3@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT =
+        VkExternalMemoryHandleTypeBitmask 8
+
+-- | bitpos = @4@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT =
+        VkExternalMemoryHandleTypeBitmask 16
+
+-- | bitpos = @5@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT =
+        VkExternalMemoryHandleTypeBitmask 32
+
+-- | bitpos = @6@
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT ::
+        VkExternalMemoryHandleTypeBitmask a
+
+pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT =
+        VkExternalMemoryHandleTypeBitmask 64
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalMemoryHandleTypeFlagsKHR.hs
+++ /dev/null
@@ -1,175 +0,0 @@
-{-# 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.VkExternalMemoryHandleTypeFlagsKHR
-       (VkExternalMemoryHandleTypeBitmaskKHR(VkExternalMemoryHandleTypeBitmaskKHR,
-                                             VkExternalMemoryHandleTypeFlagsKHR,
-                                             VkExternalMemoryHandleTypeFlagBitsKHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
-                                             VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR),
-        VkExternalMemoryHandleTypeFlagsKHR,
-        VkExternalMemoryHandleTypeFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkExternalMemoryHandleTypeBitmaskKHR (a ::
-                                                FlagType) = VkExternalMemoryHandleTypeBitmaskKHR VkFlags
-                                                              deriving (Eq, Ord, Storable, Data,
-                                                                        Generic)
-
-type VkExternalMemoryHandleTypeFlagsKHR =
-     VkExternalMemoryHandleTypeBitmaskKHR FlagMask
-
-type VkExternalMemoryHandleTypeFlagBitsKHR =
-     VkExternalMemoryHandleTypeBitmaskKHR FlagBit
-
-pattern VkExternalMemoryHandleTypeFlagBitsKHR ::
-        VkFlags -> VkExternalMemoryHandleTypeBitmaskKHR FlagBit
-
-pattern VkExternalMemoryHandleTypeFlagBitsKHR n =
-        VkExternalMemoryHandleTypeBitmaskKHR n
-
-pattern VkExternalMemoryHandleTypeFlagsKHR ::
-        VkFlags -> VkExternalMemoryHandleTypeBitmaskKHR FlagMask
-
-pattern VkExternalMemoryHandleTypeFlagsKHR n =
-        VkExternalMemoryHandleTypeBitmaskKHR n
-
-deriving instance
-         Bits (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         FiniteBits (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Integral (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Num (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Enum (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Real (VkExternalMemoryHandleTypeBitmaskKHR FlagMask)
-
-instance Show (VkExternalMemoryHandleTypeBitmaskKHR a) where
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
-          = showString
-              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"
-        showsPrec _
-          VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR
-          = showString
-              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
-          = showString
-              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"
-        showsPrec p (VkExternalMemoryHandleTypeBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkExternalMemoryHandleTypeBitmaskKHR " .
-                 showsPrec 11 x)
-
-instance Read (VkExternalMemoryHandleTypeBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalMemoryHandleTypeBitmaskKHR") >>
-                      (VkExternalMemoryHandleTypeBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 1
-
--- | bitpos = @1@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 2
-
--- | bitpos = @2@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 4
-
--- | bitpos = @3@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 8
-
--- | bitpos = @4@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 16
-
--- | bitpos = @5@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 32
-
--- | bitpos = @6@
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR ::
-        VkExternalMemoryHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR =
-        VkExternalMemoryHandleTypeBitmaskKHR 64
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlagBitsKHR.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagBitsKHR
+       (VkExternalSemaphoreFeatureFlagBitsKHR(..)) 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 VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBitsKHR VkFlags
+                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
+                                                            Bits, FiniteBits, Storable, Real, Data,
+                                                            Generic)
+
+instance Show VkExternalSemaphoreFeatureFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkExternalSemaphoreFeatureFlagBitsKHR x) = show x
+
+instance Read VkExternalSemaphoreFeatureFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlags.hs
@@ -0,0 +1,106 @@
+{-# 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.VkExternalSemaphoreFeatureFlags
+       (VkExternalSemaphoreFeatureBitmask(VkExternalSemaphoreFeatureBitmask,
+                                          VkExternalSemaphoreFeatureFlags,
+                                          VkExternalSemaphoreFeatureFlagBits,
+                                          VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
+                                          VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT),
+        VkExternalSemaphoreFeatureFlags,
+        VkExternalSemaphoreFeatureFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkExternalSemaphoreFeatureBitmask (a ::
+                                             FlagType) = VkExternalSemaphoreFeatureBitmask VkFlags
+                                                           deriving (Eq, Ord, Storable, Data,
+                                                                     Generic)
+
+type VkExternalSemaphoreFeatureFlags =
+     VkExternalSemaphoreFeatureBitmask FlagMask
+
+type VkExternalSemaphoreFeatureFlagBits =
+     VkExternalSemaphoreFeatureBitmask FlagBit
+
+pattern VkExternalSemaphoreFeatureFlagBits ::
+        VkFlags -> VkExternalSemaphoreFeatureBitmask FlagBit
+
+pattern VkExternalSemaphoreFeatureFlagBits n =
+        VkExternalSemaphoreFeatureBitmask n
+
+pattern VkExternalSemaphoreFeatureFlags ::
+        VkFlags -> VkExternalSemaphoreFeatureBitmask FlagMask
+
+pattern VkExternalSemaphoreFeatureFlags n =
+        VkExternalSemaphoreFeatureBitmask n
+
+deriving instance Bits (VkExternalSemaphoreFeatureBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT ::
+        VkExternalSemaphoreFeatureBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT =
+        VkExternalSemaphoreFeatureBitmask 1
+
+-- | bitpos = @1@
+pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT ::
+        VkExternalSemaphoreFeatureBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT =
+        VkExternalSemaphoreFeatureBitmask 2
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreFeatureFlagsKHR.hs
+++ /dev/null
@@ -1,111 +0,0 @@
-{-# 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.VkExternalSemaphoreFeatureFlagsKHR
-       (VkExternalSemaphoreFeatureBitmaskKHR(VkExternalSemaphoreFeatureBitmaskKHR,
-                                             VkExternalSemaphoreFeatureFlagsKHR,
-                                             VkExternalSemaphoreFeatureFlagBitsKHR,
-                                             VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
-                                             VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR),
-        VkExternalSemaphoreFeatureFlagsKHR,
-        VkExternalSemaphoreFeatureFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkExternalSemaphoreFeatureBitmaskKHR (a ::
-                                                FlagType) = VkExternalSemaphoreFeatureBitmaskKHR VkFlags
-                                                              deriving (Eq, Ord, Storable, Data,
-                                                                        Generic)
-
-type VkExternalSemaphoreFeatureFlagsKHR =
-     VkExternalSemaphoreFeatureBitmaskKHR FlagMask
-
-type VkExternalSemaphoreFeatureFlagBitsKHR =
-     VkExternalSemaphoreFeatureBitmaskKHR FlagBit
-
-pattern VkExternalSemaphoreFeatureFlagBitsKHR ::
-        VkFlags -> VkExternalSemaphoreFeatureBitmaskKHR FlagBit
-
-pattern VkExternalSemaphoreFeatureFlagBitsKHR n =
-        VkExternalSemaphoreFeatureBitmaskKHR n
-
-pattern VkExternalSemaphoreFeatureFlagsKHR ::
-        VkFlags -> VkExternalSemaphoreFeatureBitmaskKHR FlagMask
-
-pattern VkExternalSemaphoreFeatureFlagsKHR n =
-        VkExternalSemaphoreFeatureBitmaskKHR n
-
-deriving instance
-         Bits (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         FiniteBits (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Integral (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Num (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Enum (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-deriving instance
-         Real (VkExternalSemaphoreFeatureBitmaskKHR FlagMask)
-
-instance Show (VkExternalSemaphoreFeatureBitmaskKHR a) where
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR
-          = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
-          = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"
-        showsPrec p (VkExternalSemaphoreFeatureBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkExternalSemaphoreFeatureBitmaskKHR " .
-                 showsPrec 11 x)
-
-instance Read (VkExternalSemaphoreFeatureBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR),
-                  ("VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalSemaphoreFeatureBitmaskKHR") >>
-                      (VkExternalSemaphoreFeatureBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR ::
-        VkExternalSemaphoreFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR =
-        VkExternalSemaphoreFeatureBitmaskKHR 1
-
--- | bitpos = @1@
-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR ::
-        VkExternalSemaphoreFeatureBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR =
-        VkExternalSemaphoreFeatureBitmaskKHR 2
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlagBitsKHR.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagBitsKHR
+       (VkExternalSemaphoreHandleTypeFlagBitsKHR(..)) 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 VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBitsKHR VkFlags
+                                                     deriving (Eq, Ord, Num, Bounded, Enum,
+                                                               Integral, Bits, FiniteBits, Storable,
+                                                               Real, Data, Generic)
+
+instance Show VkExternalSemaphoreHandleTypeFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkExternalSemaphoreHandleTypeFlagBitsKHR x) = show x
+
+instance Read VkExternalSemaphoreHandleTypeFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlags.hs
@@ -0,0 +1,148 @@
+{-# 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.VkExternalSemaphoreHandleTypeFlags
+       (VkExternalSemaphoreHandleTypeBitmask(VkExternalSemaphoreHandleTypeBitmask,
+                                             VkExternalSemaphoreHandleTypeFlags,
+                                             VkExternalSemaphoreHandleTypeFlagBits,
+                                             VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
+                                             VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+                                             VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+                                             VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
+                                             VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT),
+        VkExternalSemaphoreHandleTypeFlags,
+        VkExternalSemaphoreHandleTypeFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkExternalSemaphoreHandleTypeBitmask (a ::
+                                                FlagType) = VkExternalSemaphoreHandleTypeBitmask VkFlags
+                                                              deriving (Eq, Ord, Storable, Data,
+                                                                        Generic)
+
+type VkExternalSemaphoreHandleTypeFlags =
+     VkExternalSemaphoreHandleTypeBitmask FlagMask
+
+type VkExternalSemaphoreHandleTypeFlagBits =
+     VkExternalSemaphoreHandleTypeBitmask FlagBit
+
+pattern VkExternalSemaphoreHandleTypeFlagBits ::
+        VkFlags -> VkExternalSemaphoreHandleTypeBitmask FlagBit
+
+pattern VkExternalSemaphoreHandleTypeFlagBits n =
+        VkExternalSemaphoreHandleTypeBitmask n
+
+pattern VkExternalSemaphoreHandleTypeFlags ::
+        VkFlags -> VkExternalSemaphoreHandleTypeBitmask FlagMask
+
+pattern VkExternalSemaphoreHandleTypeFlags n =
+        VkExternalSemaphoreHandleTypeBitmask n
+
+deriving instance
+         Bits (VkExternalSemaphoreHandleTypeBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT ::
+        VkExternalSemaphoreHandleTypeBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT =
+        VkExternalSemaphoreHandleTypeBitmask 1
+
+-- | bitpos = @1@
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT ::
+        VkExternalSemaphoreHandleTypeBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT =
+        VkExternalSemaphoreHandleTypeBitmask 2
+
+-- | bitpos = @2@
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT ::
+        VkExternalSemaphoreHandleTypeBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT =
+        VkExternalSemaphoreHandleTypeBitmask 4
+
+-- | bitpos = @3@
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT ::
+        VkExternalSemaphoreHandleTypeBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT =
+        VkExternalSemaphoreHandleTypeBitmask 8
+
+-- | bitpos = @4@
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT ::
+        VkExternalSemaphoreHandleTypeBitmask a
+
+pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT =
+        VkExternalSemaphoreHandleTypeBitmask 16
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkExternalSemaphoreHandleTypeFlagsKHR.hs
+++ /dev/null
@@ -1,151 +0,0 @@
-{-# 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.VkExternalSemaphoreHandleTypeFlagsKHR
-       (VkExternalSemaphoreHandleTypeBitmaskKHR(VkExternalSemaphoreHandleTypeBitmaskKHR,
-                                                VkExternalSemaphoreHandleTypeFlagsKHR,
-                                                VkExternalSemaphoreHandleTypeFlagBitsKHR,
-                                                VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
-                                                VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
-                                                VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
-                                                VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
-                                                VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR),
-        VkExternalSemaphoreHandleTypeFlagsKHR,
-        VkExternalSemaphoreHandleTypeFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkExternalSemaphoreHandleTypeBitmaskKHR (a ::
-                                                   FlagType) = VkExternalSemaphoreHandleTypeBitmaskKHR VkFlags
-                                                                 deriving (Eq, Ord, Storable, Data,
-                                                                           Generic)
-
-type VkExternalSemaphoreHandleTypeFlagsKHR =
-     VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask
-
-type VkExternalSemaphoreHandleTypeFlagBitsKHR =
-     VkExternalSemaphoreHandleTypeBitmaskKHR FlagBit
-
-pattern VkExternalSemaphoreHandleTypeFlagBitsKHR ::
-        VkFlags -> VkExternalSemaphoreHandleTypeBitmaskKHR FlagBit
-
-pattern VkExternalSemaphoreHandleTypeFlagBitsKHR n =
-        VkExternalSemaphoreHandleTypeBitmaskKHR n
-
-pattern VkExternalSemaphoreHandleTypeFlagsKHR ::
-        VkFlags -> VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask
-
-pattern VkExternalSemaphoreHandleTypeFlagsKHR n =
-        VkExternalSemaphoreHandleTypeBitmaskKHR n
-
-deriving instance
-         Bits (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         FiniteBits (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Integral (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Num (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Enum (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-deriving instance
-         Real (VkExternalSemaphoreHandleTypeBitmaskKHR FlagMask)
-
-instance Show (VkExternalSemaphoreHandleTypeBitmaskKHR a) where
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
-          = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
-          = showString
-              "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"
-        showsPrec _
-          VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
-          = showString
-              "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR
-          = showString
-              "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
-          = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"
-        showsPrec p (VkExternalSemaphoreHandleTypeBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkExternalSemaphoreHandleTypeBitmaskKHR " .
-                 showsPrec 11 x)
-
-instance Read (VkExternalSemaphoreHandleTypeBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalSemaphoreHandleTypeBitmaskKHR") >>
-                      (VkExternalSemaphoreHandleTypeBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR ::
-        VkExternalSemaphoreHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR =
-        VkExternalSemaphoreHandleTypeBitmaskKHR 1
-
--- | bitpos = @1@
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR ::
-        VkExternalSemaphoreHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR =
-        VkExternalSemaphoreHandleTypeBitmaskKHR 2
-
--- | bitpos = @2@
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
-        :: VkExternalSemaphoreHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
-        = VkExternalSemaphoreHandleTypeBitmaskKHR 4
-
--- | bitpos = @3@
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR ::
-        VkExternalSemaphoreHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR =
-        VkExternalSemaphoreHandleTypeBitmaskKHR 8
-
--- | bitpos = @4@
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR ::
-        VkExternalSemaphoreHandleTypeBitmaskKHR a
-
-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR =
-        VkExternalSemaphoreHandleTypeBitmaskKHR 16
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlagBitsKHR.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkFenceImportFlagBitsKHR
+       (VkFenceImportFlagBitsKHR(..)) 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 VkFenceImportFlagBitsKHR = VkFenceImportFlagBitsKHR VkFlags
+                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                               FiniteBits, Storable, Real, Data, Generic)
+
+instance Show VkFenceImportFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkFenceImportFlagBitsKHR x) = show x
+
+instance Read VkFenceImportFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlags.hs
@@ -0,0 +1,81 @@
+{-# 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.VkFenceImportFlags
+       (VkFenceImportBitmask(VkFenceImportBitmask, VkFenceImportFlags,
+                             VkFenceImportFlagBits, VK_FENCE_IMPORT_TEMPORARY_BIT),
+        VkFenceImportFlags, VkFenceImportFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkFenceImportBitmask (a ::
+                                FlagType) = VkFenceImportBitmask VkFlags
+                                              deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkFenceImportFlags = VkFenceImportBitmask FlagMask
+
+type VkFenceImportFlagBits = VkFenceImportBitmask FlagBit
+
+pattern VkFenceImportFlagBits ::
+        VkFlags -> VkFenceImportBitmask FlagBit
+
+pattern VkFenceImportFlagBits n = VkFenceImportBitmask n
+
+pattern VkFenceImportFlags ::
+        VkFlags -> VkFenceImportBitmask FlagMask
+
+pattern VkFenceImportFlags n = VkFenceImportBitmask n
+
+deriving instance Bits (VkFenceImportBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_FENCE_IMPORT_TEMPORARY_BIT :: VkFenceImportBitmask a
+
+pattern VK_FENCE_IMPORT_TEMPORARY_BIT = VkFenceImportBitmask 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkFenceImportFlagsKHR.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-{-# 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.VkFenceImportFlagsKHR
-       (VkFenceImportBitmaskKHR(VkFenceImportBitmaskKHR,
-                                VkFenceImportFlagsKHR, VkFenceImportFlagBitsKHR,
-                                VK_FENCE_IMPORT_TEMPORARY_BIT_KHR),
-        VkFenceImportFlagsKHR, VkFenceImportFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkFenceImportBitmaskKHR (a ::
-                                   FlagType) = VkFenceImportBitmaskKHR VkFlags
-                                                 deriving (Eq, Ord, Storable, Data, Generic)
-
-type VkFenceImportFlagsKHR = VkFenceImportBitmaskKHR FlagMask
-
-type VkFenceImportFlagBitsKHR = VkFenceImportBitmaskKHR FlagBit
-
-pattern VkFenceImportFlagBitsKHR ::
-        VkFlags -> VkFenceImportBitmaskKHR FlagBit
-
-pattern VkFenceImportFlagBitsKHR n = VkFenceImportBitmaskKHR n
-
-pattern VkFenceImportFlagsKHR ::
-        VkFlags -> VkFenceImportBitmaskKHR FlagMask
-
-pattern VkFenceImportFlagsKHR n = VkFenceImportBitmaskKHR n
-
-deriving instance Bits (VkFenceImportBitmaskKHR FlagMask)
-
-deriving instance FiniteBits (VkFenceImportBitmaskKHR FlagMask)
-
-deriving instance Integral (VkFenceImportBitmaskKHR FlagMask)
-
-deriving instance Num (VkFenceImportBitmaskKHR FlagMask)
-
-deriving instance Bounded (VkFenceImportBitmaskKHR FlagMask)
-
-deriving instance Enum (VkFenceImportBitmaskKHR FlagMask)
-
-deriving instance Real (VkFenceImportBitmaskKHR FlagMask)
-
-instance Show (VkFenceImportBitmaskKHR a) where
-        showsPrec _ VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
-          = showString "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"
-        showsPrec p (VkFenceImportBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkFenceImportBitmaskKHR " . showsPrec 11 x)
-
-instance Read (VkFenceImportBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FENCE_IMPORT_TEMPORARY_BIT_KHR",
-                   pure VK_FENCE_IMPORT_TEMPORARY_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFenceImportBitmaskKHR") >>
-                      (VkFenceImportBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR ::
-        VkFenceImportBitmaskKHR a
-
-pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR =
-        VkFenceImportBitmaskKHR 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkFilter.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkFilter.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkFilter.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkFilter.hs
@@ -18,7 +18,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFilter.html VkFilter registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFilter.html VkFilter registry at www.khronos.org>
 newtype VkFilter = VkFilter Int32
                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkFormat.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkFormat.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkFormat.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkFormat.hs
@@ -119,7 +119,7 @@
 --   type = @enum@
 --
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFormat.html VkFormat registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFormat.html VkFormat registry at www.khronos.org>
 newtype VkFormat = VkFormat Int32
                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkFrontFace.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkFrontFace.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkFrontFace.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkFrontFace.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFrontFace.html VkFrontFace registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFrontFace.html VkFrontFace registry at www.khronos.org>
 newtype VkFrontFace = VkFrontFace Int32
                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkImageLayout.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkImageLayout.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkImageLayout.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkImageLayout.hs
@@ -26,7 +26,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageLayout.html VkImageLayout registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageLayout.html VkImageLayout registry at www.khronos.org>
 newtype VkImageLayout = VkImageLayout Int32
                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkImageTiling.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkImageTiling.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkImageTiling.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkImageTiling.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageTiling.html VkImageTiling registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageTiling.html VkImageTiling registry at www.khronos.org>
 newtype VkImageTiling = VkImageTiling Int32
                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkImageType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkImageType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkImageType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkImageType.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageType.html VkImageType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageType.html VkImageType registry at www.khronos.org>
 newtype VkImageType = VkImageType Int32
                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkImageViewType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkImageViewType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkImageViewType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkImageViewType.hs
@@ -22,7 +22,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageViewType.html VkImageViewType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageViewType.html VkImageViewType registry at www.khronos.org>
 newtype VkImageViewType = VkImageViewType Int32
                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkIndexType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkIndexType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkIndexType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkIndexType.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkIndexType.html VkIndexType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkIndexType.html VkIndexType registry at www.khronos.org>
 newtype VkIndexType = VkIndexType Int32
                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkIndirectCommandsTokenTypeNVX.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkIndirectCommandsTokenTypeNVX.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkIndirectCommandsTokenTypeNVX.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkIndirectCommandsTokenTypeNVX.hs
@@ -27,7 +27,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkIndirectCommandsTokenTypeNVX.html VkIndirectCommandsTokenTypeNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkIndirectCommandsTokenTypeNVX.html VkIndirectCommandsTokenTypeNVX registry at www.khronos.org>
 newtype VkIndirectCommandsTokenTypeNVX = VkIndirectCommandsTokenTypeNVX Int32
                                            deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                      Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkInternalAllocationType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkInternalAllocationType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkInternalAllocationType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkInternalAllocationType.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkInternalAllocationType.html VkInternalAllocationType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkInternalAllocationType.html VkInternalAllocationType registry at www.khronos.org>
 newtype VkInternalAllocationType = VkInternalAllocationType Int32
                                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkLogicOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkLogicOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkLogicOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkLogicOp.hs
@@ -25,7 +25,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkLogicOp.html VkLogicOp registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkLogicOp.html VkLogicOp registry at www.khronos.org>
 newtype VkLogicOp = VkLogicOp Int32
                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlagBitsKHR.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagBitsKHR
+       (VkMemoryAllocateFlagBitsKHR(..)) 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 VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBitsKHR VkFlags
+                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                  FiniteBits, Storable, Real, Data, Generic)
+
+instance Show VkMemoryAllocateFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkMemoryAllocateFlagBitsKHR x) = show x
+
+instance Read VkMemoryAllocateFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlags.hs
@@ -0,0 +1,86 @@
+{-# 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.VkMemoryAllocateFlags
+       (VkMemoryAllocateBitmask(VkMemoryAllocateBitmask,
+                                VkMemoryAllocateFlags, VkMemoryAllocateFlagBits,
+                                VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT),
+        VkMemoryAllocateFlags, VkMemoryAllocateFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkMemoryAllocateBitmask (a ::
+                                   FlagType) = VkMemoryAllocateBitmask VkFlags
+                                                 deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkMemoryAllocateFlags = VkMemoryAllocateBitmask FlagMask
+
+type VkMemoryAllocateFlagBits = VkMemoryAllocateBitmask FlagBit
+
+pattern VkMemoryAllocateFlagBits ::
+        VkFlags -> VkMemoryAllocateBitmask FlagBit
+
+pattern VkMemoryAllocateFlagBits n = VkMemoryAllocateBitmask n
+
+pattern VkMemoryAllocateFlags ::
+        VkFlags -> VkMemoryAllocateBitmask FlagMask
+
+pattern VkMemoryAllocateFlags n = VkMemoryAllocateBitmask n
+
+deriving instance Bits (VkMemoryAllocateBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | Force allocation on specific devices
+--
+--   bitpos = @0@
+pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT ::
+        VkMemoryAllocateBitmask a
+
+pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT =
+        VkMemoryAllocateBitmask 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlagsKHX.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlagsKHX.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkMemoryAllocateFlagsKHX.hs
+++ /dev/null
@@ -1,88 +0,0 @@
-{-# 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.VkMemoryAllocateFlagsKHX
-       (VkMemoryAllocateBitmaskKHX(VkMemoryAllocateBitmaskKHX,
-                                   VkMemoryAllocateFlagsKHX, VkMemoryAllocateFlagBitsKHX,
-                                   VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX),
-        VkMemoryAllocateFlagsKHX, VkMemoryAllocateFlagBitsKHX)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkMemoryAllocateBitmaskKHX (a ::
-                                      FlagType) = VkMemoryAllocateBitmaskKHX VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
-
-type VkMemoryAllocateFlagsKHX = VkMemoryAllocateBitmaskKHX FlagMask
-
-type VkMemoryAllocateFlagBitsKHX =
-     VkMemoryAllocateBitmaskKHX FlagBit
-
-pattern VkMemoryAllocateFlagBitsKHX ::
-        VkFlags -> VkMemoryAllocateBitmaskKHX FlagBit
-
-pattern VkMemoryAllocateFlagBitsKHX n =
-        VkMemoryAllocateBitmaskKHX n
-
-pattern VkMemoryAllocateFlagsKHX ::
-        VkFlags -> VkMemoryAllocateBitmaskKHX FlagMask
-
-pattern VkMemoryAllocateFlagsKHX n = VkMemoryAllocateBitmaskKHX n
-
-deriving instance Bits (VkMemoryAllocateBitmaskKHX FlagMask)
-
-deriving instance FiniteBits (VkMemoryAllocateBitmaskKHX FlagMask)
-
-deriving instance Integral (VkMemoryAllocateBitmaskKHX FlagMask)
-
-deriving instance Num (VkMemoryAllocateBitmaskKHX FlagMask)
-
-deriving instance Bounded (VkMemoryAllocateBitmaskKHX FlagMask)
-
-deriving instance Enum (VkMemoryAllocateBitmaskKHX FlagMask)
-
-deriving instance Real (VkMemoryAllocateBitmaskKHX FlagMask)
-
-instance Show (VkMemoryAllocateBitmaskKHX a) where
-        showsPrec _ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
-          = showString "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX"
-        showsPrec p (VkMemoryAllocateBitmaskKHX x)
-          = showParen (p >= 11)
-              (showString "VkMemoryAllocateBitmaskKHX " . showsPrec 11 x)
-
-instance Read (VkMemoryAllocateBitmaskKHX a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX",
-                   pure VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkMemoryAllocateBitmaskKHX") >>
-                      (VkMemoryAllocateBitmaskKHX <$> step readPrec)))
-
--- | Force allocation on specific devices
---
---   bitpos = @0@
-pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX ::
-        VkMemoryAllocateBitmaskKHX a
-
-pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX =
-        VkMemoryAllocateBitmaskKHX 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkObjectEntryTypeNVX.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkObjectEntryTypeNVX.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkObjectEntryTypeNVX.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkObjectEntryTypeNVX.hs
@@ -24,7 +24,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectEntryTypeNVX.html VkObjectEntryTypeNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectEntryTypeNVX.html VkObjectEntryTypeNVX registry at www.khronos.org>
 newtype VkObjectEntryTypeNVX = VkObjectEntryTypeNVX Int32
                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkObjectType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkObjectType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkObjectType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkObjectType.hs
@@ -34,7 +34,7 @@
 --   type = @enum@
 --
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectType.html VkObjectType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html VkObjectType registry at www.khronos.org>
 newtype VkObjectType = VkObjectType Int32
                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlagBitsKHR.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagBitsKHR
+       (VkPeerMemoryFeatureFlagBitsKHR(..)) 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 VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBitsKHR VkFlags
+                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                     FiniteBits, Storable, Real, Data, Generic)
+
+instance Show VkPeerMemoryFeatureFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkPeerMemoryFeatureFlagBitsKHR x) = show x
+
+instance Read VkPeerMemoryFeatureFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlags.hs
@@ -0,0 +1,130 @@
+{-# 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.VkPeerMemoryFeatureFlags
+       (VkPeerMemoryFeatureBitmask(VkPeerMemoryFeatureBitmask,
+                                   VkPeerMemoryFeatureFlags, VkPeerMemoryFeatureFlagBits,
+                                   VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
+                                   VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
+                                   VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
+                                   VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT),
+        VkPeerMemoryFeatureFlags, VkPeerMemoryFeatureFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkPeerMemoryFeatureBitmask (a ::
+                                      FlagType) = VkPeerMemoryFeatureBitmask VkFlags
+                                                    deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkPeerMemoryFeatureFlags = VkPeerMemoryFeatureBitmask FlagMask
+
+type VkPeerMemoryFeatureFlagBits =
+     VkPeerMemoryFeatureBitmask FlagBit
+
+pattern VkPeerMemoryFeatureFlagBits ::
+        VkFlags -> VkPeerMemoryFeatureBitmask FlagBit
+
+pattern VkPeerMemoryFeatureFlagBits n =
+        VkPeerMemoryFeatureBitmask n
+
+pattern VkPeerMemoryFeatureFlags ::
+        VkFlags -> VkPeerMemoryFeatureBitmask FlagMask
+
+pattern VkPeerMemoryFeatureFlags n = VkPeerMemoryFeatureBitmask n
+
+deriving instance Bits (VkPeerMemoryFeatureBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | Can read with vkCmdCopy commands
+--
+--   bitpos = @0@
+pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT ::
+        VkPeerMemoryFeatureBitmask a
+
+pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT =
+        VkPeerMemoryFeatureBitmask 1
+
+-- | Can write with vkCmdCopy commands
+--
+--   bitpos = @1@
+pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT ::
+        VkPeerMemoryFeatureBitmask a
+
+pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT =
+        VkPeerMemoryFeatureBitmask 2
+
+-- | Can read with any access type/command
+--
+--   bitpos = @2@
+pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT ::
+        VkPeerMemoryFeatureBitmask a
+
+pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT =
+        VkPeerMemoryFeatureBitmask 4
+
+-- | Can write with and access type/command
+--
+--   bitpos = @3@
+pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT ::
+        VkPeerMemoryFeatureBitmask a
+
+pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT =
+        VkPeerMemoryFeatureBitmask 8
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlagsKHX.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlagsKHX.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPeerMemoryFeatureFlagsKHX.hs
+++ /dev/null
@@ -1,133 +0,0 @@
-{-# 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.VkPeerMemoryFeatureFlagsKHX
-       (VkPeerMemoryFeatureBitmaskKHX(VkPeerMemoryFeatureBitmaskKHX,
-                                      VkPeerMemoryFeatureFlagsKHX, VkPeerMemoryFeatureFlagBitsKHX,
-                                      VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
-                                      VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
-                                      VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
-                                      VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX),
-        VkPeerMemoryFeatureFlagsKHX, VkPeerMemoryFeatureFlagBitsKHX)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkPeerMemoryFeatureBitmaskKHX (a ::
-                                         FlagType) = VkPeerMemoryFeatureBitmaskKHX VkFlags
-                                                       deriving (Eq, Ord, Storable, Data, Generic)
-
-type VkPeerMemoryFeatureFlagsKHX =
-     VkPeerMemoryFeatureBitmaskKHX FlagMask
-
-type VkPeerMemoryFeatureFlagBitsKHX =
-     VkPeerMemoryFeatureBitmaskKHX FlagBit
-
-pattern VkPeerMemoryFeatureFlagBitsKHX ::
-        VkFlags -> VkPeerMemoryFeatureBitmaskKHX FlagBit
-
-pattern VkPeerMemoryFeatureFlagBitsKHX n =
-        VkPeerMemoryFeatureBitmaskKHX n
-
-pattern VkPeerMemoryFeatureFlagsKHX ::
-        VkFlags -> VkPeerMemoryFeatureBitmaskKHX FlagMask
-
-pattern VkPeerMemoryFeatureFlagsKHX n =
-        VkPeerMemoryFeatureBitmaskKHX n
-
-deriving instance Bits (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-deriving instance
-         FiniteBits (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-deriving instance Integral (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-deriving instance Num (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-deriving instance Bounded (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-deriving instance Enum (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-deriving instance Real (VkPeerMemoryFeatureBitmaskKHX FlagMask)
-
-instance Show (VkPeerMemoryFeatureBitmaskKHX a) where
-        showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX
-          = showString "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX"
-        showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX
-          = showString "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX"
-        showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX
-          = showString "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX"
-        showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
-          = showString "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX"
-        showsPrec p (VkPeerMemoryFeatureBitmaskKHX x)
-          = showParen (p >= 11)
-              (showString "VkPeerMemoryFeatureBitmaskKHX " . showsPrec 11 x)
-
-instance Read (VkPeerMemoryFeatureBitmaskKHX a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX",
-                   pure VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX),
-                  ("VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX",
-                   pure VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX),
-                  ("VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX",
-                   pure VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX),
-                  ("VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX",
-                   pure VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPeerMemoryFeatureBitmaskKHX") >>
-                      (VkPeerMemoryFeatureBitmaskKHX <$> step readPrec)))
-
--- | Can read with vkCmdCopy commands
---
---   bitpos = @0@
-pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX ::
-        VkPeerMemoryFeatureBitmaskKHX a
-
-pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX =
-        VkPeerMemoryFeatureBitmaskKHX 1
-
--- | Can write with vkCmdCopy commands
---
---   bitpos = @1@
-pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX ::
-        VkPeerMemoryFeatureBitmaskKHX a
-
-pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX =
-        VkPeerMemoryFeatureBitmaskKHX 2
-
--- | Can read with any access type/command
---
---   bitpos = @2@
-pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX ::
-        VkPeerMemoryFeatureBitmaskKHX a
-
-pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX =
-        VkPeerMemoryFeatureBitmaskKHX 4
-
--- | Can write with and access type/command
---
---   bitpos = @3@
-pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX ::
-        VkPeerMemoryFeatureBitmaskKHX a
-
-pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX =
-        VkPeerMemoryFeatureBitmaskKHX 8
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPhysicalDeviceType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPhysicalDeviceType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPhysicalDeviceType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPhysicalDeviceType.hs
@@ -23,7 +23,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceType.html VkPhysicalDeviceType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceType.html VkPhysicalDeviceType registry at www.khronos.org>
 newtype VkPhysicalDeviceType = VkPhysicalDeviceType Int32
                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineBindPoint.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineBindPoint.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineBindPoint.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineBindPoint.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineBindPoint.html VkPipelineBindPoint registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineBindPoint.html VkPipelineBindPoint registry at www.khronos.org>
 newtype VkPipelineBindPoint = VkPipelineBindPoint Int32
                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineCacheHeaderVersion.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineCacheHeaderVersion.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineCacheHeaderVersion.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPipelineCacheHeaderVersion.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineCacheHeaderVersion.html VkPipelineCacheHeaderVersion registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineCacheHeaderVersion.html VkPipelineCacheHeaderVersion registry at www.khronos.org>
 newtype VkPipelineCacheHeaderVersion = VkPipelineCacheHeaderVersion Int32
                                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                    Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehavior.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehavior.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehavior.hs
@@ -0,0 +1,60 @@
+{-# OPTIONS_HADDOCK ignore-exports#-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkPointClippingBehavior
+       (VkPointClippingBehavior(VkPointClippingBehavior,
+                                VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
+                                VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY))
+       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, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+-- | type = @enum@
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPointClippingBehavior.html VkPointClippingBehavior registry at www.khronos.org>
+newtype VkPointClippingBehavior = VkPointClippingBehavior Int32
+                                    deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+
+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)
+
+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)))
+
+pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES ::
+        VkPointClippingBehavior
+
+pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES =
+        VkPointClippingBehavior 0
+
+pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY ::
+        VkPointClippingBehavior
+
+pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY =
+        VkPointClippingBehavior 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehaviorKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehaviorKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehaviorKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPointClippingBehaviorKHR.hs
@@ -1,61 +1,25 @@
-{-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.VkPointClippingBehaviorKHR
-       (VkPointClippingBehaviorKHR(VkPointClippingBehaviorKHR,
-                                   VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
-                                   VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR))
-       where
+       (VkPointClippingBehaviorKHR(..)) 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           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
--- | type = @enum@
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPointClippingBehaviorKHR.html VkPointClippingBehaviorKHR registry at www.khronos.org>
-newtype VkPointClippingBehaviorKHR = VkPointClippingBehaviorKHR Int32
-                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                 Generic)
+newtype VkPointClippingBehaviorKHR = VkPointClippingBehaviorKHR VkFlags
+                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                 FiniteBits, Storable, Real, Data, Generic)
 
 instance Show VkPointClippingBehaviorKHR where
-        showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR
-          = showString "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR"
-        showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
-          = showString "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR"
-        showsPrec p (VkPointClippingBehaviorKHR x)
-          = showParen (p >= 11)
-              (showString "VkPointClippingBehaviorKHR " . showsPrec 11 x)
+        {-# INLINE show #-}
+        show (VkPointClippingBehaviorKHR x) = show x
 
 instance Read VkPointClippingBehaviorKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR",
-                   pure VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR),
-                  ("VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR",
-                   pure VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPointClippingBehaviorKHR") >>
-                      (VkPointClippingBehaviorKHR <$> step readPrec)))
-
-pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR ::
-        VkPointClippingBehaviorKHR
-
-pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR =
-        VkPointClippingBehaviorKHR 0
-
-pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR ::
-        VkPointClippingBehaviorKHR
-
-pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR =
-        VkPointClippingBehaviorKHR 1
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPolygonMode.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPolygonMode.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPolygonMode.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPolygonMode.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPolygonMode.html VkPolygonMode registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPolygonMode.html VkPolygonMode registry at www.khronos.org>
 newtype VkPolygonMode = VkPolygonMode Int32
                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPresentModeKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPresentModeKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPresentModeKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPresentModeKHR.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPresentModeKHR.html VkPresentModeKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentModeKHR.html VkPresentModeKHR registry at www.khronos.org>
 newtype VkPresentModeKHR = VkPresentModeKHR Int32
                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkPrimitiveTopology.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkPrimitiveTopology.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkPrimitiveTopology.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkPrimitiveTopology.hs
@@ -29,7 +29,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPrimitiveTopology.html VkPrimitiveTopology registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPrimitiveTopology.html VkPrimitiveTopology registry at www.khronos.org>
 newtype VkPrimitiveTopology = VkPrimitiveTopology Int32
                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkQueryType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkQueryType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkQueryType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkQueryType.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkQueryType.html VkQueryType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkQueryType.html VkQueryType registry at www.khronos.org>
 newtype VkQueryType = VkQueryType Int32
                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkQueueGlobalPriorityEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkQueueGlobalPriorityEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkQueueGlobalPriorityEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkQueueGlobalPriorityEXT.hs
@@ -23,7 +23,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkQueueGlobalPriorityEXT.html VkQueueGlobalPriorityEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkQueueGlobalPriorityEXT.html VkQueueGlobalPriorityEXT registry at www.khronos.org>
 newtype VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityEXT Int32
                                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkRasterizationOrderAMD.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkRasterizationOrderAMD.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkRasterizationOrderAMD.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkRasterizationOrderAMD.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRasterizationOrderAMD.html VkRasterizationOrderAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRasterizationOrderAMD.html VkRasterizationOrderAMD registry at www.khronos.org>
 newtype VkRasterizationOrderAMD = VkRasterizationOrderAMD Int32
                                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkResult.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkResult.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkResult.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkResult.hs
@@ -29,7 +29,7 @@
 --   type = @enum@
 --
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkResult.html VkResult registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkResult.html VkResult registry at www.khronos.org>
 newtype VkResult = VkResult Int32
                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerAddressMode.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerAddressMode.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerAddressMode.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerAddressMode.hs
@@ -23,7 +23,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerAddressMode.html VkSamplerAddressMode registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerAddressMode.html VkSamplerAddressMode registry at www.khronos.org>
 newtype VkSamplerAddressMode = VkSamplerAddressMode Int32
                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerMipmapMode.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerMipmapMode.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerMipmapMode.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerMipmapMode.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerMipmapMode.html VkSamplerMipmapMode registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerMipmapMode.html VkSamplerMipmapMode registry at www.khronos.org>
 newtype VkSamplerMipmapMode = VkSamplerMipmapMode Int32
                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerReductionModeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerReductionModeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerReductionModeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerReductionModeEXT.hs
@@ -22,7 +22,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerReductionModeEXT.html VkSamplerReductionModeEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerReductionModeEXT.html VkSamplerReductionModeEXT registry at www.khronos.org>
 newtype VkSamplerReductionModeEXT = VkSamplerReductionModeEXT Int32
                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                 Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversion.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversion.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversion.hs
@@ -0,0 +1,98 @@
+{-# OPTIONS_HADDOCK ignore-exports#-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion
+       (VkSamplerYcbcrModelConversion(VkSamplerYcbcrModelConversion,
+                                      VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
+                                      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
+                                      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
+                                      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
+                                      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020))
+       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, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+-- | type = @enum@
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerYcbcrModelConversion.html VkSamplerYcbcrModelConversion registry at www.khronos.org>
+newtype VkSamplerYcbcrModelConversion = VkSamplerYcbcrModelConversion Int32
+                                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
+                                                    Generic)
+
+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)
+
+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)))
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY ::
+        VkSamplerYcbcrModelConversion
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY =
+        VkSamplerYcbcrModelConversion 0
+
+-- | just range expansion
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY ::
+        VkSamplerYcbcrModelConversion
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY =
+        VkSamplerYcbcrModelConversion 1
+
+-- | aka HD YUV
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 ::
+        VkSamplerYcbcrModelConversion
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 =
+        VkSamplerYcbcrModelConversion 2
+
+-- | aka SD YUV
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 ::
+        VkSamplerYcbcrModelConversion
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 =
+        VkSamplerYcbcrModelConversion 3
+
+-- | aka UHD YUV
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 ::
+        VkSamplerYcbcrModelConversion
+
+pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 =
+        VkSamplerYcbcrModelConversion 4
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversionKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversionKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversionKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrModelConversionKHR.hs
@@ -1,98 +1,25 @@
-{-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversionKHR
-       (VkSamplerYcbcrModelConversionKHR(VkSamplerYcbcrModelConversionKHR,
-                                         VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
-                                         VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
-                                         VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
-                                         VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
-                                         VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR))
-       where
+       (VkSamplerYcbcrModelConversionKHR(..)) 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           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
--- | type = @enum@
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerYcbcrModelConversionKHR.html VkSamplerYcbcrModelConversionKHR registry at www.khronos.org>
-newtype VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversionKHR Int32
-                                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                       Generic)
+newtype VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversionKHR VkFlags
+                                             deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                       FiniteBits, Storable, Real, Data, Generic)
 
 instance Show VkSamplerYcbcrModelConversionKHR where
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR"
-        showsPrec p (VkSamplerYcbcrModelConversionKHR x)
-          = showParen (p >= 11)
-              (showString "VkSamplerYcbcrModelConversionKHR " . showsPrec 11 x)
+        {-# INLINE show #-}
+        show (VkSamplerYcbcrModelConversionKHR x) = show x
 
 instance Read VkSamplerYcbcrModelConversionKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerYcbcrModelConversionKHR") >>
-                      (VkSamplerYcbcrModelConversionKHR <$> step readPrec)))
-
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR ::
-        VkSamplerYcbcrModelConversionKHR
-
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR =
-        VkSamplerYcbcrModelConversionKHR 0
-
--- | just range expansion
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR ::
-        VkSamplerYcbcrModelConversionKHR
-
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR =
-        VkSamplerYcbcrModelConversionKHR 1
-
--- | aka HD YUV
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR ::
-        VkSamplerYcbcrModelConversionKHR
-
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR =
-        VkSamplerYcbcrModelConversionKHR 2
-
--- | aka SD YUV
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR ::
-        VkSamplerYcbcrModelConversionKHR
-
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR =
-        VkSamplerYcbcrModelConversionKHR 3
-
--- | aka UHD YUV
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR ::
-        VkSamplerYcbcrModelConversionKHR
-
-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR =
-        VkSamplerYcbcrModelConversionKHR 4
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRange.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRange.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRange.hs
@@ -0,0 +1,58 @@
+{-# OPTIONS_HADDOCK ignore-exports#-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange
+       (VkSamplerYcbcrRange(VkSamplerYcbcrRange,
+                            VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
+                            VK_SAMPLER_YCBCR_RANGE_ITU_NARROW))
+       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, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+-- | type = @enum@
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerYcbcrRange.html VkSamplerYcbcrRange registry at www.khronos.org>
+newtype VkSamplerYcbcrRange = VkSamplerYcbcrRange Int32
+                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+
+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)
+
+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)))
+
+-- | Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)
+pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL :: VkSamplerYcbcrRange
+
+pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL = VkSamplerYcbcrRange 0
+
+-- | Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240
+pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW :: VkSamplerYcbcrRange
+
+pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = VkSamplerYcbcrRange 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRangeKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRangeKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRangeKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSamplerYcbcrRangeKHR.hs
@@ -1,62 +1,25 @@
-{-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRangeKHR
-       (VkSamplerYcbcrRangeKHR(VkSamplerYcbcrRangeKHR,
-                               VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
-                               VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR))
-       where
+       (VkSamplerYcbcrRangeKHR(..)) 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           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
--- | type = @enum@
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerYcbcrRangeKHR.html VkSamplerYcbcrRangeKHR registry at www.khronos.org>
-newtype VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRangeKHR Int32
-                                   deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+newtype VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRangeKHR VkFlags
+                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                             FiniteBits, Storable, Real, Data, Generic)
 
 instance Show VkSamplerYcbcrRangeKHR where
-        showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR
-          = showString "VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR"
-        showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
-          = showString "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR"
-        showsPrec p (VkSamplerYcbcrRangeKHR x)
-          = showParen (p >= 11)
-              (showString "VkSamplerYcbcrRangeKHR " . showsPrec 11 x)
+        {-# INLINE show #-}
+        show (VkSamplerYcbcrRangeKHR x) = show x
 
 instance Read VkSamplerYcbcrRangeKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR",
-                   pure VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR),
-                  ("VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR",
-                   pure VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerYcbcrRangeKHR") >>
-                      (VkSamplerYcbcrRangeKHR <$> 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_KHR ::
-        VkSamplerYcbcrRangeKHR
-
-pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR =
-        VkSamplerYcbcrRangeKHR 0
-
--- | Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240
-pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR ::
-        VkSamplerYcbcrRangeKHR
-
-pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR =
-        VkSamplerYcbcrRangeKHR 1
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlagBitsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlagBitsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlagBitsKHR.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagBitsKHR
+       (VkSemaphoreImportFlagBitsKHR(..)) 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 VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBitsKHR VkFlags
+                                         deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                   FiniteBits, Storable, Real, Data, Generic)
+
+instance Show VkSemaphoreImportFlagBitsKHR where
+        {-# INLINE show #-}
+        show (VkSemaphoreImportFlagBitsKHR x) = show x
+
+instance Read VkSemaphoreImportFlagBitsKHR where
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlags.hs
@@ -0,0 +1,84 @@
+{-# 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.VkSemaphoreImportFlags
+       (VkSemaphoreImportBitmask(VkSemaphoreImportBitmask,
+                                 VkSemaphoreImportFlags, VkSemaphoreImportFlagBits,
+                                 VK_SEMAPHORE_IMPORT_TEMPORARY_BIT),
+        VkSemaphoreImportFlags, VkSemaphoreImportFlagBits)
+       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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkSemaphoreImportBitmask (a ::
+                                    FlagType) = VkSemaphoreImportBitmask VkFlags
+                                                  deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkSemaphoreImportFlags = VkSemaphoreImportBitmask FlagMask
+
+type VkSemaphoreImportFlagBits = VkSemaphoreImportBitmask FlagBit
+
+pattern VkSemaphoreImportFlagBits ::
+        VkFlags -> VkSemaphoreImportBitmask FlagBit
+
+pattern VkSemaphoreImportFlagBits n = VkSemaphoreImportBitmask n
+
+pattern VkSemaphoreImportFlags ::
+        VkFlags -> VkSemaphoreImportBitmask FlagMask
+
+pattern VkSemaphoreImportFlags n = VkSemaphoreImportBitmask n
+
+deriving instance Bits (VkSemaphoreImportBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | bitpos = @0@
+pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT ::
+        VkSemaphoreImportBitmask a
+
+pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT =
+        VkSemaphoreImportBitmask 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlagsKHR.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSemaphoreImportFlagsKHR.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-{-# 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.VkSemaphoreImportFlagsKHR
-       (VkSemaphoreImportBitmaskKHR(VkSemaphoreImportBitmaskKHR,
-                                    VkSemaphoreImportFlagsKHR, VkSemaphoreImportFlagBitsKHR,
-                                    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR),
-        VkSemaphoreImportFlagsKHR, VkSemaphoreImportFlagBitsKHR)
-       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 (..))
-import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
-
-newtype VkSemaphoreImportBitmaskKHR (a ::
-                                       FlagType) = VkSemaphoreImportBitmaskKHR VkFlags
-                                                     deriving (Eq, Ord, Storable, Data, Generic)
-
-type VkSemaphoreImportFlagsKHR =
-     VkSemaphoreImportBitmaskKHR FlagMask
-
-type VkSemaphoreImportFlagBitsKHR =
-     VkSemaphoreImportBitmaskKHR FlagBit
-
-pattern VkSemaphoreImportFlagBitsKHR ::
-        VkFlags -> VkSemaphoreImportBitmaskKHR FlagBit
-
-pattern VkSemaphoreImportFlagBitsKHR n =
-        VkSemaphoreImportBitmaskKHR n
-
-pattern VkSemaphoreImportFlagsKHR ::
-        VkFlags -> VkSemaphoreImportBitmaskKHR FlagMask
-
-pattern VkSemaphoreImportFlagsKHR n = VkSemaphoreImportBitmaskKHR n
-
-deriving instance Bits (VkSemaphoreImportBitmaskKHR FlagMask)
-
-deriving instance FiniteBits (VkSemaphoreImportBitmaskKHR FlagMask)
-
-deriving instance Integral (VkSemaphoreImportBitmaskKHR FlagMask)
-
-deriving instance Num (VkSemaphoreImportBitmaskKHR FlagMask)
-
-deriving instance Bounded (VkSemaphoreImportBitmaskKHR FlagMask)
-
-deriving instance Enum (VkSemaphoreImportBitmaskKHR FlagMask)
-
-deriving instance Real (VkSemaphoreImportBitmaskKHR FlagMask)
-
-instance Show (VkSemaphoreImportBitmaskKHR a) where
-        showsPrec _ VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
-          = showString "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"
-        showsPrec p (VkSemaphoreImportBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkSemaphoreImportBitmaskKHR " . showsPrec 11 x)
-
-instance Read (VkSemaphoreImportBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR",
-                   pure VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSemaphoreImportBitmaskKHR") >>
-                      (VkSemaphoreImportBitmaskKHR <$> step readPrec)))
-
--- | bitpos = @0@
-pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR ::
-        VkSemaphoreImportBitmaskKHR a
-
-pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR =
-        VkSemaphoreImportBitmaskKHR 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkShaderInfoTypeAMD.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkShaderInfoTypeAMD.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkShaderInfoTypeAMD.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkShaderInfoTypeAMD.hs
@@ -21,7 +21,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkShaderInfoTypeAMD.html VkShaderInfoTypeAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderInfoTypeAMD.html VkShaderInfoTypeAMD registry at www.khronos.org>
 newtype VkShaderInfoTypeAMD = VkShaderInfoTypeAMD Int32
                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSharingMode.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSharingMode.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSharingMode.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSharingMode.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSharingMode.html VkSharingMode registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSharingMode.html VkSharingMode registry at www.khronos.org>
 newtype VkSharingMode = VkSharingMode Int32
                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkStencilOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkStencilOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkStencilOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkStencilOp.hs
@@ -23,7 +23,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkStencilOp.html VkStencilOp registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkStencilOp.html VkStencilOp registry at www.khronos.org>
 newtype VkStencilOp = VkStencilOp Int32
                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkStructureType.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkStructureType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkStructureType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkStructureType.hs
@@ -71,7 +71,7 @@
 --   type = @enum@
 --
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkStructureType.html VkStructureType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkStructureType.html VkStructureType registry at www.khronos.org>
 newtype VkStructureType = VkStructureType Int32
                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSubgroupFeatureFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSubgroupFeatureFlags.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSubgroupFeatureFlags.hs
@@ -0,0 +1,174 @@
+{-# 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.VkSubgroupFeatureFlags
+       (VkSubgroupFeatureBitmask(VkSubgroupFeatureBitmask,
+                                 VkSubgroupFeatureFlags, VkSubgroupFeatureFlagBits,
+                                 VK_SUBGROUP_FEATURE_BASIC_BIT, VK_SUBGROUP_FEATURE_VOTE_BIT,
+                                 VK_SUBGROUP_FEATURE_ARITHMETIC_BIT, VK_SUBGROUP_FEATURE_BALLOT_BIT,
+                                 VK_SUBGROUP_FEATURE_SHUFFLE_BIT,
+                                 VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,
+                                 VK_SUBGROUP_FEATURE_CLUSTERED_BIT, VK_SUBGROUP_FEATURE_QUAD_BIT),
+        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 (..))
+import           Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+newtype VkSubgroupFeatureBitmask (a ::
+                                    FlagType) = VkSubgroupFeatureBitmask VkFlags
+                                                  deriving (Eq, Ord, Storable, Data, Generic)
+
+type VkSubgroupFeatureFlags = VkSubgroupFeatureBitmask FlagMask
+
+type VkSubgroupFeatureFlagBits = VkSubgroupFeatureBitmask FlagBit
+
+pattern VkSubgroupFeatureFlagBits ::
+        VkFlags -> VkSubgroupFeatureBitmask FlagBit
+
+pattern VkSubgroupFeatureFlagBits n = VkSubgroupFeatureBitmask n
+
+pattern VkSubgroupFeatureFlags ::
+        VkFlags -> VkSubgroupFeatureBitmask FlagMask
+
+pattern VkSubgroupFeatureFlags n = VkSubgroupFeatureBitmask n
+
+deriving instance Bits (VkSubgroupFeatureBitmask FlagMask)
+
+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)
+
+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)))
+
+-- | Basic subgroup operations
+--
+--   bitpos = @0@
+pattern VK_SUBGROUP_FEATURE_BASIC_BIT :: VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_BASIC_BIT = VkSubgroupFeatureBitmask 1
+
+-- | Vote subgroup operations
+--
+--   bitpos = @1@
+pattern VK_SUBGROUP_FEATURE_VOTE_BIT :: VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_VOTE_BIT = VkSubgroupFeatureBitmask 2
+
+-- | Arithmetic subgroup operations
+--
+--   bitpos = @2@
+pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT ::
+        VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT =
+        VkSubgroupFeatureBitmask 4
+
+-- | Ballot subgroup operations
+--
+--   bitpos = @3@
+pattern VK_SUBGROUP_FEATURE_BALLOT_BIT ::
+        VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_BALLOT_BIT = VkSubgroupFeatureBitmask 8
+
+-- | Shuffle subgroup operations
+--
+--   bitpos = @4@
+pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT ::
+        VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT =
+        VkSubgroupFeatureBitmask 16
+
+-- | Shuffle relative subgroup operations
+--
+--   bitpos = @5@
+pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT ::
+        VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT =
+        VkSubgroupFeatureBitmask 32
+
+-- | Clustered subgroup operations
+--
+--   bitpos = @6@
+pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT ::
+        VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT =
+        VkSubgroupFeatureBitmask 64
+
+-- | Quad subgroup operations
+--
+--   bitpos = @7@
+pattern VK_SUBGROUP_FEATURE_QUAD_BIT :: VkSubgroupFeatureBitmask a
+
+pattern VK_SUBGROUP_FEATURE_QUAD_BIT = VkSubgroupFeatureBitmask 128
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSubpassContents.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSubpassContents.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSubpassContents.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSubpassContents.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSubpassContents.html VkSubpassContents registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSubpassContents.html VkSubpassContents registry at www.khronos.org>
 newtype VkSubpassContents = VkSubpassContents Int32
                               deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkSystemAllocationScope.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkSystemAllocationScope.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkSystemAllocationScope.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkSystemAllocationScope.hs
@@ -24,7 +24,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSystemAllocationScope.html VkSystemAllocationScope registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSystemAllocationScope.html VkSystemAllocationScope registry at www.khronos.org>
 newtype VkSystemAllocationScope = VkSystemAllocationScope Int32
                                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOrigin.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOrigin.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOrigin.hs
@@ -0,0 +1,61 @@
+{-# OPTIONS_HADDOCK ignore-exports#-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE Strict                     #-}
+module Graphics.Vulkan.Types.Enum.VkTessellationDomainOrigin
+       (VkTessellationDomainOrigin(VkTessellationDomainOrigin,
+                                   VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
+                                   VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT))
+       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, (+++))
+import           Text.Read                       (Read (..), parens)
+import           Text.Read.Lex                   (Lexeme (..))
+
+-- | type = @enum@
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkTessellationDomainOrigin.html VkTessellationDomainOrigin registry at www.khronos.org>
+newtype VkTessellationDomainOrigin = VkTessellationDomainOrigin Int32
+                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
+                                                 Generic)
+
+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)
+
+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)))
+
+pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT ::
+        VkTessellationDomainOrigin
+
+pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT =
+        VkTessellationDomainOrigin 0
+
+pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT ::
+        VkTessellationDomainOrigin
+
+pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT =
+        VkTessellationDomainOrigin 1
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOriginKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOriginKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOriginKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkTessellationDomainOriginKHR.hs
@@ -1,61 +1,25 @@
-{-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.VkTessellationDomainOriginKHR
-       (VkTessellationDomainOriginKHR(VkTessellationDomainOriginKHR,
-                                      VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
-                                      VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR))
-       where
+       (VkTessellationDomainOriginKHR(..)) 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           Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import           Text.Read                       (Read (..), parens)
-import           Text.Read.Lex                   (Lexeme (..))
+import           Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
--- | type = @enum@
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkTessellationDomainOriginKHR.html VkTessellationDomainOriginKHR registry at www.khronos.org>
-newtype VkTessellationDomainOriginKHR = VkTessellationDomainOriginKHR Int32
-                                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                    Generic)
+newtype VkTessellationDomainOriginKHR = VkTessellationDomainOriginKHR VkFlags
+                                          deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
+                                                    FiniteBits, Storable, Real, Data, Generic)
 
 instance Show VkTessellationDomainOriginKHR where
-        showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR
-          = showString "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR"
-        showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
-          = showString "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR"
-        showsPrec p (VkTessellationDomainOriginKHR x)
-          = showParen (p >= 11)
-              (showString "VkTessellationDomainOriginKHR " . showsPrec 11 x)
+        {-# INLINE show #-}
+        show (VkTessellationDomainOriginKHR x) = show x
 
 instance Read VkTessellationDomainOriginKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR",
-                   pure VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR),
-                  ("VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR",
-                   pure VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkTessellationDomainOriginKHR") >>
-                      (VkTessellationDomainOriginKHR <$> step readPrec)))
-
-pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR ::
-        VkTessellationDomainOriginKHR
-
-pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR =
-        VkTessellationDomainOriginKHR 0
-
-pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR ::
-        VkTessellationDomainOriginKHR
-
-pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR =
-        VkTessellationDomainOriginKHR 1
+        {-# INLINE readsPrec #-}
+        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCacheHeaderVersionEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCacheHeaderVersionEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCacheHeaderVersionEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCacheHeaderVersionEXT.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkValidationCacheHeaderVersionEXT.html VkValidationCacheHeaderVersionEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkValidationCacheHeaderVersionEXT.html VkValidationCacheHeaderVersionEXT registry at www.khronos.org>
 newtype VkValidationCacheHeaderVersionEXT = VkValidationCacheHeaderVersionEXT Int32
                                               deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                         Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCheckEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCheckEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCheckEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkValidationCheckEXT.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkValidationCheckEXT.html VkValidationCheckEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkValidationCheckEXT.html VkValidationCheckEXT registry at www.khronos.org>
 newtype VkValidationCheckEXT = VkValidationCheckEXT Int32
                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkVertexInputRate.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkVertexInputRate.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkVertexInputRate.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkVertexInputRate.hs
@@ -20,7 +20,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkVertexInputRate.html VkVertexInputRate registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkVertexInputRate.html VkVertexInputRate registry at www.khronos.org>
 newtype VkVertexInputRate = VkVertexInputRate Int32
                               deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VkViewportCoordinateSwizzleNV.hs b/src-gen/Graphics/Vulkan/Types/Enum/VkViewportCoordinateSwizzleNV.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VkViewportCoordinateSwizzleNV.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VkViewportCoordinateSwizzleNV.hs
@@ -27,7 +27,7 @@
 
 -- | type = @enum@
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkViewportCoordinateSwizzleNV.html VkViewportCoordinateSwizzleNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkViewportCoordinateSwizzleNV.html VkViewportCoordinateSwizzleNV registry at www.khronos.org>
 newtype VkViewportCoordinateSwizzleNV = VkViewportCoordinateSwizzleNV Int32
                                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
                                                     Generic)
diff --git a/src-gen/Graphics/Vulkan/Types/Funcpointers.hs b/src-gen/Graphics/Vulkan/Types/Funcpointers.hs
--- a/src-gen/Graphics/Vulkan/Types/Funcpointers.hs
+++ b/src-gen/Graphics/Vulkan/Types/Funcpointers.hs
@@ -5,8 +5,12 @@
         newVkAllocationFunction, unwrapVkAllocationFunction,
         PFN_vkDebugReportCallbackEXT, HS_vkDebugReportCallbackEXT,
         newVkDebugReportCallbackEXT, unwrapVkDebugReportCallbackEXT,
-        PFN_vkFreeFunction, HS_vkFreeFunction, newVkFreeFunction,
-        unwrapVkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkDebugUtilsMessengerCallbackEXT,
+        newVkDebugUtilsMessengerCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, PFN_vkFreeFunction,
+        HS_vkFreeFunction, newVkFreeFunction, unwrapVkFreeFunction,
+        PFN_vkInternalAllocationNotification,
         HS_vkInternalAllocationNotification,
         newVkInternalAllocationNotification,
         unwrapVkInternalAllocationNotification,
@@ -18,13 +22,26 @@
         unwrapVkVoidFunction)
        where
 import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Types.BaseTypes                       (VkBool32 (..),
-                                                                        VkFlags (..))
-import           Graphics.Vulkan.Types.Enum.VkDebugReportFlagsEXT      (VkDebugReportBitmaskEXT (..),
-                                                                        VkDebugReportFlagsEXT)
-import           Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT (VkDebugReportObjectTypeEXT (..))
-import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType   (VkInternalAllocationType (..))
-import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope    (VkSystemAllocationScope (..))
+import           Graphics.Vulkan.Types.BaseTypes
+                                                                                    (VkBool32 (..),
+                                                                                    VkFlags (..))
+import           Graphics.Vulkan.Types.Enum.VkDebugReportFlagsEXT
+                                                                                    (VkDebugReportBitmaskEXT (..),
+                                                                                    VkDebugReportFlagsEXT)
+import           Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT
+                                                                                    (VkDebugReportObjectTypeEXT (..))
+import           Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageSeverityFlagsEXT
+                                                                                    (VkDebugUtilsMessageSeverityBitmaskEXT (..),
+                                                                                    VkDebugUtilsMessageSeverityFlagBitsEXT)
+import           Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageTypeFlagsEXT
+                                                                                    (VkDebugUtilsMessageTypeBitmaskEXT (..),
+                                                                                    VkDebugUtilsMessageTypeFlagsEXT)
+import           Graphics.Vulkan.Types.Enum.VkInternalAllocationType
+                                                                                    (VkInternalAllocationType (..))
+import           Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
+                                                                                    (VkSystemAllocationScope (..))
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCallbackDataEXT
+                                                                                    (VkDebugUtilsMessengerCallbackDataEXT (..))
 
 type HS_vkAllocationFunction =
      Ptr Void ->
@@ -70,6 +87,31 @@
 
 foreign import ccall "dynamic" unwrapVkDebugReportCallbackEXT ::
                PFN_vkDebugReportCallbackEXT -> HS_vkDebugReportCallbackEXT
+
+type HS_vkDebugUtilsMessengerCallbackEXT =
+     VkDebugUtilsMessageSeverityFlagBitsEXT ->
+       VkDebugUtilsMessageTypeFlagsEXT ->
+         Ptr VkDebugUtilsMessengerCallbackDataEXT -> Ptr Void -> IO VkBool32
+
+-- | > typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
+--   >     VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
+--   >     VkDebugUtilsMessageTypeFlagsEXT                  messageType,
+--   >     const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
+--   >     void*                                            pUserData);
+type PFN_vkDebugUtilsMessengerCallbackEXT =
+     FunPtr HS_vkDebugUtilsMessengerCallbackEXT
+
+-- | Wrap haskell function into C-callable FunPtr.
+--   Note, you need to free resources after using it.
+foreign import ccall "wrapper" newVkDebugUtilsMessengerCallbackEXT
+               ::
+               HS_vkDebugUtilsMessengerCallbackEXT ->
+                 IO PFN_vkDebugUtilsMessengerCallbackEXT
+
+foreign import ccall "dynamic"
+               unwrapVkDebugUtilsMessengerCallbackEXT ::
+               PFN_vkDebugUtilsMessengerCallbackEXT ->
+                 HS_vkDebugUtilsMessengerCallbackEXT
 
 type HS_vkFreeFunction = Ptr Void -> Ptr Void -> IO ()
 
diff --git a/src-gen/Graphics/Vulkan/Types/Handles.hs b/src-gen/Graphics/Vulkan/Types/Handles.hs
--- a/src-gen/Graphics/Vulkan/Types/Handles.hs
+++ b/src-gen/Graphics/Vulkan/Types/Handles.hs
@@ -5,9 +5,11 @@
        (VkBuffer, VkBuffer_T(), VkBufferView, VkBufferView_T(),
         VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
         VkCommandPool_T(), VkDebugReportCallbackEXT,
-        VkDebugReportCallbackEXT_T(), VkDescriptorPool,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
         VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSet_T(),
         VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplate_T(),
         VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
         VkDevice, VkDevice_T(), VkDeviceMemory, VkDeviceMemory_T(),
         VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
@@ -20,6 +22,7 @@
         VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
         VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(), VkRenderPass,
         VkRenderPass_T(), VkSampler, VkSampler_T(),
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversion_T(),
         VkSamplerYcbcrConversionKHR, VkSamplerYcbcrConversionKHR_T(),
         VkSemaphore, VkSemaphore_T(), VkShaderModule, VkShaderModule_T(),
         VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR, VkSwapchainKHR_T(),
@@ -52,6 +55,11 @@
 -- | Opaque data type referenced by VkDebugReportCallbackEXT
 data VkDebugReportCallbackEXT_T
 
+type VkDebugUtilsMessengerEXT = VkPtr VkDebugUtilsMessengerEXT_T
+
+-- | Opaque data type referenced by VkDebugUtilsMessengerEXT
+data VkDebugUtilsMessengerEXT_T
+
 type VkDescriptorPool = VkPtr VkDescriptorPool_T
 
 -- | Opaque data type referenced by VkDescriptorPool
@@ -67,6 +75,12 @@
 -- | Opaque data type referenced by VkDescriptorSetLayout
 data VkDescriptorSetLayout_T
 
+type VkDescriptorUpdateTemplate =
+     VkPtr VkDescriptorUpdateTemplate_T
+
+-- | Opaque data type referenced by VkDescriptorUpdateTemplate
+data VkDescriptorUpdateTemplate_T
+
 type VkDescriptorUpdateTemplateKHR =
      VkPtr VkDescriptorUpdateTemplateKHR_T
 
@@ -173,6 +187,11 @@
 
 -- | Opaque data type referenced by VkSampler
 data VkSampler_T
+
+type VkSamplerYcbcrConversion = VkPtr VkSamplerYcbcrConversion_T
+
+-- | Opaque data type referenced by VkSamplerYcbcrConversion
+data VkSamplerYcbcrConversion_T
 
 type VkSamplerYcbcrConversionKHR =
      VkPtr VkSamplerYcbcrConversionKHR_T
diff --git a/src-gen/Graphics/Vulkan/Types/Include.hs b/src-gen/Graphics/Vulkan/Types/Include.hs
--- a/src-gen/Graphics/Vulkan/Types/Include.hs
+++ b/src-gen/Graphics/Vulkan/Types/Include.hs
@@ -3,31 +3,11 @@
 {-# LANGUAGE Strict         #-}
 module Graphics.Vulkan.Types.Include
        (-- > #include "vk_platform.h"
-        --
-        -- > #include <X11/Xlib.h>
-        --
-        -- > #include <X11/extensions/Xrandr.h>
-        --
-        -- > #include <android/native_window.h>
-        --
-        -- > #include <mir_toolkit/client_types.h>
-        --
-        -- > #include "vulkan.h"
-        --
-        -- > #include <wayland-client.h>
-        --
-        -- > #include <windows.h>
-        --
-        -- > #include <xcb/xcb.h>
-        ANativeWindow, DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR,
-        MirConnection, MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID,
-        Window, WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT,
-        XcbWindowT)
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT)
        where
 import           Graphics.Vulkan.Marshal (CULong (..), CWchar (..), Ptr, Word32)
-
--- | Requires @android/native_window.h@
-data ANativeWindow
 
 -- | Requires @windows.h@
 type DWORD = Word32
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAcquireNextImageInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAcquireNextImageInfoKHR.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAcquireNextImageInfoKHR.hsc
@@ -0,0 +1,331 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHR
+       (VkAcquireNextImageInfoKHR(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkFence,
+                                                             VkSemaphore,
+                                                             VkSwapchainKHR)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkAcquireNextImageInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSwapchainKHR swapchain;
+--   >     uint64_t                         timeout;
+--   >     VkSemaphore semaphore;
+--   >     VkFence fence;
+--   >     uint32_t                         deviceMask;
+--   > } VkAcquireNextImageInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAcquireNextImageInfoKHR.html VkAcquireNextImageInfoKHR registry at www.khronos.org>
+data VkAcquireNextImageInfoKHR = VkAcquireNextImageInfoKHR## Addr##
+                                                            ByteArray##
+
+instance Eq VkAcquireNextImageInfoKHR where
+        (VkAcquireNextImageInfoKHR## a _) ==
+          x@(VkAcquireNextImageInfoKHR## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkAcquireNextImageInfoKHR where
+        (VkAcquireNextImageInfoKHR## a _) `compare`
+          x@(VkAcquireNextImageInfoKHR## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkAcquireNextImageInfoKHR where
+        unsafeAddr (VkAcquireNextImageInfoKHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkAcquireNextImageInfoKHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkAcquireNextImageInfoKHR## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAcquireNextImageInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAcquireNextImageInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkAcquireNextImageInfoKHX.hsc
+++ /dev/null
@@ -1,435 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHX
-       (VkAcquireNextImageInfoKHX(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkFence,
-                                                             VkSemaphore,
-                                                             VkSwapchainKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkAcquireNextImageInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSwapchainKHR swapchain;
---   >     uint64_t                         timeout;
---   >     VkSemaphore semaphore;
---   >     VkFence fence;
---   >     uint32_t                         deviceMask;
---   > } VkAcquireNextImageInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAcquireNextImageInfoKHX.html VkAcquireNextImageInfoKHX registry at www.khronos.org>
-data VkAcquireNextImageInfoKHX = VkAcquireNextImageInfoKHX## Addr##
-                                                            ByteArray##
-
-instance Eq VkAcquireNextImageInfoKHX where
-        (VkAcquireNextImageInfoKHX## a _) ==
-          x@(VkAcquireNextImageInfoKHX## b _) = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAcquireNextImageInfoKHX where
-        (VkAcquireNextImageInfoKHX## a _) `compare`
-          x@(VkAcquireNextImageInfoKHX## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkAcquireNextImageInfoKHX where
-        sizeOf ~_ = #{size VkAcquireNextImageInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkAcquireNextImageInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkAcquireNextImageInfoKHX where
-        unsafeAddr (VkAcquireNextImageInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkAcquireNextImageInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkAcquireNextImageInfoKHX## (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkAcquireNextImageInfoKHX where
-        type StructFields VkAcquireNextImageInfoKHX =
-             '["sType", "pNext", "swapchain", "timeout", "semaphore", "fence", -- ' closing tick for hsc2hs
-               "deviceMask"]
-        type CUnionType VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAcquireNextImageInfoKHX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkAcquireNextImageInfoKHX
-         where
-        type VkSTypeMType VkAcquireNextImageInfoKHX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkAcquireNextImageInfoKHX where
-        type FieldType "sType" VkAcquireNextImageInfoKHX = VkStructureType
-        type FieldOptional "sType" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, sType}
-        type FieldIsArray "sType" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, sType}
-
-instance CanReadField "sType" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkAcquireNextImageInfoKHX
-         where
-        type VkPNextMType VkAcquireNextImageInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkAcquireNextImageInfoKHX where
-        type FieldType "pNext" VkAcquireNextImageInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, pNext}
-        type FieldIsArray "pNext" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, pNext}
-
-instance CanReadField "pNext" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkSwapchain VkAcquireNextImageInfoKHX where
-        type VkSwapchainMType VkAcquireNextImageInfoKHX = VkSwapchainKHR
-
-        {-# NOINLINE vkSwapchain #-}
-        vkSwapchain x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, swapchain})
-
-        {-# INLINE vkSwapchainByteOffset #-}
-        vkSwapchainByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, swapchain}
-
-        {-# INLINE readVkSwapchain #-}
-        readVkSwapchain p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, swapchain}
-
-        {-# INLINE writeVkSwapchain #-}
-        writeVkSwapchain p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, swapchain}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchain" VkAcquireNextImageInfoKHX where
-        type FieldType "swapchain" VkAcquireNextImageInfoKHX =
-             VkSwapchainKHR
-        type FieldOptional "swapchain" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchain" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, swapchain}
-        type FieldIsArray "swapchain" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, swapchain}
-
-instance CanReadField "swapchain" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSwapchain
-
-        {-# INLINE readField #-}
-        readField = readVkSwapchain
-
-instance CanWriteField "swapchain" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSwapchain
-
-instance {-# OVERLAPPING #-} HasVkTimeout VkAcquireNextImageInfoKHX
-         where
-        type VkTimeoutMType VkAcquireNextImageInfoKHX = Word64
-
-        {-# NOINLINE vkTimeout #-}
-        vkTimeout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, timeout})
-
-        {-# INLINE vkTimeoutByteOffset #-}
-        vkTimeoutByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, timeout}
-
-        {-# INLINE readVkTimeout #-}
-        readVkTimeout p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, timeout}
-
-        {-# INLINE writeVkTimeout #-}
-        writeVkTimeout p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, timeout}
-
-instance {-# OVERLAPPING #-}
-         HasField "timeout" VkAcquireNextImageInfoKHX where
-        type FieldType "timeout" VkAcquireNextImageInfoKHX = Word64
-        type FieldOptional "timeout" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "timeout" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, timeout}
-        type FieldIsArray "timeout" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, timeout}
-
-instance CanReadField "timeout" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkTimeout
-
-        {-# INLINE readField #-}
-        readField = readVkTimeout
-
-instance CanWriteField "timeout" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkTimeout
-
-instance {-# OVERLAPPING #-}
-         HasVkSemaphore VkAcquireNextImageInfoKHX where
-        type VkSemaphoreMType VkAcquireNextImageInfoKHX = VkSemaphore
-
-        {-# NOINLINE vkSemaphore #-}
-        vkSemaphore x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, semaphore})
-
-        {-# INLINE vkSemaphoreByteOffset #-}
-        vkSemaphoreByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, semaphore}
-
-        {-# INLINE readVkSemaphore #-}
-        readVkSemaphore p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, semaphore}
-
-        {-# INLINE writeVkSemaphore #-}
-        writeVkSemaphore p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, semaphore}
-
-instance {-# OVERLAPPING #-}
-         HasField "semaphore" VkAcquireNextImageInfoKHX where
-        type FieldType "semaphore" VkAcquireNextImageInfoKHX = VkSemaphore
-        type FieldOptional "semaphore" VkAcquireNextImageInfoKHX = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "semaphore" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, semaphore}
-        type FieldIsArray "semaphore" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, semaphore}
-
-instance CanReadField "semaphore" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSemaphore
-
-        {-# INLINE readField #-}
-        readField = readVkSemaphore
-
-instance CanWriteField "semaphore" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSemaphore
-
-instance {-# OVERLAPPING #-} HasVkFence VkAcquireNextImageInfoKHX
-         where
-        type VkFenceMType VkAcquireNextImageInfoKHX = VkFence
-
-        {-# NOINLINE vkFence #-}
-        vkFence x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, fence})
-
-        {-# INLINE vkFenceByteOffset #-}
-        vkFenceByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, fence}
-
-        {-# INLINE readVkFence #-}
-        readVkFence p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, fence}
-
-        {-# INLINE writeVkFence #-}
-        writeVkFence p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, fence}
-
-instance {-# OVERLAPPING #-}
-         HasField "fence" VkAcquireNextImageInfoKHX where
-        type FieldType "fence" VkAcquireNextImageInfoKHX = VkFence
-        type FieldOptional "fence" VkAcquireNextImageInfoKHX = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "fence" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, fence}
-        type FieldIsArray "fence" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, fence}
-
-instance CanReadField "fence" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkFence
-
-        {-# INLINE readField #-}
-        readField = readVkFence
-
-instance CanWriteField "fence" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkFence
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceMask VkAcquireNextImageInfoKHX where
-        type VkDeviceMaskMType VkAcquireNextImageInfoKHX = Word32
-
-        {-# NOINLINE vkDeviceMask #-}
-        vkDeviceMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHX, deviceMask})
-
-        {-# INLINE vkDeviceMaskByteOffset #-}
-        vkDeviceMaskByteOffset ~_
-          = #{offset VkAcquireNextImageInfoKHX, deviceMask}
-
-        {-# INLINE readVkDeviceMask #-}
-        readVkDeviceMask p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHX, deviceMask}
-
-        {-# INLINE writeVkDeviceMask #-}
-        writeVkDeviceMask p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHX, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkAcquireNextImageInfoKHX where
-        type FieldType "deviceMask" VkAcquireNextImageInfoKHX = Word32
-        type FieldOptional "deviceMask" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkAcquireNextImageInfoKHX =
-             #{offset VkAcquireNextImageInfoKHX, deviceMask}
-        type FieldIsArray "deviceMask" VkAcquireNextImageInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHX, deviceMask}
-
-instance CanReadField "deviceMask" VkAcquireNextImageInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkDeviceMask
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceMask
-
-instance CanWriteField "deviceMask" VkAcquireNextImageInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceMask
-
-instance Show VkAcquireNextImageInfoKHX where
-        showsPrec d x
-          = showString "VkAcquireNextImageInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkSwapchain = " .
-                            showsPrec d (vkSwapchain x) .
-                              showString ", " .
-                                showString "vkTimeout = " .
-                                  showsPrec d (vkTimeout x) .
-                                    showString ", " .
-                                      showString "vkSemaphore = " .
-                                        showsPrec d (vkSemaphore x) .
-                                          showString ", " .
-                                            showString "vkFence = " .
-                                              showsPrec d (vkFence x) .
-                                                showString ", " .
-                                                  showString "vkDeviceMask = " .
-                                                    showsPrec d (vkDeviceMask x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAllocationCallbacks.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAllocationCallbacks.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkAllocationCallbacks.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAllocationCallbacks.hsc
@@ -5,20 +5,20 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
        (VkAllocationCallbacks(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                   (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Funcpointers  (PFN_vkAllocationFunction,
-                                                      PFN_vkFreeFunction,
-                                                      PFN_vkInternalAllocationNotification,
-                                                      PFN_vkInternalFreeNotification,
-                                                      PFN_vkReallocationFunction)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Funcpointers (PFN_vkAllocationFunction,
+                                                     PFN_vkFreeFunction,
+                                                     PFN_vkInternalAllocationNotification,
+                                                     PFN_vkInternalFreeNotification,
+                                                     PFN_vkReallocationFunction)
+import           System.IO.Unsafe                   (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAllocationCallbacks {
 --   >     void*           pUserData;
@@ -29,7 +29,7 @@
 --   >     PFN_vkInternalFreeNotification pfnInternalFree;
 --   > } VkAllocationCallbacks;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAllocationCallbacks.html VkAllocationCallbacks registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAllocationCallbacks.html VkAllocationCallbacks registry at www.khronos.org>
 data VkAllocationCallbacks = VkAllocationCallbacks## Addr##
                                                     ByteArray##
 
@@ -79,27 +79,6 @@
         type ReturnedOnly VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
         type StructExtends VkAllocationCallbacks = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkPUserData VkAllocationCallbacks
-         where
-        type VkPUserDataMType VkAllocationCallbacks = Ptr Void
-
-        {-# NOINLINE vkPUserData #-}
-        vkPUserData x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pUserData})
-
-        {-# INLINE vkPUserDataByteOffset #-}
-        vkPUserDataByteOffset ~_
-          = #{offset VkAllocationCallbacks, pUserData}
-
-        {-# INLINE readVkPUserData #-}
-        readVkPUserData p
-          = peekByteOff p #{offset VkAllocationCallbacks, pUserData}
-
-        {-# INLINE writeVkPUserData #-}
-        writeVkPUserData p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pUserData}
-
 instance {-# OVERLAPPING #-}
          HasField "pUserData" VkAllocationCallbacks where
         type FieldType "pUserData" VkAllocationCallbacks = Ptr Void
@@ -115,38 +94,22 @@
         fieldOffset
           = #{offset VkAllocationCallbacks, pUserData}
 
-instance CanReadField "pUserData" VkAllocationCallbacks where
-        {-# INLINE getField #-}
-        getField = vkPUserData
-
-        {-# INLINE readField #-}
-        readField = readVkPUserData
-
-instance CanWriteField "pUserData" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField = writeVkPUserData
-
 instance {-# OVERLAPPING #-}
-         HasVkPfnAllocation VkAllocationCallbacks where
-        type VkPfnAllocationMType VkAllocationCallbacks =
-             PFN_vkAllocationFunction
-
-        {-# NOINLINE vkPfnAllocation #-}
-        vkPfnAllocation x
+         CanReadField "pUserData" VkAllocationCallbacks where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnAllocation})
-
-        {-# INLINE vkPfnAllocationByteOffset #-}
-        vkPfnAllocationByteOffset ~_
-          = #{offset VkAllocationCallbacks, pfnAllocation}
+              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pUserData})
 
-        {-# INLINE readVkPfnAllocation #-}
-        readVkPfnAllocation p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnAllocation}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAllocationCallbacks, pUserData}
 
-        {-# INLINE writeVkPfnAllocation #-}
-        writeVkPfnAllocation p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnAllocation}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pUserData" VkAllocationCallbacks where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAllocationCallbacks, pUserData}
 
 instance {-# OVERLAPPING #-}
          HasField "pfnAllocation" VkAllocationCallbacks where
@@ -164,38 +127,22 @@
         fieldOffset
           = #{offset VkAllocationCallbacks, pfnAllocation}
 
-instance CanReadField "pfnAllocation" VkAllocationCallbacks where
-        {-# INLINE getField #-}
-        getField = vkPfnAllocation
-
-        {-# INLINE readField #-}
-        readField = readVkPfnAllocation
-
-instance CanWriteField "pfnAllocation" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField = writeVkPfnAllocation
-
 instance {-# OVERLAPPING #-}
-         HasVkPfnReallocation VkAllocationCallbacks where
-        type VkPfnReallocationMType VkAllocationCallbacks =
-             PFN_vkReallocationFunction
-
-        {-# NOINLINE vkPfnReallocation #-}
-        vkPfnReallocation x
+         CanReadField "pfnAllocation" VkAllocationCallbacks where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnReallocation})
-
-        {-# INLINE vkPfnReallocationByteOffset #-}
-        vkPfnReallocationByteOffset ~_
-          = #{offset VkAllocationCallbacks, pfnReallocation}
+              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnAllocation})
 
-        {-# INLINE readVkPfnReallocation #-}
-        readVkPfnReallocation p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnReallocation}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAllocationCallbacks, pfnAllocation}
 
-        {-# INLINE writeVkPfnReallocation #-}
-        writeVkPfnReallocation p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnReallocation}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pfnAllocation" VkAllocationCallbacks where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAllocationCallbacks, pfnAllocation}
 
 instance {-# OVERLAPPING #-}
          HasField "pfnReallocation" VkAllocationCallbacks where
@@ -213,38 +160,22 @@
         fieldOffset
           = #{offset VkAllocationCallbacks, pfnReallocation}
 
-instance CanReadField "pfnReallocation" VkAllocationCallbacks where
-        {-# INLINE getField #-}
-        getField = vkPfnReallocation
+instance {-# OVERLAPPING #-}
+         CanReadField "pfnReallocation" VkAllocationCallbacks where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnReallocation})
 
         {-# INLINE readField #-}
-        readField = readVkPfnReallocation
+        readField p
+          = peekByteOff p #{offset VkAllocationCallbacks, pfnReallocation}
 
-instance CanWriteField "pfnReallocation" VkAllocationCallbacks
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pfnReallocation" VkAllocationCallbacks where
         {-# INLINE writeField #-}
-        writeField = writeVkPfnReallocation
-
-instance {-# OVERLAPPING #-} HasVkPfnFree VkAllocationCallbacks
-         where
-        type VkPfnFreeMType VkAllocationCallbacks = PFN_vkFreeFunction
-
-        {-# NOINLINE vkPfnFree #-}
-        vkPfnFree x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnFree})
-
-        {-# INLINE vkPfnFreeByteOffset #-}
-        vkPfnFreeByteOffset ~_
-          = #{offset VkAllocationCallbacks, pfnFree}
-
-        {-# INLINE readVkPfnFree #-}
-        readVkPfnFree p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnFree}
-
-        {-# INLINE writeVkPfnFree #-}
-        writeVkPfnFree p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnFree}
+        writeField p
+          = pokeByteOff p #{offset VkAllocationCallbacks, pfnReallocation}
 
 instance {-# OVERLAPPING #-}
          HasField "pfnFree" VkAllocationCallbacks where
@@ -260,38 +191,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkAllocationCallbacks, pfnFree}
 
-instance CanReadField "pfnFree" VkAllocationCallbacks where
-        {-# INLINE getField #-}
-        getField = vkPfnFree
-
-        {-# INLINE readField #-}
-        readField = readVkPfnFree
-
-instance CanWriteField "pfnFree" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField = writeVkPfnFree
-
 instance {-# OVERLAPPING #-}
-         HasVkPfnInternalAllocation VkAllocationCallbacks where
-        type VkPfnInternalAllocationMType VkAllocationCallbacks =
-             PFN_vkInternalAllocationNotification
-
-        {-# NOINLINE vkPfnInternalAllocation #-}
-        vkPfnInternalAllocation x
+         CanReadField "pfnFree" VkAllocationCallbacks where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnInternalAllocation})
-
-        {-# INLINE vkPfnInternalAllocationByteOffset #-}
-        vkPfnInternalAllocationByteOffset ~_
-          = #{offset VkAllocationCallbacks, pfnInternalAllocation}
+              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnFree})
 
-        {-# INLINE readVkPfnInternalAllocation #-}
-        readVkPfnInternalAllocation p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnInternalAllocation}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAllocationCallbacks, pfnFree}
 
-        {-# INLINE writeVkPfnInternalAllocation #-}
-        writeVkPfnInternalAllocation p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnInternalAllocation}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pfnFree" VkAllocationCallbacks where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAllocationCallbacks, pfnFree}
 
 instance {-# OVERLAPPING #-}
          HasField "pfnInternalAllocation" VkAllocationCallbacks where
@@ -311,41 +226,22 @@
         fieldOffset
           = #{offset VkAllocationCallbacks, pfnInternalAllocation}
 
-instance CanReadField "pfnInternalAllocation" VkAllocationCallbacks
-         where
-        {-# INLINE getField #-}
-        getField = vkPfnInternalAllocation
-
-        {-# INLINE readField #-}
-        readField = readVkPfnInternalAllocation
-
-instance CanWriteField "pfnInternalAllocation"
-           VkAllocationCallbacks
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPfnInternalAllocation
-
 instance {-# OVERLAPPING #-}
-         HasVkPfnInternalFree VkAllocationCallbacks where
-        type VkPfnInternalFreeMType VkAllocationCallbacks =
-             PFN_vkInternalFreeNotification
-
-        {-# NOINLINE vkPfnInternalFree #-}
-        vkPfnInternalFree x
+         CanReadField "pfnInternalAllocation" VkAllocationCallbacks where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnInternalFree})
-
-        {-# INLINE vkPfnInternalFreeByteOffset #-}
-        vkPfnInternalFreeByteOffset ~_
-          = #{offset VkAllocationCallbacks, pfnInternalFree}
+              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnInternalAllocation})
 
-        {-# INLINE readVkPfnInternalFree #-}
-        readVkPfnInternalFree p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnInternalFree}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAllocationCallbacks, pfnInternalAllocation}
 
-        {-# INLINE writeVkPfnInternalFree #-}
-        writeVkPfnInternalFree p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnInternalFree}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pfnInternalAllocation" VkAllocationCallbacks where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAllocationCallbacks, pfnInternalAllocation}
 
 instance {-# OVERLAPPING #-}
          HasField "pfnInternalFree" VkAllocationCallbacks where
@@ -363,35 +259,41 @@
         fieldOffset
           = #{offset VkAllocationCallbacks, pfnInternalFree}
 
-instance CanReadField "pfnInternalFree" VkAllocationCallbacks where
-        {-# INLINE getField #-}
-        getField = vkPfnInternalFree
+instance {-# OVERLAPPING #-}
+         CanReadField "pfnInternalFree" VkAllocationCallbacks where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnInternalFree})
 
         {-# INLINE readField #-}
-        readField = readVkPfnInternalFree
+        readField p
+          = peekByteOff p #{offset VkAllocationCallbacks, pfnInternalFree}
 
-instance CanWriteField "pfnInternalFree" VkAllocationCallbacks
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pfnInternalFree" VkAllocationCallbacks where
         {-# INLINE writeField #-}
-        writeField = writeVkPfnInternalFree
+        writeField p
+          = pokeByteOff p #{offset VkAllocationCallbacks, pfnInternalFree}
 
 instance Show VkAllocationCallbacks where
         showsPrec d x
           = showString "VkAllocationCallbacks {" .
-              showString "vkPUserData = " .
-                showsPrec d (vkPUserData x) .
+              showString "pUserData = " .
+                showsPrec d (getField @"pUserData" x) .
                   showString ", " .
-                    showString "vkPfnAllocation = " .
-                      showsPrec d (vkPfnAllocation x) .
+                    showString "pfnAllocation = " .
+                      showsPrec d (getField @"pfnAllocation" x) .
                         showString ", " .
-                          showString "vkPfnReallocation = " .
-                            showsPrec d (vkPfnReallocation x) .
+                          showString "pfnReallocation = " .
+                            showsPrec d (getField @"pfnReallocation" x) .
                               showString ", " .
-                                showString "vkPfnFree = " .
-                                  showsPrec d (vkPfnFree x) .
+                                showString "pfnFree = " .
+                                  showsPrec d (getField @"pfnFree" x) .
                                     showString ", " .
-                                      showString "vkPfnInternalAllocation = " .
-                                        showsPrec d (vkPfnInternalAllocation x) .
+                                      showString "pfnInternalAllocation = " .
+                                        showsPrec d (getField @"pfnInternalAllocation" x) .
                                           showString ", " .
-                                            showString "vkPfnInternalFree = " .
-                                              showsPrec d (vkPfnInternalFree x) . showChar '}'
+                                            showString "pfnInternalFree = " .
+                                              showsPrec d (getField @"pfnInternalFree" x) .
+                                                showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferFormatPropertiesANDROID.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferFormatPropertiesANDROID.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferFormatPropertiesANDROID.hsc
@@ -0,0 +1,619 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferFormatPropertiesANDROID
+       (VkAndroidHardwareBufferFormatPropertiesANDROID(..)) where
+import           Foreign.Storable
+                                                                                        (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkChromaLocation
+                                                                                        (VkChromaLocation)
+import           Graphics.Vulkan.Types.Enum.VkFormat
+                                                                                        (VkFormat)
+import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
+                                                                                        (VkFormatFeatureFlags)
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion
+                                                                                        (VkSamplerYcbcrModelConversion)
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange
+                                                                                        (VkSamplerYcbcrRange)
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+                                                                                        (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferPropertiesANDROID
+                                                                                        (VkAndroidHardwareBufferPropertiesANDROID)
+import           Graphics.Vulkan.Types.Struct.VkComponentMapping
+                                                                                        (VkComponentMapping)
+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/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html VkAndroidHardwareBufferFormatPropertiesANDROID registry at www.khronos.org>
+data VkAndroidHardwareBufferFormatPropertiesANDROID = VkAndroidHardwareBufferFormatPropertiesANDROID## Addr##
+                                                                                                      ByteArray##
+
+instance Eq VkAndroidHardwareBufferFormatPropertiesANDROID where
+        (VkAndroidHardwareBufferFormatPropertiesANDROID## a _) ==
+          x@(VkAndroidHardwareBufferFormatPropertiesANDROID## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkAndroidHardwareBufferFormatPropertiesANDROID where
+        (VkAndroidHardwareBufferFormatPropertiesANDROID## a _) `compare`
+          x@(VkAndroidHardwareBufferFormatPropertiesANDROID## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkAndroidHardwareBufferFormatPropertiesANDROID
+         where
+        unsafeAddr (VkAndroidHardwareBufferFormatPropertiesANDROID## a _)
+          = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray
+          (VkAndroidHardwareBufferFormatPropertiesANDROID## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkAndroidHardwareBufferFormatPropertiesANDROID##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferPropertiesANDROID.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferPropertiesANDROID.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferPropertiesANDROID.hsc
@@ -0,0 +1,259 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferPropertiesANDROID
+       (VkAndroidHardwareBufferPropertiesANDROID(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkAndroidHardwareBufferPropertiesANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     VkDeviceSize                       allocationSize;
+--   >     uint32_t                           memoryTypeBits;
+--   > } VkAndroidHardwareBufferPropertiesANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAndroidHardwareBufferPropertiesANDROID.html VkAndroidHardwareBufferPropertiesANDROID registry at www.khronos.org>
+data VkAndroidHardwareBufferPropertiesANDROID = VkAndroidHardwareBufferPropertiesANDROID## Addr##
+                                                                                          ByteArray##
+
+instance Eq VkAndroidHardwareBufferPropertiesANDROID where
+        (VkAndroidHardwareBufferPropertiesANDROID## a _) ==
+          x@(VkAndroidHardwareBufferPropertiesANDROID## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkAndroidHardwareBufferPropertiesANDROID where
+        (VkAndroidHardwareBufferPropertiesANDROID## a _) `compare`
+          x@(VkAndroidHardwareBufferPropertiesANDROID## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkAndroidHardwareBufferPropertiesANDROID
+         where
+        unsafeAddr (VkAndroidHardwareBufferPropertiesANDROID## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkAndroidHardwareBufferPropertiesANDROID## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkAndroidHardwareBufferPropertiesANDROID##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferUsageANDROID.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferUsageANDROID.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidHardwareBufferUsageANDROID.hsc
@@ -0,0 +1,209 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferUsageANDROID
+       (VkAndroidHardwareBufferUsageANDROID(..)) where
+import           Foreign.Storable                                      (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2 (VkImageFormatProperties2)
+import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
+
+-- | > typedef struct VkAndroidHardwareBufferUsageANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     uint64_t                           androidHardwareBufferUsage;
+--   > } VkAndroidHardwareBufferUsageANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAndroidHardwareBufferUsageANDROID.html VkAndroidHardwareBufferUsageANDROID registry at www.khronos.org>
+data VkAndroidHardwareBufferUsageANDROID = VkAndroidHardwareBufferUsageANDROID## Addr##
+                                                                                ByteArray##
+
+instance Eq VkAndroidHardwareBufferUsageANDROID where
+        (VkAndroidHardwareBufferUsageANDROID## a _) ==
+          x@(VkAndroidHardwareBufferUsageANDROID## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkAndroidHardwareBufferUsageANDROID where
+        (VkAndroidHardwareBufferUsageANDROID## a _) `compare`
+          x@(VkAndroidHardwareBufferUsageANDROID## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkAndroidHardwareBufferUsageANDROID
+         where
+        unsafeAddr (VkAndroidHardwareBufferUsageANDROID## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkAndroidHardwareBufferUsageANDROID## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkAndroidHardwareBufferUsageANDROID##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidSurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidSurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidSurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAndroidSurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkAndroidSurfaceCreateInfoKHR
        (VkAndroidSurfaceCreateInfoKHR(..)) where
@@ -13,19 +14,18 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkAndroidSurfaceCreateFlagsKHR)
+import           Graphics.Vulkan.Types.Defines              (ANativeWindow)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Include              (ANativeWindow)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAndroidSurfaceCreateInfoKHR {
 --   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkAndroidSurfaceCreateFlagsKHR   flags;
---   >     ANativeWindow*                   window;
+--   >     const void*                                    pNext;
+--   >     VkAndroidSurfaceCreateFlagsKHR flags;
+--   >     struct ANativeWindow*    window;
 --   > } VkAndroidSurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAndroidSurfaceCreateInfoKHR.html VkAndroidSurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAndroidSurfaceCreateInfoKHR.html VkAndroidSurfaceCreateInfoKHR registry at www.khronos.org>
 data VkAndroidSurfaceCreateInfoKHR = VkAndroidSurfaceCreateInfoKHR## Addr##
                                                                     ByteArray##
 
@@ -79,27 +79,6 @@
         type StructExtends VkAndroidSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkAndroidSurfaceCreateInfoKHR where
-        type VkSTypeMType VkAndroidSurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkAndroidSurfaceCreateInfoKHR where
         type FieldType "sType" VkAndroidSurfaceCreateInfoKHR =
              VkStructureType
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkAndroidSurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkAndroidSurfaceCreateInfoKHR where
-        type VkPNextMType VkAndroidSurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkAndroidSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkAndroidSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkAndroidSurfaceCreateInfoKHR where
@@ -162,38 +126,22 @@
         fieldOffset
           = #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkAndroidSurfaceCreateInfoKHR where
-        type VkFlagsMType VkAndroidSurfaceCreateInfoKHR =
-             VkAndroidSurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkAndroidSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkAndroidSurfaceCreateInfoKHR, flags}
+              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkAndroidSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkAndroidSurfaceCreateInfoKHR where
@@ -211,38 +159,22 @@
         fieldOffset
           = #{offset VkAndroidSurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkWindow VkAndroidSurfaceCreateInfoKHR where
-        type VkWindowMType VkAndroidSurfaceCreateInfoKHR =
-             Ptr ANativeWindow
-
-        {-# NOINLINE vkWindow #-}
-        vkWindow x
+         CanReadField "flags" VkAndroidSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, window})
-
-        {-# INLINE vkWindowByteOffset #-}
-        vkWindowByteOffset ~_
-          = #{offset VkAndroidSurfaceCreateInfoKHR, window}
+              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, flags})
 
-        {-# INLINE readVkWindow #-}
-        readVkWindow p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, window}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, flags}
 
-        {-# INLINE writeVkWindow #-}
-        writeVkWindow p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, window}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkAndroidSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "window" VkAndroidSurfaceCreateInfoKHR where
@@ -260,27 +192,34 @@
         fieldOffset
           = #{offset VkAndroidSurfaceCreateInfoKHR, window}
 
-instance CanReadField "window" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkWindow
+instance {-# OVERLAPPING #-}
+         CanReadField "window" VkAndroidSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, window})
 
         {-# INLINE readField #-}
-        readField = readVkWindow
+        readField p
+          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, window}
 
-instance CanWriteField "window" VkAndroidSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "window" VkAndroidSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkWindow
+        writeField p
+          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, window}
 
 instance Show VkAndroidSurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkAndroidSurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkWindow = " . showsPrec d (vkWindow x) . showChar '}'
+                                showString "window = " .
+                                  showsPrec d (getField @"window" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkApplicationInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkApplicationInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkApplicationInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkApplicationInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkApplicationInfo
        (VkApplicationInfo(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkApplicationInfo {
@@ -26,7 +26,7 @@
 --   >     uint32_t        apiVersion;
 --   > } VkApplicationInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkApplicationInfo.html VkApplicationInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkApplicationInfo.html VkApplicationInfo registry at www.khronos.org>
 data VkApplicationInfo = VkApplicationInfo## Addr## ByteArray##
 
 instance Eq VkApplicationInfo where
@@ -75,26 +75,6 @@
         type ReturnedOnly VkApplicationInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkApplicationInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkApplicationInfo where
-        type VkSTypeMType VkApplicationInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkApplicationInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkApplicationInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkApplicationInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkApplicationInfo
          where
         type FieldType "sType" VkApplicationInfo = VkStructureType
@@ -109,36 +89,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkApplicationInfo, sType}
 
-instance CanReadField "sType" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkApplicationInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, sType}
 
-instance CanWriteField "sType" VkApplicationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkApplicationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkApplicationInfo where
-        type VkPNextMType VkApplicationInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkApplicationInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkApplicationInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkApplicationInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkApplicationInfo
          where
@@ -154,37 +120,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkApplicationInfo, pNext}
 
-instance CanReadField "pNext" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkApplicationInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkPApplicationName VkApplicationInfo where
-        type VkPApplicationNameMType VkApplicationInfo = CString
-
-        {-# NOINLINE vkPApplicationName #-}
-        vkPApplicationName x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pApplicationName})
-
-        {-# INLINE vkPApplicationNameByteOffset #-}
-        vkPApplicationNameByteOffset ~_
-          = #{offset VkApplicationInfo, pApplicationName}
-
-        {-# INLINE readVkPApplicationName #-}
-        readVkPApplicationName p
-          = peekByteOff p #{offset VkApplicationInfo, pApplicationName}
-
-        {-# INLINE writeVkPApplicationName #-}
-        writeVkPApplicationName p
-          = pokeByteOff p #{offset VkApplicationInfo, pApplicationName}
+         CanWriteField "pNext" VkApplicationInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pApplicationName" VkApplicationInfo where
@@ -201,37 +152,22 @@
         fieldOffset
           = #{offset VkApplicationInfo, pApplicationName}
 
-instance CanReadField "pApplicationName" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkPApplicationName
-
-        {-# INLINE readField #-}
-        readField = readVkPApplicationName
-
-instance CanWriteField "pApplicationName" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPApplicationName
-
 instance {-# OVERLAPPING #-}
-         HasVkApplicationVersion VkApplicationInfo where
-        type VkApplicationVersionMType VkApplicationInfo = Word32
-
-        {-# NOINLINE vkApplicationVersion #-}
-        vkApplicationVersion x
+         CanReadField "pApplicationName" VkApplicationInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, applicationVersion})
-
-        {-# INLINE vkApplicationVersionByteOffset #-}
-        vkApplicationVersionByteOffset ~_
-          = #{offset VkApplicationInfo, applicationVersion}
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pApplicationName})
 
-        {-# INLINE readVkApplicationVersion #-}
-        readVkApplicationVersion p
-          = peekByteOff p #{offset VkApplicationInfo, applicationVersion}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, pApplicationName}
 
-        {-# INLINE writeVkApplicationVersion #-}
-        writeVkApplicationVersion p
-          = pokeByteOff p #{offset VkApplicationInfo, applicationVersion}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pApplicationName" VkApplicationInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, pApplicationName}
 
 instance {-# OVERLAPPING #-}
          HasField "applicationVersion" VkApplicationInfo where
@@ -248,37 +184,22 @@
         fieldOffset
           = #{offset VkApplicationInfo, applicationVersion}
 
-instance CanReadField "applicationVersion" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkApplicationVersion
+instance {-# OVERLAPPING #-}
+         CanReadField "applicationVersion" VkApplicationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, applicationVersion})
 
         {-# INLINE readField #-}
-        readField = readVkApplicationVersion
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, applicationVersion}
 
-instance CanWriteField "applicationVersion" VkApplicationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "applicationVersion" VkApplicationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkApplicationVersion
-
-instance {-# OVERLAPPING #-} HasVkPEngineName VkApplicationInfo
-         where
-        type VkPEngineNameMType VkApplicationInfo = CString
-
-        {-# NOINLINE vkPEngineName #-}
-        vkPEngineName x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pEngineName})
-
-        {-# INLINE vkPEngineNameByteOffset #-}
-        vkPEngineNameByteOffset ~_
-          = #{offset VkApplicationInfo, pEngineName}
-
-        {-# INLINE readVkPEngineName #-}
-        readVkPEngineName p
-          = peekByteOff p #{offset VkApplicationInfo, pEngineName}
-
-        {-# INLINE writeVkPEngineName #-}
-        writeVkPEngineName p
-          = pokeByteOff p #{offset VkApplicationInfo, pEngineName}
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, applicationVersion}
 
 instance {-# OVERLAPPING #-}
          HasField "pEngineName" VkApplicationInfo where
@@ -294,37 +215,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkApplicationInfo, pEngineName}
 
-instance CanReadField "pEngineName" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkPEngineName
+instance {-# OVERLAPPING #-}
+         CanReadField "pEngineName" VkApplicationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pEngineName})
 
         {-# INLINE readField #-}
-        readField = readVkPEngineName
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, pEngineName}
 
-instance CanWriteField "pEngineName" VkApplicationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pEngineName" VkApplicationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPEngineName
-
-instance {-# OVERLAPPING #-} HasVkEngineVersion VkApplicationInfo
-         where
-        type VkEngineVersionMType VkApplicationInfo = Word32
-
-        {-# NOINLINE vkEngineVersion #-}
-        vkEngineVersion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, engineVersion})
-
-        {-# INLINE vkEngineVersionByteOffset #-}
-        vkEngineVersionByteOffset ~_
-          = #{offset VkApplicationInfo, engineVersion}
-
-        {-# INLINE readVkEngineVersion #-}
-        readVkEngineVersion p
-          = peekByteOff p #{offset VkApplicationInfo, engineVersion}
-
-        {-# INLINE writeVkEngineVersion #-}
-        writeVkEngineVersion p
-          = pokeByteOff p #{offset VkApplicationInfo, engineVersion}
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, pEngineName}
 
 instance {-# OVERLAPPING #-}
          HasField "engineVersion" VkApplicationInfo where
@@ -341,37 +247,22 @@
         fieldOffset
           = #{offset VkApplicationInfo, engineVersion}
 
-instance CanReadField "engineVersion" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkEngineVersion
+instance {-# OVERLAPPING #-}
+         CanReadField "engineVersion" VkApplicationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, engineVersion})
 
         {-# INLINE readField #-}
-        readField = readVkEngineVersion
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, engineVersion}
 
-instance CanWriteField "engineVersion" VkApplicationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "engineVersion" VkApplicationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkEngineVersion
-
-instance {-# OVERLAPPING #-} HasVkApiVersion VkApplicationInfo
-         where
-        type VkApiVersionMType VkApplicationInfo = Word32
-
-        {-# NOINLINE vkApiVersion #-}
-        vkApiVersion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, apiVersion})
-
-        {-# INLINE vkApiVersionByteOffset #-}
-        vkApiVersionByteOffset ~_
-          = #{offset VkApplicationInfo, apiVersion}
-
-        {-# INLINE readVkApiVersion #-}
-        readVkApiVersion p
-          = peekByteOff p #{offset VkApplicationInfo, apiVersion}
-
-        {-# INLINE writeVkApiVersion #-}
-        writeVkApiVersion p
-          = pokeByteOff p #{offset VkApplicationInfo, apiVersion}
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, engineVersion}
 
 instance {-# OVERLAPPING #-}
          HasField "apiVersion" VkApplicationInfo where
@@ -387,37 +278,44 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkApplicationInfo, apiVersion}
 
-instance CanReadField "apiVersion" VkApplicationInfo where
-        {-# INLINE getField #-}
-        getField = vkApiVersion
+instance {-# OVERLAPPING #-}
+         CanReadField "apiVersion" VkApplicationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, apiVersion})
 
         {-# INLINE readField #-}
-        readField = readVkApiVersion
+        readField p
+          = peekByteOff p #{offset VkApplicationInfo, apiVersion}
 
-instance CanWriteField "apiVersion" VkApplicationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "apiVersion" VkApplicationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkApiVersion
+        writeField p
+          = pokeByteOff p #{offset VkApplicationInfo, apiVersion}
 
 instance Show VkApplicationInfo where
         showsPrec d x
           = showString "VkApplicationInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPApplicationName = " .
-                            showsPrec d (vkPApplicationName x) .
+                          showString "pApplicationName = " .
+                            showsPrec d (getField @"pApplicationName" x) .
                               showString ", " .
-                                showString "vkApplicationVersion = " .
-                                  showsPrec d (vkApplicationVersion x) .
+                                showString "applicationVersion = " .
+                                  showsPrec d (getField @"applicationVersion" x) .
                                     showString ", " .
-                                      showString "vkPEngineName = " .
-                                        showsPrec d (vkPEngineName x) .
+                                      showString "pEngineName = " .
+                                        showsPrec d (getField @"pEngineName" x) .
                                           showString ", " .
-                                            showString "vkEngineVersion = " .
-                                              showsPrec d (vkEngineVersion x) .
+                                            showString "engineVersion = " .
+                                              showsPrec d (getField @"engineVersion" x) .
                                                 showString ", " .
-                                                  showString "vkApiVersion = " .
-                                                    showsPrec d (vkApiVersion x) . showChar '}'
+                                                  showString "apiVersion = " .
+                                                    showsPrec d (getField @"apiVersion" x) .
+                                                      showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentDescription.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentDescription.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentDescription.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentDescription.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkAttachmentDescription
        (VkAttachmentDescription(..)) where
@@ -18,7 +19,6 @@
 import           Graphics.Vulkan.Types.Enum.VkFormat                     (VkFormat)
 import           Graphics.Vulkan.Types.Enum.VkImageLayout                (VkImageLayout)
 import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags           (VkSampleCountFlagBits)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAttachmentDescription {
@@ -33,7 +33,7 @@
 --   >     VkImageLayout          finalLayout;
 --   > } VkAttachmentDescription;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAttachmentDescription.html VkAttachmentDescription registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAttachmentDescription.html VkAttachmentDescription registry at www.khronos.org>
 data VkAttachmentDescription = VkAttachmentDescription## Addr##
                                                         ByteArray##
 
@@ -83,28 +83,6 @@
         type ReturnedOnly VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
         type StructExtends VkAttachmentDescription = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkFlags VkAttachmentDescription
-         where
-        type VkFlagsMType VkAttachmentDescription =
-             VkAttachmentDescriptionFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkAttachmentDescription, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkAttachmentDescription, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkAttachmentDescription, flags}
-
 instance {-# OVERLAPPING #-}
          HasField "flags" VkAttachmentDescription where
         type FieldType "flags" VkAttachmentDescription =
@@ -120,37 +98,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkAttachmentDescription, flags}
 
-instance CanReadField "flags" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, flags}
 
-instance CanWriteField "flags" VkAttachmentDescription where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkAttachmentDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkFormat VkAttachmentDescription
-         where
-        type VkFormatMType VkAttachmentDescription = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkAttachmentDescription, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkAttachmentDescription, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkAttachmentDescription, format}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "format" VkAttachmentDescription where
@@ -166,37 +129,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkAttachmentDescription, format}
 
-instance CanReadField "format" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkFormat
+instance {-# OVERLAPPING #-}
+         CanReadField "format" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, format})
 
         {-# INLINE readField #-}
-        readField = readVkFormat
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, format}
 
-instance CanWriteField "format" VkAttachmentDescription where
+instance {-# OVERLAPPING #-}
+         CanWriteField "format" VkAttachmentDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-} HasVkSamples VkAttachmentDescription
-         where
-        type VkSamplesMType VkAttachmentDescription = VkSampleCountFlagBits
-
-        {-# NOINLINE vkSamples #-}
-        vkSamples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, samples})
-
-        {-# INLINE vkSamplesByteOffset #-}
-        vkSamplesByteOffset ~_
-          = #{offset VkAttachmentDescription, samples}
-
-        {-# INLINE readVkSamples #-}
-        readVkSamples p
-          = peekByteOff p #{offset VkAttachmentDescription, samples}
-
-        {-# INLINE writeVkSamples #-}
-        writeVkSamples p
-          = pokeByteOff p #{offset VkAttachmentDescription, samples}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, format}
 
 instance {-# OVERLAPPING #-}
          HasField "samples" VkAttachmentDescription where
@@ -214,37 +162,22 @@
         fieldOffset
           = #{offset VkAttachmentDescription, samples}
 
-instance CanReadField "samples" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkSamples
+instance {-# OVERLAPPING #-}
+         CanReadField "samples" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, samples})
 
         {-# INLINE readField #-}
-        readField = readVkSamples
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, samples}
 
-instance CanWriteField "samples" VkAttachmentDescription where
+instance {-# OVERLAPPING #-}
+         CanWriteField "samples" VkAttachmentDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkSamples
-
-instance {-# OVERLAPPING #-} HasVkLoadOp VkAttachmentDescription
-         where
-        type VkLoadOpMType VkAttachmentDescription = VkAttachmentLoadOp
-
-        {-# NOINLINE vkLoadOp #-}
-        vkLoadOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, loadOp})
-
-        {-# INLINE vkLoadOpByteOffset #-}
-        vkLoadOpByteOffset ~_
-          = #{offset VkAttachmentDescription, loadOp}
-
-        {-# INLINE readVkLoadOp #-}
-        readVkLoadOp p
-          = peekByteOff p #{offset VkAttachmentDescription, loadOp}
-
-        {-# INLINE writeVkLoadOp #-}
-        writeVkLoadOp p
-          = pokeByteOff p #{offset VkAttachmentDescription, loadOp}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, samples}
 
 instance {-# OVERLAPPING #-}
          HasField "loadOp" VkAttachmentDescription where
@@ -261,37 +194,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkAttachmentDescription, loadOp}
 
-instance CanReadField "loadOp" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkLoadOp
+instance {-# OVERLAPPING #-}
+         CanReadField "loadOp" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, loadOp})
 
         {-# INLINE readField #-}
-        readField = readVkLoadOp
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, loadOp}
 
-instance CanWriteField "loadOp" VkAttachmentDescription where
+instance {-# OVERLAPPING #-}
+         CanWriteField "loadOp" VkAttachmentDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkLoadOp
-
-instance {-# OVERLAPPING #-} HasVkStoreOp VkAttachmentDescription
-         where
-        type VkStoreOpMType VkAttachmentDescription = VkAttachmentStoreOp
-
-        {-# NOINLINE vkStoreOp #-}
-        vkStoreOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, storeOp})
-
-        {-# INLINE vkStoreOpByteOffset #-}
-        vkStoreOpByteOffset ~_
-          = #{offset VkAttachmentDescription, storeOp}
-
-        {-# INLINE readVkStoreOp #-}
-        readVkStoreOp p
-          = peekByteOff p #{offset VkAttachmentDescription, storeOp}
-
-        {-# INLINE writeVkStoreOp #-}
-        writeVkStoreOp p
-          = pokeByteOff p #{offset VkAttachmentDescription, storeOp}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, loadOp}
 
 instance {-# OVERLAPPING #-}
          HasField "storeOp" VkAttachmentDescription where
@@ -309,38 +227,22 @@
         fieldOffset
           = #{offset VkAttachmentDescription, storeOp}
 
-instance CanReadField "storeOp" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkStoreOp
-
-        {-# INLINE readField #-}
-        readField = readVkStoreOp
-
-instance CanWriteField "storeOp" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField = writeVkStoreOp
-
 instance {-# OVERLAPPING #-}
-         HasVkStencilLoadOp VkAttachmentDescription where
-        type VkStencilLoadOpMType VkAttachmentDescription =
-             VkAttachmentLoadOp
-
-        {-# NOINLINE vkStencilLoadOp #-}
-        vkStencilLoadOp x
+         CanReadField "storeOp" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, stencilLoadOp})
-
-        {-# INLINE vkStencilLoadOpByteOffset #-}
-        vkStencilLoadOpByteOffset ~_
-          = #{offset VkAttachmentDescription, stencilLoadOp}
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, storeOp})
 
-        {-# INLINE readVkStencilLoadOp #-}
-        readVkStencilLoadOp p
-          = peekByteOff p #{offset VkAttachmentDescription, stencilLoadOp}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, storeOp}
 
-        {-# INLINE writeVkStencilLoadOp #-}
-        writeVkStencilLoadOp p
-          = pokeByteOff p #{offset VkAttachmentDescription, stencilLoadOp}
+instance {-# OVERLAPPING #-}
+         CanWriteField "storeOp" VkAttachmentDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, storeOp}
 
 instance {-# OVERLAPPING #-}
          HasField "stencilLoadOp" VkAttachmentDescription where
@@ -358,39 +260,22 @@
         fieldOffset
           = #{offset VkAttachmentDescription, stencilLoadOp}
 
-instance CanReadField "stencilLoadOp" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkStencilLoadOp
-
-        {-# INLINE readField #-}
-        readField = readVkStencilLoadOp
-
-instance CanWriteField "stencilLoadOp" VkAttachmentDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStencilLoadOp
-
 instance {-# OVERLAPPING #-}
-         HasVkStencilStoreOp VkAttachmentDescription where
-        type VkStencilStoreOpMType VkAttachmentDescription =
-             VkAttachmentStoreOp
-
-        {-# NOINLINE vkStencilStoreOp #-}
-        vkStencilStoreOp x
+         CanReadField "stencilLoadOp" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, stencilStoreOp})
-
-        {-# INLINE vkStencilStoreOpByteOffset #-}
-        vkStencilStoreOpByteOffset ~_
-          = #{offset VkAttachmentDescription, stencilStoreOp}
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, stencilLoadOp})
 
-        {-# INLINE readVkStencilStoreOp #-}
-        readVkStencilStoreOp p
-          = peekByteOff p #{offset VkAttachmentDescription, stencilStoreOp}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, stencilLoadOp}
 
-        {-# INLINE writeVkStencilStoreOp #-}
-        writeVkStencilStoreOp p
-          = pokeByteOff p #{offset VkAttachmentDescription, stencilStoreOp}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stencilLoadOp" VkAttachmentDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, stencilLoadOp}
 
 instance {-# OVERLAPPING #-}
          HasField "stencilStoreOp" VkAttachmentDescription where
@@ -409,39 +294,22 @@
         fieldOffset
           = #{offset VkAttachmentDescription, stencilStoreOp}
 
-instance CanReadField "stencilStoreOp" VkAttachmentDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkStencilStoreOp
-
-        {-# INLINE readField #-}
-        readField = readVkStencilStoreOp
-
-instance CanWriteField "stencilStoreOp" VkAttachmentDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStencilStoreOp
-
 instance {-# OVERLAPPING #-}
-         HasVkInitialLayout VkAttachmentDescription where
-        type VkInitialLayoutMType VkAttachmentDescription = VkImageLayout
-
-        {-# NOINLINE vkInitialLayout #-}
-        vkInitialLayout x
+         CanReadField "stencilStoreOp" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, initialLayout})
-
-        {-# INLINE vkInitialLayoutByteOffset #-}
-        vkInitialLayoutByteOffset ~_
-          = #{offset VkAttachmentDescription, initialLayout}
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, stencilStoreOp})
 
-        {-# INLINE readVkInitialLayout #-}
-        readVkInitialLayout p
-          = peekByteOff p #{offset VkAttachmentDescription, initialLayout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, stencilStoreOp}
 
-        {-# INLINE writeVkInitialLayout #-}
-        writeVkInitialLayout p
-          = pokeByteOff p #{offset VkAttachmentDescription, initialLayout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stencilStoreOp" VkAttachmentDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, stencilStoreOp}
 
 instance {-# OVERLAPPING #-}
          HasField "initialLayout" VkAttachmentDescription where
@@ -459,38 +327,22 @@
         fieldOffset
           = #{offset VkAttachmentDescription, initialLayout}
 
-instance CanReadField "initialLayout" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkInitialLayout
-
-        {-# INLINE readField #-}
-        readField = readVkInitialLayout
-
-instance CanWriteField "initialLayout" VkAttachmentDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkInitialLayout
-
 instance {-# OVERLAPPING #-}
-         HasVkFinalLayout VkAttachmentDescription where
-        type VkFinalLayoutMType VkAttachmentDescription = VkImageLayout
-
-        {-# NOINLINE vkFinalLayout #-}
-        vkFinalLayout x
+         CanReadField "initialLayout" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, finalLayout})
-
-        {-# INLINE vkFinalLayoutByteOffset #-}
-        vkFinalLayoutByteOffset ~_
-          = #{offset VkAttachmentDescription, finalLayout}
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, initialLayout})
 
-        {-# INLINE readVkFinalLayout #-}
-        readVkFinalLayout p
-          = peekByteOff p #{offset VkAttachmentDescription, finalLayout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, initialLayout}
 
-        {-# INLINE writeVkFinalLayout #-}
-        writeVkFinalLayout p
-          = pokeByteOff p #{offset VkAttachmentDescription, finalLayout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "initialLayout" VkAttachmentDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, initialLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "finalLayout" VkAttachmentDescription where
@@ -508,44 +360,52 @@
         fieldOffset
           = #{offset VkAttachmentDescription, finalLayout}
 
-instance CanReadField "finalLayout" VkAttachmentDescription where
-        {-# INLINE getField #-}
-        getField = vkFinalLayout
+instance {-# OVERLAPPING #-}
+         CanReadField "finalLayout" VkAttachmentDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, finalLayout})
 
         {-# INLINE readField #-}
-        readField = readVkFinalLayout
+        readField p
+          = peekByteOff p #{offset VkAttachmentDescription, finalLayout}
 
-instance CanWriteField "finalLayout" VkAttachmentDescription where
+instance {-# OVERLAPPING #-}
+         CanWriteField "finalLayout" VkAttachmentDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkFinalLayout
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentDescription, finalLayout}
 
 instance Show VkAttachmentDescription where
         showsPrec d x
           = showString "VkAttachmentDescription {" .
-              showString "vkFlags = " .
-                showsPrec d (vkFlags x) .
+              showString "flags = " .
+                showsPrec d (getField @"flags" x) .
                   showString ", " .
-                    showString "vkFormat = " .
-                      showsPrec d (vkFormat x) .
+                    showString "format = " .
+                      showsPrec d (getField @"format" x) .
                         showString ", " .
-                          showString "vkSamples = " .
-                            showsPrec d (vkSamples x) .
+                          showString "samples = " .
+                            showsPrec d (getField @"samples" x) .
                               showString ", " .
-                                showString "vkLoadOp = " .
-                                  showsPrec d (vkLoadOp x) .
+                                showString "loadOp = " .
+                                  showsPrec d (getField @"loadOp" x) .
                                     showString ", " .
-                                      showString "vkStoreOp = " .
-                                        showsPrec d (vkStoreOp x) .
+                                      showString "storeOp = " .
+                                        showsPrec d (getField @"storeOp" x) .
                                           showString ", " .
-                                            showString "vkStencilLoadOp = " .
-                                              showsPrec d (vkStencilLoadOp x) .
+                                            showString "stencilLoadOp = " .
+                                              showsPrec d (getField @"stencilLoadOp" x) .
                                                 showString ", " .
-                                                  showString "vkStencilStoreOp = " .
-                                                    showsPrec d (vkStencilStoreOp x) .
+                                                  showString "stencilStoreOp = " .
+                                                    showsPrec d (getField @"stencilStoreOp" x) .
                                                       showString ", " .
-                                                        showString "vkInitialLayout = " .
-                                                          showsPrec d (vkInitialLayout x) .
+                                                        showString "initialLayout = " .
+                                                          showsPrec d (getField @"initialLayout" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkFinalLayout = " .
-                                                                showsPrec d (vkFinalLayout x) .
-                                                                  showChar '}'
+                                                              showString "finalLayout = " .
+                                                                showsPrec d
+                                                                  (getField @"finalLayout" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentReference.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentReference.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentReference.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentReference.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkAttachmentReference
        (VkAttachmentReference(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkImageLayout (VkImageLayout)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAttachmentReference {
@@ -21,7 +21,7 @@
 --   >     VkImageLayout          layout;
 --   > } VkAttachmentReference;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAttachmentReference.html VkAttachmentReference registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAttachmentReference.html VkAttachmentReference registry at www.khronos.org>
 data VkAttachmentReference = VkAttachmentReference## Addr##
                                                     ByteArray##
 
@@ -69,27 +69,6 @@
         type ReturnedOnly VkAttachmentReference = 'False -- ' closing tick for hsc2hs
         type StructExtends VkAttachmentReference = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkAttachment VkAttachmentReference
-         where
-        type VkAttachmentMType VkAttachmentReference = Word32
-
-        {-# NOINLINE vkAttachment #-}
-        vkAttachment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentReference, attachment})
-
-        {-# INLINE vkAttachmentByteOffset #-}
-        vkAttachmentByteOffset ~_
-          = #{offset VkAttachmentReference, attachment}
-
-        {-# INLINE readVkAttachment #-}
-        readVkAttachment p
-          = peekByteOff p #{offset VkAttachmentReference, attachment}
-
-        {-# INLINE writeVkAttachment #-}
-        writeVkAttachment p
-          = pokeByteOff p #{offset VkAttachmentReference, attachment}
-
 instance {-# OVERLAPPING #-}
          HasField "attachment" VkAttachmentReference where
         type FieldType "attachment" VkAttachmentReference = Word32
@@ -105,37 +84,22 @@
         fieldOffset
           = #{offset VkAttachmentReference, attachment}
 
-instance CanReadField "attachment" VkAttachmentReference where
-        {-# INLINE getField #-}
-        getField = vkAttachment
+instance {-# OVERLAPPING #-}
+         CanReadField "attachment" VkAttachmentReference where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentReference, attachment})
 
         {-# INLINE readField #-}
-        readField = readVkAttachment
+        readField p
+          = peekByteOff p #{offset VkAttachmentReference, attachment}
 
-instance CanWriteField "attachment" VkAttachmentReference where
+instance {-# OVERLAPPING #-}
+         CanWriteField "attachment" VkAttachmentReference where
         {-# INLINE writeField #-}
-        writeField = writeVkAttachment
-
-instance {-# OVERLAPPING #-} HasVkLayout VkAttachmentReference
-         where
-        type VkLayoutMType VkAttachmentReference = VkImageLayout
-
-        {-# NOINLINE vkLayout #-}
-        vkLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentReference, layout})
-
-        {-# INLINE vkLayoutByteOffset #-}
-        vkLayoutByteOffset ~_
-          = #{offset VkAttachmentReference, layout}
-
-        {-# INLINE readVkLayout #-}
-        readVkLayout p
-          = peekByteOff p #{offset VkAttachmentReference, layout}
-
-        {-# INLINE writeVkLayout #-}
-        writeVkLayout p
-          = pokeByteOff p #{offset VkAttachmentReference, layout}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentReference, attachment}
 
 instance {-# OVERLAPPING #-}
          HasField "layout" VkAttachmentReference where
@@ -151,21 +115,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkAttachmentReference, layout}
 
-instance CanReadField "layout" VkAttachmentReference where
-        {-# INLINE getField #-}
-        getField = vkLayout
+instance {-# OVERLAPPING #-}
+         CanReadField "layout" VkAttachmentReference where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentReference, layout})
 
         {-# INLINE readField #-}
-        readField = readVkLayout
+        readField p
+          = peekByteOff p #{offset VkAttachmentReference, layout}
 
-instance CanWriteField "layout" VkAttachmentReference where
+instance {-# OVERLAPPING #-}
+         CanWriteField "layout" VkAttachmentReference where
         {-# INLINE writeField #-}
-        writeField = writeVkLayout
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentReference, layout}
 
 instance Show VkAttachmentReference where
         showsPrec d x
           = showString "VkAttachmentReference {" .
-              showString "vkAttachment = " .
-                showsPrec d (vkAttachment x) .
+              showString "attachment = " .
+                showsPrec d (getField @"attachment" x) .
                   showString ", " .
-                    showString "vkLayout = " . showsPrec d (vkLayout x) . showChar '}'
+                    showString "layout = " .
+                      showsPrec d (getField @"layout" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentSampleLocationsEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentSampleLocationsEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentSampleLocationsEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkAttachmentSampleLocationsEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkAttachmentSampleLocationsEXT
        (VkAttachmentSampleLocationsEXT(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkSampleLocationsInfoEXT (VkSampleLocationsInfoEXT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAttachmentSampleLocationsEXT {
@@ -21,7 +21,7 @@
 --   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
 --   > } VkAttachmentSampleLocationsEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkAttachmentSampleLocationsEXT.html VkAttachmentSampleLocationsEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAttachmentSampleLocationsEXT.html VkAttachmentSampleLocationsEXT registry at www.khronos.org>
 data VkAttachmentSampleLocationsEXT = VkAttachmentSampleLocationsEXT## Addr##
                                                                       ByteArray##
 
@@ -75,27 +75,6 @@
         type StructExtends VkAttachmentSampleLocationsEXT = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkAttachmentIndex VkAttachmentSampleLocationsEXT where
-        type VkAttachmentIndexMType VkAttachmentSampleLocationsEXT = Word32
-
-        {-# NOINLINE vkAttachmentIndex #-}
-        vkAttachmentIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentSampleLocationsEXT, attachmentIndex})
-
-        {-# INLINE vkAttachmentIndexByteOffset #-}
-        vkAttachmentIndexByteOffset ~_
-          = #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-
-        {-# INLINE readVkAttachmentIndex #-}
-        readVkAttachmentIndex p
-          = peekByteOff p #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-
-        {-# INLINE writeVkAttachmentIndex #-}
-        writeVkAttachmentIndex p
-          = pokeByteOff p #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-
-instance {-# OVERLAPPING #-}
          HasField "attachmentIndex" VkAttachmentSampleLocationsEXT where
         type FieldType "attachmentIndex" VkAttachmentSampleLocationsEXT =
              Word32
@@ -113,42 +92,23 @@
         fieldOffset
           = #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
 
-instance CanReadField "attachmentIndex"
-           VkAttachmentSampleLocationsEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkAttachmentIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "attachmentIndex" VkAttachmentSampleLocationsEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentSampleLocationsEXT, attachmentIndex})
 
         {-# INLINE readField #-}
-        readField = readVkAttachmentIndex
+        readField p
+          = peekByteOff p #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
 
-instance CanWriteField "attachmentIndex"
-           VkAttachmentSampleLocationsEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "attachmentIndex" VkAttachmentSampleLocationsEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAttachmentIndex
-
-instance {-# OVERLAPPING #-}
-         HasVkSampleLocationsInfo VkAttachmentSampleLocationsEXT where
-        type VkSampleLocationsInfoMType VkAttachmentSampleLocationsEXT =
-             VkSampleLocationsInfoEXT
-
-        {-# NOINLINE vkSampleLocationsInfo #-}
-        vkSampleLocationsInfo x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo})
-
-        {-# INLINE vkSampleLocationsInfoByteOffset #-}
-        vkSampleLocationsInfoByteOffset ~_
-          = #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
-
-        {-# INLINE readVkSampleLocationsInfo #-}
-        readVkSampleLocationsInfo p
-          = peekByteOff p #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
-
-        {-# INLINE writeVkSampleLocationsInfo #-}
-        writeVkSampleLocationsInfo p
-          = pokeByteOff p #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationsInfo" VkAttachmentSampleLocationsEXT where
@@ -172,26 +132,30 @@
         fieldOffset
           = #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
 
-instance CanReadField "sampleLocationsInfo"
-           VkAttachmentSampleLocationsEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationsInfo" VkAttachmentSampleLocationsEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationsInfo
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationsInfo
+        readField p
+          = peekByteOff p #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
 
-instance CanWriteField "sampleLocationsInfo"
-           VkAttachmentSampleLocationsEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleLocationsInfo" VkAttachmentSampleLocationsEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationsInfo
+        writeField p
+          = pokeByteOff p #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
 
 instance Show VkAttachmentSampleLocationsEXT where
         showsPrec d x
           = showString "VkAttachmentSampleLocationsEXT {" .
-              showString "vkAttachmentIndex = " .
-                showsPrec d (vkAttachmentIndex x) .
+              showString "attachmentIndex = " .
+                showsPrec d (getField @"attachmentIndex" x) .
                   showString ", " .
-                    showString "vkSampleLocationsInfo = " .
-                      showsPrec d (vkSampleLocationsInfo x) . showChar '}'
+                    showString "sampleLocationsInfo = " .
+                      showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfo.hsc
@@ -0,0 +1,245 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfo
+       (VkBindBufferMemoryDeviceGroupInfo(..)) where
+import           Foreign.Storable                                    (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo (VkBindBufferMemoryInfo)
+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/man/html/VkBindBufferMemoryDeviceGroupInfo.html VkBindBufferMemoryDeviceGroupInfo registry at www.khronos.org>
+data VkBindBufferMemoryDeviceGroupInfo = VkBindBufferMemoryDeviceGroupInfo## Addr##
+                                                                            ByteArray##
+
+instance Eq VkBindBufferMemoryDeviceGroupInfo where
+        (VkBindBufferMemoryDeviceGroupInfo## a _) ==
+          x@(VkBindBufferMemoryDeviceGroupInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBindBufferMemoryDeviceGroupInfo where
+        (VkBindBufferMemoryDeviceGroupInfo## a _) `compare`
+          x@(VkBindBufferMemoryDeviceGroupInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBindBufferMemoryDeviceGroupInfo where
+        unsafeAddr (VkBindBufferMemoryDeviceGroupInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBindBufferMemoryDeviceGroupInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBindBufferMemoryDeviceGroupInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHR
+       (VkBindBufferMemoryDeviceGroupInfo(..),
+        VkBindBufferMemoryDeviceGroupInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfo (VkBindBufferMemoryDeviceGroupInfo (..))
+
+-- | Alias for `VkBindBufferMemoryDeviceGroupInfo`
+type VkBindBufferMemoryDeviceGroupInfoKHR =
+     VkBindBufferMemoryDeviceGroupInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryDeviceGroupInfoKHX.hsc
+++ /dev/null
@@ -1,324 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHX
-       (VkBindBufferMemoryDeviceGroupInfoKHX(..)) where
-import           Foreign.Storable                                       (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR (VkBindBufferMemoryInfoKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindBufferMemoryDeviceGroupInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         deviceIndexCount;
---   >     const uint32_t*  pDeviceIndices;
---   > } VkBindBufferMemoryDeviceGroupInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindBufferMemoryDeviceGroupInfoKHX.html VkBindBufferMemoryDeviceGroupInfoKHX registry at www.khronos.org>
-data VkBindBufferMemoryDeviceGroupInfoKHX = VkBindBufferMemoryDeviceGroupInfoKHX## Addr##
-                                                                                  ByteArray##
-
-instance Eq VkBindBufferMemoryDeviceGroupInfoKHX where
-        (VkBindBufferMemoryDeviceGroupInfoKHX## a _) ==
-          x@(VkBindBufferMemoryDeviceGroupInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindBufferMemoryDeviceGroupInfoKHX where
-        (VkBindBufferMemoryDeviceGroupInfoKHX## a _) `compare`
-          x@(VkBindBufferMemoryDeviceGroupInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindBufferMemoryDeviceGroupInfoKHX where
-        sizeOf ~_
-          = #{size VkBindBufferMemoryDeviceGroupInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindBufferMemoryDeviceGroupInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        unsafeAddr (VkBindBufferMemoryDeviceGroupInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBindBufferMemoryDeviceGroupInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBindBufferMemoryDeviceGroupInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBindBufferMemoryDeviceGroupInfoKHX where
-        type StructFields VkBindBufferMemoryDeviceGroupInfoKHX =
-             '["sType", "pNext", "deviceIndexCount", "pDeviceIndices"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindBufferMemoryDeviceGroupInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindBufferMemoryDeviceGroupInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindBufferMemoryDeviceGroupInfoKHX =
-             '[VkBindBufferMemoryInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkBindBufferMemoryDeviceGroupInfoKHX where
-        type VkSTypeMType VkBindBufferMemoryDeviceGroupInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindBufferMemoryDeviceGroupInfoKHX where
-        type FieldType "sType" VkBindBufferMemoryDeviceGroupInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkBindBufferMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindBufferMemoryDeviceGroupInfoKHX =
-             #{offset VkBindBufferMemoryDeviceGroupInfoKHX, sType}
-        type FieldIsArray "sType" VkBindBufferMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, sType}
-
-instance CanReadField "sType" VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkBindBufferMemoryDeviceGroupInfoKHX where
-        type VkPNextMType VkBindBufferMemoryDeviceGroupInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindBufferMemoryDeviceGroupInfoKHX where
-        type FieldType "pNext" VkBindBufferMemoryDeviceGroupInfoKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkBindBufferMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindBufferMemoryDeviceGroupInfoKHX =
-             #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pNext}
-        type FieldIsArray "pNext" VkBindBufferMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pNext}
-
-instance CanReadField "pNext" VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceIndexCount VkBindBufferMemoryDeviceGroupInfoKHX where
-        type VkDeviceIndexCountMType VkBindBufferMemoryDeviceGroupInfoKHX =
-             Word32
-
-        {-# NOINLINE vkDeviceIndexCount #-}
-        vkDeviceIndexCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfoKHX, deviceIndexCount})
-
-        {-# INLINE vkDeviceIndexCountByteOffset #-}
-        vkDeviceIndexCountByteOffset ~_
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-        {-# INLINE readVkDeviceIndexCount #-}
-        readVkDeviceIndexCount p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-        {-# INLINE writeVkDeviceIndexCount #-}
-        writeVkDeviceIndexCount p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceIndexCount" VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        type FieldType "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             = Word32
-        type FieldOptional "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             =
-             #{offset VkBindBufferMemoryDeviceGroupInfoKHX, deviceIndexCount}
-        type FieldIsArray "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-instance CanReadField "deviceIndexCount"
-           VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceIndexCount
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceIndexCount
-
-instance CanWriteField "deviceIndexCount"
-           VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceIndexCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDeviceIndices VkBindBufferMemoryDeviceGroupInfoKHX where
-        type VkPDeviceIndicesMType VkBindBufferMemoryDeviceGroupInfoKHX =
-             Ptr Word32
-
-        {-# NOINLINE vkPDeviceIndices #-}
-        vkPDeviceIndices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pDeviceIndices})
-
-        {-# INLINE vkPDeviceIndicesByteOffset #-}
-        vkPDeviceIndicesByteOffset ~_
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-        {-# INLINE readVkPDeviceIndices #-}
-        readVkPDeviceIndices p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-        {-# INLINE writeVkPDeviceIndices #-}
-        writeVkPDeviceIndices p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceIndices" VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        type FieldType "pDeviceIndices"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             = Ptr Word32
-        type FieldOptional "pDeviceIndices"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceIndices"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             =
-             #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pDeviceIndices}
-        type FieldIsArray "pDeviceIndices"
-               VkBindBufferMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-instance CanReadField "pDeviceIndices"
-           VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPDeviceIndices
-
-        {-# INLINE readField #-}
-        readField = readVkPDeviceIndices
-
-instance CanWriteField "pDeviceIndices"
-           VkBindBufferMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDeviceIndices
-
-instance Show VkBindBufferMemoryDeviceGroupInfoKHX where
-        showsPrec d x
-          = showString "VkBindBufferMemoryDeviceGroupInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkDeviceIndexCount = " .
-                            showsPrec d (vkDeviceIndexCount x) .
-                              showString ", " .
-                                showString "vkPDeviceIndices = " .
-                                  showsPrec d (vkPDeviceIndices x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfo.hsc
@@ -0,0 +1,251 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo
+       (VkBindBufferMemoryInfo(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkBuffer,
+                                                             VkDeviceMemory)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkBindBufferMemoryInfo.html VkBindBufferMemoryInfo registry at www.khronos.org>
+data VkBindBufferMemoryInfo = VkBindBufferMemoryInfo## Addr##
+                                                      ByteArray##
+
+instance Eq VkBindBufferMemoryInfo where
+        (VkBindBufferMemoryInfo## a _) == x@(VkBindBufferMemoryInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBindBufferMemoryInfo where
+        (VkBindBufferMemoryInfo## a _) `compare`
+          x@(VkBindBufferMemoryInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBindBufferMemoryInfo where
+        unsafeAddr (VkBindBufferMemoryInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBindBufferMemoryInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBindBufferMemoryInfo## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfoKHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR
+       (VkBindBufferMemoryInfo(..), VkBindBufferMemoryInfoKHR) where
+import           Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo (VkBindBufferMemoryInfo (..))
+
+-- | Alias for `VkBindBufferMemoryInfo`
+type VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindBufferMemoryInfoKHR.hsc
+++ /dev/null
@@ -1,335 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR
-       (VkBindBufferMemoryInfoKHR(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkBuffer,
-                                                             VkDeviceMemory)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindBufferMemoryInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBuffer                         buffer;
---   >     VkDeviceMemory                   memory;
---   >     VkDeviceSize                     memoryOffset;
---   > } VkBindBufferMemoryInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindBufferMemoryInfoKHR.html VkBindBufferMemoryInfoKHR registry at www.khronos.org>
-data VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfoKHR## Addr##
-                                                            ByteArray##
-
-instance Eq VkBindBufferMemoryInfoKHR where
-        (VkBindBufferMemoryInfoKHR## a _) ==
-          x@(VkBindBufferMemoryInfoKHR## b _) = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindBufferMemoryInfoKHR where
-        (VkBindBufferMemoryInfoKHR## a _) `compare`
-          x@(VkBindBufferMemoryInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindBufferMemoryInfoKHR where
-        sizeOf ~_ = #{size VkBindBufferMemoryInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBindBufferMemoryInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBindBufferMemoryInfoKHR where
-        unsafeAddr (VkBindBufferMemoryInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBindBufferMemoryInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBindBufferMemoryInfoKHR## (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBindBufferMemoryInfoKHR where
-        type StructFields VkBindBufferMemoryInfoKHR =
-             '["sType", "pNext", "buffer", "memory", "memoryOffset"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindBufferMemoryInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkBindBufferMemoryInfoKHR
-         where
-        type VkSTypeMType VkBindBufferMemoryInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindBufferMemoryInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindBufferMemoryInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindBufferMemoryInfoKHR where
-        type FieldType "sType" VkBindBufferMemoryInfoKHR = VkStructureType
-        type FieldOptional "sType" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindBufferMemoryInfoKHR =
-             #{offset VkBindBufferMemoryInfoKHR, sType}
-        type FieldIsArray "sType" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryInfoKHR, sType}
-
-instance CanReadField "sType" VkBindBufferMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBindBufferMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkBindBufferMemoryInfoKHR
-         where
-        type VkPNextMType VkBindBufferMemoryInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindBufferMemoryInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindBufferMemoryInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindBufferMemoryInfoKHR where
-        type FieldType "pNext" VkBindBufferMemoryInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindBufferMemoryInfoKHR =
-             #{offset VkBindBufferMemoryInfoKHR, pNext}
-        type FieldIsArray "pNext" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryInfoKHR, pNext}
-
-instance CanReadField "pNext" VkBindBufferMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBindBufferMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkBuffer VkBindBufferMemoryInfoKHR
-         where
-        type VkBufferMType VkBindBufferMemoryInfoKHR = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfoKHR, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkBindBufferMemoryInfoKHR, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkBindBufferMemoryInfoKHR, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfoKHR, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkBindBufferMemoryInfoKHR where
-        type FieldType "buffer" VkBindBufferMemoryInfoKHR = VkBuffer
-        type FieldOptional "buffer" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkBindBufferMemoryInfoKHR =
-             #{offset VkBindBufferMemoryInfoKHR, buffer}
-        type FieldIsArray "buffer" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryInfoKHR, buffer}
-
-instance CanReadField "buffer" VkBindBufferMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkBuffer
-
-instance CanWriteField "buffer" VkBindBufferMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance {-# OVERLAPPING #-} HasVkMemory VkBindBufferMemoryInfoKHR
-         where
-        type VkMemoryMType VkBindBufferMemoryInfoKHR = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfoKHR, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkBindBufferMemoryInfoKHR, memory}
-
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkBindBufferMemoryInfoKHR, memory}
-
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkBindBufferMemoryInfoKHR where
-        type FieldType "memory" VkBindBufferMemoryInfoKHR = VkDeviceMemory
-        type FieldOptional "memory" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkBindBufferMemoryInfoKHR =
-             #{offset VkBindBufferMemoryInfoKHR, memory}
-        type FieldIsArray "memory" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryInfoKHR, memory}
-
-instance CanReadField "memory" VkBindBufferMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkMemory
-
-        {-# INLINE readField #-}
-        readField = readVkMemory
-
-instance CanWriteField "memory" VkBindBufferMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
-instance {-# OVERLAPPING #-}
-         HasVkMemoryOffset VkBindBufferMemoryInfoKHR where
-        type VkMemoryOffsetMType VkBindBufferMemoryInfoKHR = VkDeviceSize
-
-        {-# NOINLINE vkMemoryOffset #-}
-        vkMemoryOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfoKHR, memoryOffset})
-
-        {-# INLINE vkMemoryOffsetByteOffset #-}
-        vkMemoryOffsetByteOffset ~_
-          = #{offset VkBindBufferMemoryInfoKHR, memoryOffset}
-
-        {-# INLINE readVkMemoryOffset #-}
-        readVkMemoryOffset p
-          = peekByteOff p #{offset VkBindBufferMemoryInfoKHR, memoryOffset}
-
-        {-# INLINE writeVkMemoryOffset #-}
-        writeVkMemoryOffset p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfoKHR, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryOffset" VkBindBufferMemoryInfoKHR where
-        type FieldType "memoryOffset" VkBindBufferMemoryInfoKHR =
-             VkDeviceSize
-        type FieldOptional "memoryOffset" VkBindBufferMemoryInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryOffset" VkBindBufferMemoryInfoKHR =
-             #{offset VkBindBufferMemoryInfoKHR, memoryOffset}
-        type FieldIsArray "memoryOffset" VkBindBufferMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryInfoKHR, memoryOffset}
-
-instance CanReadField "memoryOffset" VkBindBufferMemoryInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMemoryOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMemoryOffset
-
-instance CanWriteField "memoryOffset" VkBindBufferMemoryInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemoryOffset
-
-instance Show VkBindBufferMemoryInfoKHR where
-        showsPrec d x
-          = showString "VkBindBufferMemoryInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkBuffer = " .
-                            showsPrec d (vkBuffer x) .
-                              showString ", " .
-                                showString "vkMemory = " .
-                                  showsPrec d (vkMemory x) .
-                                    showString ", " .
-                                      showString "vkMemoryOffset = " .
-                                        showsPrec d (vkMemoryOffset x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfo.hsc
@@ -0,0 +1,345 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfo
+       (VkBindImageMemoryDeviceGroupInfo(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo (VkBindImageMemoryInfo)
+import           Graphics.Vulkan.Types.Struct.VkRect2D              (VkRect2D)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkBindImageMemoryDeviceGroupInfo.html VkBindImageMemoryDeviceGroupInfo registry at www.khronos.org>
+data VkBindImageMemoryDeviceGroupInfo = VkBindImageMemoryDeviceGroupInfo## Addr##
+                                                                          ByteArray##
+
+instance Eq VkBindImageMemoryDeviceGroupInfo where
+        (VkBindImageMemoryDeviceGroupInfo## a _) ==
+          x@(VkBindImageMemoryDeviceGroupInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBindImageMemoryDeviceGroupInfo where
+        (VkBindImageMemoryDeviceGroupInfo## a _) `compare`
+          x@(VkBindImageMemoryDeviceGroupInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBindImageMemoryDeviceGroupInfo where
+        unsafeAddr (VkBindImageMemoryDeviceGroupInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBindImageMemoryDeviceGroupInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBindImageMemoryDeviceGroupInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHR
+       (VkBindImageMemoryDeviceGroupInfo(..),
+        VkBindImageMemoryDeviceGroupInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfo (VkBindImageMemoryDeviceGroupInfo (..))
+
+-- | Alias for `VkBindImageMemoryDeviceGroupInfo`
+type VkBindImageMemoryDeviceGroupInfoKHR =
+     VkBindImageMemoryDeviceGroupInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryDeviceGroupInfoKHX.hsc
+++ /dev/null
@@ -1,444 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHX
-       (VkBindImageMemoryDeviceGroupInfoKHX(..)) where
-import           Foreign.Storable                                      (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR (VkBindImageMemoryInfoKHR)
-import           Graphics.Vulkan.Types.Struct.VkRect2D                 (VkRect2D)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindImageMemoryDeviceGroupInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         deviceIndexCount;
---   >     const uint32_t*  pDeviceIndices;
---   >     uint32_t         SFRRectCount;
---   >     const VkRect2D*  pSFRRects;
---   > } VkBindImageMemoryDeviceGroupInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindImageMemoryDeviceGroupInfoKHX.html VkBindImageMemoryDeviceGroupInfoKHX registry at www.khronos.org>
-data VkBindImageMemoryDeviceGroupInfoKHX = VkBindImageMemoryDeviceGroupInfoKHX## Addr##
-                                                                                ByteArray##
-
-instance Eq VkBindImageMemoryDeviceGroupInfoKHX where
-        (VkBindImageMemoryDeviceGroupInfoKHX## a _) ==
-          x@(VkBindImageMemoryDeviceGroupInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImageMemoryDeviceGroupInfoKHX where
-        (VkBindImageMemoryDeviceGroupInfoKHX## a _) `compare`
-          x@(VkBindImageMemoryDeviceGroupInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImageMemoryDeviceGroupInfoKHX where
-        sizeOf ~_ = #{size VkBindImageMemoryDeviceGroupInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindImageMemoryDeviceGroupInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        unsafeAddr (VkBindImageMemoryDeviceGroupInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBindImageMemoryDeviceGroupInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBindImageMemoryDeviceGroupInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBindImageMemoryDeviceGroupInfoKHX where
-        type StructFields VkBindImageMemoryDeviceGroupInfoKHX =
-             '["sType", "pNext", "deviceIndexCount", "pDeviceIndices", -- ' closing tick for hsc2hs
-               "SFRRectCount", "pSFRRects"]
-        type CUnionType VkBindImageMemoryDeviceGroupInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImageMemoryDeviceGroupInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImageMemoryDeviceGroupInfoKHX =
-             '[VkBindImageMemoryInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkBindImageMemoryDeviceGroupInfoKHX where
-        type VkSTypeMType VkBindImageMemoryDeviceGroupInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImageMemoryDeviceGroupInfoKHX where
-        type FieldType "sType" VkBindImageMemoryDeviceGroupInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkBindImageMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImageMemoryDeviceGroupInfoKHX =
-             #{offset VkBindImageMemoryDeviceGroupInfoKHX, sType}
-        type FieldIsArray "sType" VkBindImageMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, sType}
-
-instance CanReadField "sType" VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkBindImageMemoryDeviceGroupInfoKHX where
-        type VkPNextMType VkBindImageMemoryDeviceGroupInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImageMemoryDeviceGroupInfoKHX where
-        type FieldType "pNext" VkBindImageMemoryDeviceGroupInfoKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkBindImageMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImageMemoryDeviceGroupInfoKHX =
-             #{offset VkBindImageMemoryDeviceGroupInfoKHX, pNext}
-        type FieldIsArray "pNext" VkBindImageMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, pNext}
-
-instance CanReadField "pNext" VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceIndexCount VkBindImageMemoryDeviceGroupInfoKHX where
-        type VkDeviceIndexCountMType VkBindImageMemoryDeviceGroupInfoKHX =
-             Word32
-
-        {-# NOINLINE vkDeviceIndexCount #-}
-        vkDeviceIndexCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfoKHX, deviceIndexCount})
-
-        {-# INLINE vkDeviceIndexCountByteOffset #-}
-        vkDeviceIndexCountByteOffset ~_
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-        {-# INLINE readVkDeviceIndexCount #-}
-        readVkDeviceIndexCount p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-        {-# INLINE writeVkDeviceIndexCount #-}
-        writeVkDeviceIndexCount p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceIndexCount" VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        type FieldType "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = Word32
-        type FieldOptional "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfoKHX, deviceIndexCount}
-        type FieldIsArray "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, deviceIndexCount}
-
-instance CanReadField "deviceIndexCount"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceIndexCount
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceIndexCount
-
-instance CanWriteField "deviceIndexCount"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceIndexCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDeviceIndices VkBindImageMemoryDeviceGroupInfoKHX where
-        type VkPDeviceIndicesMType VkBindImageMemoryDeviceGroupInfoKHX =
-             Ptr Word32
-
-        {-# NOINLINE vkPDeviceIndices #-}
-        vkPDeviceIndices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfoKHX, pDeviceIndices})
-
-        {-# INLINE vkPDeviceIndicesByteOffset #-}
-        vkPDeviceIndicesByteOffset ~_
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-        {-# INLINE readVkPDeviceIndices #-}
-        readVkPDeviceIndices p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-        {-# INLINE writeVkPDeviceIndices #-}
-        writeVkPDeviceIndices p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceIndices" VkBindImageMemoryDeviceGroupInfoKHX where
-        type FieldType "pDeviceIndices" VkBindImageMemoryDeviceGroupInfoKHX
-             = Ptr Word32
-        type FieldOptional "pDeviceIndices"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceIndices"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfoKHX, pDeviceIndices}
-        type FieldIsArray "pDeviceIndices"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, pDeviceIndices}
-
-instance CanReadField "pDeviceIndices"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPDeviceIndices
-
-        {-# INLINE readField #-}
-        readField = readVkPDeviceIndices
-
-instance CanWriteField "pDeviceIndices"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDeviceIndices
-
-instance {-# OVERLAPPING #-}
-         HasVkSFRRectCount VkBindImageMemoryDeviceGroupInfoKHX where
-        type VkSFRRectCountMType VkBindImageMemoryDeviceGroupInfoKHX =
-             Word32
-
-        {-# NOINLINE vkSFRRectCount #-}
-        vkSFRRectCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfoKHX, SFRRectCount})
-
-        {-# INLINE vkSFRRectCountByteOffset #-}
-        vkSFRRectCountByteOffset ~_
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, SFRRectCount}
-
-        {-# INLINE readVkSFRRectCount #-}
-        readVkSFRRectCount p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, SFRRectCount}
-
-        {-# INLINE writeVkSFRRectCount #-}
-        writeVkSFRRectCount p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, SFRRectCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "SFRRectCount" VkBindImageMemoryDeviceGroupInfoKHX where
-        type FieldType "SFRRectCount" VkBindImageMemoryDeviceGroupInfoKHX =
-             Word32
-        type FieldOptional "SFRRectCount"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "SFRRectCount" VkBindImageMemoryDeviceGroupInfoKHX
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfoKHX, SFRRectCount}
-        type FieldIsArray "SFRRectCount"
-               VkBindImageMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, SFRRectCount}
-
-instance CanReadField "SFRRectCount"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSFRRectCount
-
-        {-# INLINE readField #-}
-        readField = readVkSFRRectCount
-
-instance CanWriteField "SFRRectCount"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSFRRectCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPSFRRects VkBindImageMemoryDeviceGroupInfoKHX where
-        type VkPSFRRectsMType VkBindImageMemoryDeviceGroupInfoKHX =
-             Ptr VkRect2D
-
-        {-# NOINLINE vkPSFRRects #-}
-        vkPSFRRects x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfoKHX, pSFRRects})
-
-        {-# INLINE vkPSFRRectsByteOffset #-}
-        vkPSFRRectsByteOffset ~_
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, pSFRRects}
-
-        {-# INLINE readVkPSFRRects #-}
-        readVkPSFRRects p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, pSFRRects}
-
-        {-# INLINE writeVkPSFRRects #-}
-        writeVkPSFRRects p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfoKHX, pSFRRects}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSFRRects" VkBindImageMemoryDeviceGroupInfoKHX where
-        type FieldType "pSFRRects" VkBindImageMemoryDeviceGroupInfoKHX =
-             Ptr VkRect2D
-        type FieldOptional "pSFRRects" VkBindImageMemoryDeviceGroupInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSFRRects" VkBindImageMemoryDeviceGroupInfoKHX =
-             #{offset VkBindImageMemoryDeviceGroupInfoKHX, pSFRRects}
-        type FieldIsArray "pSFRRects" VkBindImageMemoryDeviceGroupInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfoKHX, pSFRRects}
-
-instance CanReadField "pSFRRects"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPSFRRects
-
-        {-# INLINE readField #-}
-        readField = readVkPSFRRects
-
-instance CanWriteField "pSFRRects"
-           VkBindImageMemoryDeviceGroupInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPSFRRects
-
-instance Show VkBindImageMemoryDeviceGroupInfoKHX where
-        showsPrec d x
-          = showString "VkBindImageMemoryDeviceGroupInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkDeviceIndexCount = " .
-                            showsPrec d (vkDeviceIndexCount x) .
-                              showString ", " .
-                                showString "vkPDeviceIndices = " .
-                                  showsPrec d (vkPDeviceIndices x) .
-                                    showString ", " .
-                                      showString "vkSFRRectCount = " .
-                                        showsPrec d (vkSFRRectCount x) .
-                                          showString ", " .
-                                            showString "vkPSFRRects = " .
-                                              showsPrec d (vkPSFRRects x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfo.hsc
@@ -0,0 +1,251 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo
+       (VkBindImageMemoryInfo(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkDeviceMemory,
+                                                             VkImage)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkBindImageMemoryInfo.html VkBindImageMemoryInfo registry at www.khronos.org>
+data VkBindImageMemoryInfo = VkBindImageMemoryInfo## Addr##
+                                                    ByteArray##
+
+instance Eq VkBindImageMemoryInfo where
+        (VkBindImageMemoryInfo## a _) == x@(VkBindImageMemoryInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBindImageMemoryInfo where
+        (VkBindImageMemoryInfo## a _) `compare`
+          x@(VkBindImageMemoryInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBindImageMemoryInfo where
+        unsafeAddr (VkBindImageMemoryInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBindImageMemoryInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBindImageMemoryInfo## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfoKHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR
+       (VkBindImageMemoryInfo(..), VkBindImageMemoryInfoKHR) where
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo (VkBindImageMemoryInfo (..))
+
+-- | Alias for `VkBindImageMemoryInfo`
+type VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemoryInfoKHR.hsc
+++ /dev/null
@@ -1,330 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR
-       (VkBindImageMemoryInfoKHR(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkDeviceMemory,
-                                                             VkImage)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindImageMemoryInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImage                          image;
---   >     VkDeviceMemory                   memory;
---   >     VkDeviceSize                     memoryOffset;
---   > } VkBindImageMemoryInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindImageMemoryInfoKHR.html VkBindImageMemoryInfoKHR registry at www.khronos.org>
-data VkBindImageMemoryInfoKHR = VkBindImageMemoryInfoKHR## Addr##
-                                                          ByteArray##
-
-instance Eq VkBindImageMemoryInfoKHR where
-        (VkBindImageMemoryInfoKHR## a _) ==
-          x@(VkBindImageMemoryInfoKHR## b _) = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImageMemoryInfoKHR where
-        (VkBindImageMemoryInfoKHR## a _) `compare`
-          x@(VkBindImageMemoryInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImageMemoryInfoKHR where
-        sizeOf ~_ = #{size VkBindImageMemoryInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBindImageMemoryInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBindImageMemoryInfoKHR where
-        unsafeAddr (VkBindImageMemoryInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBindImageMemoryInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBindImageMemoryInfoKHR## (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBindImageMemoryInfoKHR where
-        type StructFields VkBindImageMemoryInfoKHR =
-             '["sType", "pNext", "image", "memory", "memoryOffset"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImageMemoryInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkBindImageMemoryInfoKHR
-         where
-        type VkSTypeMType VkBindImageMemoryInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindImageMemoryInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindImageMemoryInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindImageMemoryInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImageMemoryInfoKHR where
-        type FieldType "sType" VkBindImageMemoryInfoKHR = VkStructureType
-        type FieldOptional "sType" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImageMemoryInfoKHR =
-             #{offset VkBindImageMemoryInfoKHR, sType}
-        type FieldIsArray "sType" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfoKHR, sType}
-
-instance CanReadField "sType" VkBindImageMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBindImageMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkBindImageMemoryInfoKHR
-         where
-        type VkPNextMType VkBindImageMemoryInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindImageMemoryInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindImageMemoryInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindImageMemoryInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImageMemoryInfoKHR where
-        type FieldType "pNext" VkBindImageMemoryInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImageMemoryInfoKHR =
-             #{offset VkBindImageMemoryInfoKHR, pNext}
-        type FieldIsArray "pNext" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfoKHR, pNext}
-
-instance CanReadField "pNext" VkBindImageMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBindImageMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkImage VkBindImageMemoryInfoKHR
-         where
-        type VkImageMType VkBindImageMemoryInfoKHR = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfoKHR, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkBindImageMemoryInfoKHR, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkBindImageMemoryInfoKHR, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkBindImageMemoryInfoKHR, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkBindImageMemoryInfoKHR where
-        type FieldType "image" VkBindImageMemoryInfoKHR = VkImage
-        type FieldOptional "image" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkBindImageMemoryInfoKHR =
-             #{offset VkBindImageMemoryInfoKHR, image}
-        type FieldIsArray "image" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfoKHR, image}
-
-instance CanReadField "image" VkBindImageMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image" VkBindImageMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
-instance {-# OVERLAPPING #-} HasVkMemory VkBindImageMemoryInfoKHR
-         where
-        type VkMemoryMType VkBindImageMemoryInfoKHR = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfoKHR, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkBindImageMemoryInfoKHR, memory}
-
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkBindImageMemoryInfoKHR, memory}
-
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkBindImageMemoryInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkBindImageMemoryInfoKHR where
-        type FieldType "memory" VkBindImageMemoryInfoKHR = VkDeviceMemory
-        type FieldOptional "memory" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkBindImageMemoryInfoKHR =
-             #{offset VkBindImageMemoryInfoKHR, memory}
-        type FieldIsArray "memory" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryInfoKHR, memory}
-
-instance CanReadField "memory" VkBindImageMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkMemory
-
-        {-# INLINE readField #-}
-        readField = readVkMemory
-
-instance CanWriteField "memory" VkBindImageMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
-instance {-# OVERLAPPING #-}
-         HasVkMemoryOffset VkBindImageMemoryInfoKHR where
-        type VkMemoryOffsetMType VkBindImageMemoryInfoKHR = VkDeviceSize
-
-        {-# NOINLINE vkMemoryOffset #-}
-        vkMemoryOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfoKHR, memoryOffset})
-
-        {-# INLINE vkMemoryOffsetByteOffset #-}
-        vkMemoryOffsetByteOffset ~_
-          = #{offset VkBindImageMemoryInfoKHR, memoryOffset}
-
-        {-# INLINE readVkMemoryOffset #-}
-        readVkMemoryOffset p
-          = peekByteOff p #{offset VkBindImageMemoryInfoKHR, memoryOffset}
-
-        {-# INLINE writeVkMemoryOffset #-}
-        writeVkMemoryOffset p
-          = pokeByteOff p #{offset VkBindImageMemoryInfoKHR, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryOffset" VkBindImageMemoryInfoKHR where
-        type FieldType "memoryOffset" VkBindImageMemoryInfoKHR =
-             VkDeviceSize
-        type FieldOptional "memoryOffset" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryOffset" VkBindImageMemoryInfoKHR =
-             #{offset VkBindImageMemoryInfoKHR, memoryOffset}
-        type FieldIsArray "memoryOffset" VkBindImageMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryInfoKHR, memoryOffset}
-
-instance CanReadField "memoryOffset" VkBindImageMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkMemoryOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMemoryOffset
-
-instance CanWriteField "memoryOffset" VkBindImageMemoryInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemoryOffset
-
-instance Show VkBindImageMemoryInfoKHR where
-        showsPrec d x
-          = showString "VkBindImageMemoryInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkImage = " .
-                            showsPrec d (vkImage x) .
-                              showString ", " .
-                                showString "vkMemory = " .
-                                  showsPrec d (vkMemory x) .
-                                    showString ", " .
-                                      showString "vkMemoryOffset = " .
-                                        showsPrec d (vkMemoryOffset x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemorySwapchainInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemorySwapchainInfoKHR.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemorySwapchainInfoKHR.hsc
@@ -0,0 +1,235 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHR
+       (VkBindImageMemorySwapchainInfoKHR(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                      (VkSwapchainKHR)
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo (VkBindImageMemoryInfo)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > typedef struct VkBindImageMemorySwapchainInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSwapchainKHR swapchain;
+--   >     uint32_t                         imageIndex;
+--   > } VkBindImageMemorySwapchainInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBindImageMemorySwapchainInfoKHR.html VkBindImageMemorySwapchainInfoKHR registry at www.khronos.org>
+data VkBindImageMemorySwapchainInfoKHR = VkBindImageMemorySwapchainInfoKHR## Addr##
+                                                                            ByteArray##
+
+instance Eq VkBindImageMemorySwapchainInfoKHR where
+        (VkBindImageMemorySwapchainInfoKHR## a _) ==
+          x@(VkBindImageMemorySwapchainInfoKHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBindImageMemorySwapchainInfoKHR where
+        (VkBindImageMemorySwapchainInfoKHR## a _) `compare`
+          x@(VkBindImageMemorySwapchainInfoKHR## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBindImageMemorySwapchainInfoKHR where
+        unsafeAddr (VkBindImageMemorySwapchainInfoKHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBindImageMemorySwapchainInfoKHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBindImageMemorySwapchainInfoKHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemorySwapchainInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemorySwapchainInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImageMemorySwapchainInfoKHX.hsc
+++ /dev/null
@@ -1,308 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHX
-       (VkBindImageMemorySwapchainInfoKHX(..)) where
-import           Foreign.Storable                                      (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                         (VkSwapchainKHR)
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR (VkBindImageMemoryInfoKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindImageMemorySwapchainInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSwapchainKHR swapchain;
---   >     uint32_t                         imageIndex;
---   > } VkBindImageMemorySwapchainInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindImageMemorySwapchainInfoKHX.html VkBindImageMemorySwapchainInfoKHX registry at www.khronos.org>
-data VkBindImageMemorySwapchainInfoKHX = VkBindImageMemorySwapchainInfoKHX## Addr##
-                                                                            ByteArray##
-
-instance Eq VkBindImageMemorySwapchainInfoKHX where
-        (VkBindImageMemorySwapchainInfoKHX## a _) ==
-          x@(VkBindImageMemorySwapchainInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImageMemorySwapchainInfoKHX where
-        (VkBindImageMemorySwapchainInfoKHX## a _) `compare`
-          x@(VkBindImageMemorySwapchainInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImageMemorySwapchainInfoKHX where
-        sizeOf ~_ = #{size VkBindImageMemorySwapchainInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindImageMemorySwapchainInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBindImageMemorySwapchainInfoKHX where
-        unsafeAddr (VkBindImageMemorySwapchainInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBindImageMemorySwapchainInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBindImageMemorySwapchainInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBindImageMemorySwapchainInfoKHX where
-        type StructFields VkBindImageMemorySwapchainInfoKHX =
-             '["sType", "pNext", "swapchain", "imageIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindImageMemorySwapchainInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImageMemorySwapchainInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImageMemorySwapchainInfoKHX =
-             '[VkBindImageMemoryInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkBindImageMemorySwapchainInfoKHX where
-        type VkSTypeMType VkBindImageMemorySwapchainInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindImageMemorySwapchainInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImageMemorySwapchainInfoKHX where
-        type FieldType "sType" VkBindImageMemorySwapchainInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImageMemorySwapchainInfoKHX =
-             #{offset VkBindImageMemorySwapchainInfoKHX, sType}
-        type FieldIsArray "sType" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHX, sType}
-
-instance CanReadField "sType" VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkBindImageMemorySwapchainInfoKHX where
-        type VkPNextMType VkBindImageMemorySwapchainInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindImageMemorySwapchainInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImageMemorySwapchainInfoKHX where
-        type FieldType "pNext" VkBindImageMemorySwapchainInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImageMemorySwapchainInfoKHX =
-             #{offset VkBindImageMemorySwapchainInfoKHX, pNext}
-        type FieldIsArray "pNext" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHX, pNext}
-
-instance CanReadField "pNext" VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkSwapchain VkBindImageMemorySwapchainInfoKHX where
-        type VkSwapchainMType VkBindImageMemorySwapchainInfoKHX =
-             VkSwapchainKHR
-
-        {-# NOINLINE vkSwapchain #-}
-        vkSwapchain x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHX, swapchain})
-
-        {-# INLINE vkSwapchainByteOffset #-}
-        vkSwapchainByteOffset ~_
-          = #{offset VkBindImageMemorySwapchainInfoKHX, swapchain}
-
-        {-# INLINE readVkSwapchain #-}
-        readVkSwapchain p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, swapchain}
-
-        {-# INLINE writeVkSwapchain #-}
-        writeVkSwapchain p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, swapchain}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchain" VkBindImageMemorySwapchainInfoKHX where
-        type FieldType "swapchain" VkBindImageMemorySwapchainInfoKHX =
-             VkSwapchainKHR
-        type FieldOptional "swapchain" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchain" VkBindImageMemorySwapchainInfoKHX =
-             #{offset VkBindImageMemorySwapchainInfoKHX, swapchain}
-        type FieldIsArray "swapchain" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHX, swapchain}
-
-instance CanReadField "swapchain" VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSwapchain
-
-        {-# INLINE readField #-}
-        readField = readVkSwapchain
-
-instance CanWriteField "swapchain"
-           VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSwapchain
-
-instance {-# OVERLAPPING #-}
-         HasVkImageIndex VkBindImageMemorySwapchainInfoKHX where
-        type VkImageIndexMType VkBindImageMemorySwapchainInfoKHX = Word32
-
-        {-# NOINLINE vkImageIndex #-}
-        vkImageIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHX, imageIndex})
-
-        {-# INLINE vkImageIndexByteOffset #-}
-        vkImageIndexByteOffset ~_
-          = #{offset VkBindImageMemorySwapchainInfoKHX, imageIndex}
-
-        {-# INLINE readVkImageIndex #-}
-        readVkImageIndex p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, imageIndex}
-
-        {-# INLINE writeVkImageIndex #-}
-        writeVkImageIndex p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHX, imageIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageIndex" VkBindImageMemorySwapchainInfoKHX where
-        type FieldType "imageIndex" VkBindImageMemorySwapchainInfoKHX =
-             Word32
-        type FieldOptional "imageIndex" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageIndex" VkBindImageMemorySwapchainInfoKHX =
-             #{offset VkBindImageMemorySwapchainInfoKHX, imageIndex}
-        type FieldIsArray "imageIndex" VkBindImageMemorySwapchainInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHX, imageIndex}
-
-instance CanReadField "imageIndex"
-           VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkImageIndex
-
-        {-# INLINE readField #-}
-        readField = readVkImageIndex
-
-instance CanWriteField "imageIndex"
-           VkBindImageMemorySwapchainInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageIndex
-
-instance Show VkBindImageMemorySwapchainInfoKHX where
-        showsPrec d x
-          = showString "VkBindImageMemorySwapchainInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkSwapchain = " .
-                            showsPrec d (vkSwapchain x) .
-                              showString ", " .
-                                showString "vkImageIndex = " .
-                                  showsPrec d (vkImageIndex x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfo.hsc
@@ -0,0 +1,188 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfo
+       (VkBindImagePlaneMemoryInfo(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags      (VkImageAspectFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo (VkBindImageMemoryInfo)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > typedef struct VkBindImagePlaneMemoryInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImageAspectFlagBits            planeAspect;
+--   > } VkBindImagePlaneMemoryInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBindImagePlaneMemoryInfo.html VkBindImagePlaneMemoryInfo registry at www.khronos.org>
+data VkBindImagePlaneMemoryInfo = VkBindImagePlaneMemoryInfo## Addr##
+                                                              ByteArray##
+
+instance Eq VkBindImagePlaneMemoryInfo where
+        (VkBindImagePlaneMemoryInfo## a _) ==
+          x@(VkBindImagePlaneMemoryInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBindImagePlaneMemoryInfo where
+        (VkBindImagePlaneMemoryInfo## a _) `compare`
+          x@(VkBindImagePlaneMemoryInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBindImagePlaneMemoryInfo where
+        unsafeAddr (VkBindImagePlaneMemoryInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBindImagePlaneMemoryInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBindImagePlaneMemoryInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfoKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfoKHR
+       (VkBindImagePlaneMemoryInfo(..), VkBindImagePlaneMemoryInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfo (VkBindImagePlaneMemoryInfo (..))
+
+-- | Alias for `VkBindImagePlaneMemoryInfo`
+type VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindImagePlaneMemoryInfoKHR.hsc
+++ /dev/null
@@ -1,239 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfoKHR
-       (VkBindImagePlaneMemoryInfoKHR(..)) where
-import           Foreign.Storable                                      (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags         (VkImageAspectFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR (VkBindImageMemoryInfoKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindImagePlaneMemoryInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImageAspectFlagBits            planeAspect;
---   > } VkBindImagePlaneMemoryInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindImagePlaneMemoryInfoKHR.html VkBindImagePlaneMemoryInfoKHR registry at www.khronos.org>
-data VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfoKHR## Addr##
-                                                                    ByteArray##
-
-instance Eq VkBindImagePlaneMemoryInfoKHR where
-        (VkBindImagePlaneMemoryInfoKHR## a _) ==
-          x@(VkBindImagePlaneMemoryInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImagePlaneMemoryInfoKHR where
-        (VkBindImagePlaneMemoryInfoKHR## a _) `compare`
-          x@(VkBindImagePlaneMemoryInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImagePlaneMemoryInfoKHR where
-        sizeOf ~_ = #{size VkBindImagePlaneMemoryInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindImagePlaneMemoryInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBindImagePlaneMemoryInfoKHR where
-        unsafeAddr (VkBindImagePlaneMemoryInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBindImagePlaneMemoryInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBindImagePlaneMemoryInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBindImagePlaneMemoryInfoKHR where
-        type StructFields VkBindImagePlaneMemoryInfoKHR =
-             '["sType", "pNext", "planeAspect"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindImagePlaneMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImagePlaneMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImagePlaneMemoryInfoKHR =
-             '[VkBindImageMemoryInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkBindImagePlaneMemoryInfoKHR where
-        type VkSTypeMType VkBindImagePlaneMemoryInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImagePlaneMemoryInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindImagePlaneMemoryInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindImagePlaneMemoryInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindImagePlaneMemoryInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImagePlaneMemoryInfoKHR where
-        type FieldType "sType" VkBindImagePlaneMemoryInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkBindImagePlaneMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImagePlaneMemoryInfoKHR =
-             #{offset VkBindImagePlaneMemoryInfoKHR, sType}
-        type FieldIsArray "sType" VkBindImagePlaneMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImagePlaneMemoryInfoKHR, sType}
-
-instance CanReadField "sType" VkBindImagePlaneMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBindImagePlaneMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkBindImagePlaneMemoryInfoKHR where
-        type VkPNextMType VkBindImagePlaneMemoryInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImagePlaneMemoryInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindImagePlaneMemoryInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindImagePlaneMemoryInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindImagePlaneMemoryInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImagePlaneMemoryInfoKHR where
-        type FieldType "pNext" VkBindImagePlaneMemoryInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkBindImagePlaneMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImagePlaneMemoryInfoKHR =
-             #{offset VkBindImagePlaneMemoryInfoKHR, pNext}
-        type FieldIsArray "pNext" VkBindImagePlaneMemoryInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImagePlaneMemoryInfoKHR, pNext}
-
-instance CanReadField "pNext" VkBindImagePlaneMemoryInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBindImagePlaneMemoryInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPlaneAspect VkBindImagePlaneMemoryInfoKHR where
-        type VkPlaneAspectMType VkBindImagePlaneMemoryInfoKHR =
-             VkImageAspectFlagBits
-
-        {-# NOINLINE vkPlaneAspect #-}
-        vkPlaneAspect x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImagePlaneMemoryInfoKHR, planeAspect})
-
-        {-# INLINE vkPlaneAspectByteOffset #-}
-        vkPlaneAspectByteOffset ~_
-          = #{offset VkBindImagePlaneMemoryInfoKHR, planeAspect}
-
-        {-# INLINE readVkPlaneAspect #-}
-        readVkPlaneAspect p
-          = peekByteOff p #{offset VkBindImagePlaneMemoryInfoKHR, planeAspect}
-
-        {-# INLINE writeVkPlaneAspect #-}
-        writeVkPlaneAspect p
-          = pokeByteOff p #{offset VkBindImagePlaneMemoryInfoKHR, planeAspect}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeAspect" VkBindImagePlaneMemoryInfoKHR where
-        type FieldType "planeAspect" VkBindImagePlaneMemoryInfoKHR =
-             VkImageAspectFlagBits
-        type FieldOptional "planeAspect" VkBindImagePlaneMemoryInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeAspect" VkBindImagePlaneMemoryInfoKHR =
-             #{offset VkBindImagePlaneMemoryInfoKHR, planeAspect}
-        type FieldIsArray "planeAspect" VkBindImagePlaneMemoryInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImagePlaneMemoryInfoKHR, planeAspect}
-
-instance CanReadField "planeAspect" VkBindImagePlaneMemoryInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPlaneAspect
-
-        {-# INLINE readField #-}
-        readField = readVkPlaneAspect
-
-instance CanWriteField "planeAspect" VkBindImagePlaneMemoryInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPlaneAspect
-
-instance Show VkBindImagePlaneMemoryInfoKHR where
-        showsPrec d x
-          = showString "VkBindImagePlaneMemoryInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPlaneAspect = " .
-                            showsPrec d (vkPlaneAspect x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBindSparseInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBindSparseInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBindSparseInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBindSparseInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkBindSparseInfo
        (VkBindSparseInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo      (VkSparseBufferMemoryBindInfo)
 import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo       (VkSparseImageMemoryBindInfo)
 import           Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo (VkSparseImageOpaqueMemoryBindInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBindSparseInfo {
@@ -35,7 +35,7 @@
 --   >     const VkSemaphore*     pSignalSemaphores;
 --   > } VkBindSparseInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBindSparseInfo.html VkBindSparseInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBindSparseInfo.html VkBindSparseInfo registry at www.khronos.org>
 data VkBindSparseInfo = VkBindSparseInfo## Addr## ByteArray##
 
 instance Eq VkBindSparseInfo where
@@ -86,26 +86,6 @@
         type ReturnedOnly VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkBindSparseInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkBindSparseInfo where
-        type VkSTypeMType VkBindSparseInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBindSparseInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBindSparseInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBindSparseInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkBindSparseInfo
          where
         type FieldType "sType" VkBindSparseInfo = VkStructureType
@@ -120,36 +100,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBindSparseInfo, sType}
 
-instance CanReadField "sType" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkBindSparseInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, sType}
 
-instance CanWriteField "sType" VkBindSparseInfo where
+instance {-# OVERLAPPING #-} CanWriteField "sType" VkBindSparseInfo
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkBindSparseInfo where
-        type VkPNextMType VkBindSparseInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBindSparseInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBindSparseInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBindSparseInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkBindSparseInfo
          where
@@ -165,37 +131,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBindSparseInfo, pNext}
 
-instance CanReadField "pNext" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkBindSparseInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, pNext}
 
-instance CanWriteField "pNext" VkBindSparseInfo where
+instance {-# OVERLAPPING #-} CanWriteField "pNext" VkBindSparseInfo
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkWaitSemaphoreCount VkBindSparseInfo where
-        type VkWaitSemaphoreCountMType VkBindSparseInfo = Word32
-
-        {-# NOINLINE vkWaitSemaphoreCount #-}
-        vkWaitSemaphoreCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, waitSemaphoreCount})
-
-        {-# INLINE vkWaitSemaphoreCountByteOffset #-}
-        vkWaitSemaphoreCountByteOffset ~_
-          = #{offset VkBindSparseInfo, waitSemaphoreCount}
-
-        {-# INLINE readVkWaitSemaphoreCount #-}
-        readVkWaitSemaphoreCount p
-          = peekByteOff p #{offset VkBindSparseInfo, waitSemaphoreCount}
-
-        {-# INLINE writeVkWaitSemaphoreCount #-}
-        writeVkWaitSemaphoreCount p
-          = pokeByteOff p #{offset VkBindSparseInfo, waitSemaphoreCount}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "waitSemaphoreCount" VkBindSparseInfo where
@@ -212,37 +163,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, waitSemaphoreCount}
 
-instance CanReadField "waitSemaphoreCount" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkWaitSemaphoreCount
+instance {-# OVERLAPPING #-}
+         CanReadField "waitSemaphoreCount" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, waitSemaphoreCount})
 
         {-# INLINE readField #-}
-        readField = readVkWaitSemaphoreCount
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, waitSemaphoreCount}
 
-instance CanWriteField "waitSemaphoreCount" VkBindSparseInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "waitSemaphoreCount" VkBindSparseInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkWaitSemaphoreCount
-
-instance {-# OVERLAPPING #-} HasVkPWaitSemaphores VkBindSparseInfo
-         where
-        type VkPWaitSemaphoresMType VkBindSparseInfo = Ptr VkSemaphore
-
-        {-# NOINLINE vkPWaitSemaphores #-}
-        vkPWaitSemaphores x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pWaitSemaphores})
-
-        {-# INLINE vkPWaitSemaphoresByteOffset #-}
-        vkPWaitSemaphoresByteOffset ~_
-          = #{offset VkBindSparseInfo, pWaitSemaphores}
-
-        {-# INLINE readVkPWaitSemaphores #-}
-        readVkPWaitSemaphores p
-          = peekByteOff p #{offset VkBindSparseInfo, pWaitSemaphores}
-
-        {-# INLINE writeVkPWaitSemaphores #-}
-        writeVkPWaitSemaphores p
-          = pokeByteOff p #{offset VkBindSparseInfo, pWaitSemaphores}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, waitSemaphoreCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pWaitSemaphores" VkBindSparseInfo where
@@ -259,37 +195,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, pWaitSemaphores}
 
-instance CanReadField "pWaitSemaphores" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkPWaitSemaphores
+instance {-# OVERLAPPING #-}
+         CanReadField "pWaitSemaphores" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pWaitSemaphores})
 
         {-# INLINE readField #-}
-        readField = readVkPWaitSemaphores
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, pWaitSemaphores}
 
-instance CanWriteField "pWaitSemaphores" VkBindSparseInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pWaitSemaphores" VkBindSparseInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPWaitSemaphores
-
-instance {-# OVERLAPPING #-} HasVkBufferBindCount VkBindSparseInfo
-         where
-        type VkBufferBindCountMType VkBindSparseInfo = Word32
-
-        {-# NOINLINE vkBufferBindCount #-}
-        vkBufferBindCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, bufferBindCount})
-
-        {-# INLINE vkBufferBindCountByteOffset #-}
-        vkBufferBindCountByteOffset ~_
-          = #{offset VkBindSparseInfo, bufferBindCount}
-
-        {-# INLINE readVkBufferBindCount #-}
-        readVkBufferBindCount p
-          = peekByteOff p #{offset VkBindSparseInfo, bufferBindCount}
-
-        {-# INLINE writeVkBufferBindCount #-}
-        writeVkBufferBindCount p
-          = pokeByteOff p #{offset VkBindSparseInfo, bufferBindCount}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, pWaitSemaphores}
 
 instance {-# OVERLAPPING #-}
          HasField "bufferBindCount" VkBindSparseInfo where
@@ -306,38 +227,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, bufferBindCount}
 
-instance CanReadField "bufferBindCount" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkBufferBindCount
+instance {-# OVERLAPPING #-}
+         CanReadField "bufferBindCount" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, bufferBindCount})
 
         {-# INLINE readField #-}
-        readField = readVkBufferBindCount
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, bufferBindCount}
 
-instance CanWriteField "bufferBindCount" VkBindSparseInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "bufferBindCount" VkBindSparseInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkBufferBindCount
-
-instance {-# OVERLAPPING #-} HasVkPBufferBinds VkBindSparseInfo
-         where
-        type VkPBufferBindsMType VkBindSparseInfo =
-             Ptr VkSparseBufferMemoryBindInfo
-
-        {-# NOINLINE vkPBufferBinds #-}
-        vkPBufferBinds x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pBufferBinds})
-
-        {-# INLINE vkPBufferBindsByteOffset #-}
-        vkPBufferBindsByteOffset ~_
-          = #{offset VkBindSparseInfo, pBufferBinds}
-
-        {-# INLINE readVkPBufferBinds #-}
-        readVkPBufferBinds p
-          = peekByteOff p #{offset VkBindSparseInfo, pBufferBinds}
-
-        {-# INLINE writeVkPBufferBinds #-}
-        writeVkPBufferBinds p
-          = pokeByteOff p #{offset VkBindSparseInfo, pBufferBinds}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, bufferBindCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pBufferBinds" VkBindSparseInfo where
@@ -354,37 +259,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBindSparseInfo, pBufferBinds}
 
-instance CanReadField "pBufferBinds" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkPBufferBinds
-
-        {-# INLINE readField #-}
-        readField = readVkPBufferBinds
-
-instance CanWriteField "pBufferBinds" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPBufferBinds
-
 instance {-# OVERLAPPING #-}
-         HasVkImageOpaqueBindCount VkBindSparseInfo where
-        type VkImageOpaqueBindCountMType VkBindSparseInfo = Word32
-
-        {-# NOINLINE vkImageOpaqueBindCount #-}
-        vkImageOpaqueBindCount x
+         CanReadField "pBufferBinds" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, imageOpaqueBindCount})
-
-        {-# INLINE vkImageOpaqueBindCountByteOffset #-}
-        vkImageOpaqueBindCountByteOffset ~_
-          = #{offset VkBindSparseInfo, imageOpaqueBindCount}
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pBufferBinds})
 
-        {-# INLINE readVkImageOpaqueBindCount #-}
-        readVkImageOpaqueBindCount p
-          = peekByteOff p #{offset VkBindSparseInfo, imageOpaqueBindCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, pBufferBinds}
 
-        {-# INLINE writeVkImageOpaqueBindCount #-}
-        writeVkImageOpaqueBindCount p
-          = pokeByteOff p #{offset VkBindSparseInfo, imageOpaqueBindCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pBufferBinds" VkBindSparseInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, pBufferBinds}
 
 instance {-# OVERLAPPING #-}
          HasField "imageOpaqueBindCount" VkBindSparseInfo where
@@ -401,39 +291,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, imageOpaqueBindCount}
 
-instance CanReadField "imageOpaqueBindCount" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkImageOpaqueBindCount
-
-        {-# INLINE readField #-}
-        readField = readVkImageOpaqueBindCount
-
-instance CanWriteField "imageOpaqueBindCount" VkBindSparseInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageOpaqueBindCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPImageOpaqueBinds VkBindSparseInfo where
-        type VkPImageOpaqueBindsMType VkBindSparseInfo =
-             Ptr VkSparseImageOpaqueMemoryBindInfo
-
-        {-# NOINLINE vkPImageOpaqueBinds #-}
-        vkPImageOpaqueBinds x
+         CanReadField "imageOpaqueBindCount" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pImageOpaqueBinds})
-
-        {-# INLINE vkPImageOpaqueBindsByteOffset #-}
-        vkPImageOpaqueBindsByteOffset ~_
-          = #{offset VkBindSparseInfo, pImageOpaqueBinds}
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, imageOpaqueBindCount})
 
-        {-# INLINE readVkPImageOpaqueBinds #-}
-        readVkPImageOpaqueBinds p
-          = peekByteOff p #{offset VkBindSparseInfo, pImageOpaqueBinds}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, imageOpaqueBindCount}
 
-        {-# INLINE writeVkPImageOpaqueBinds #-}
-        writeVkPImageOpaqueBinds p
-          = pokeByteOff p #{offset VkBindSparseInfo, pImageOpaqueBinds}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageOpaqueBindCount" VkBindSparseInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, imageOpaqueBindCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pImageOpaqueBinds" VkBindSparseInfo where
@@ -451,37 +324,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, pImageOpaqueBinds}
 
-instance CanReadField "pImageOpaqueBinds" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkPImageOpaqueBinds
+instance {-# OVERLAPPING #-}
+         CanReadField "pImageOpaqueBinds" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pImageOpaqueBinds})
 
         {-# INLINE readField #-}
-        readField = readVkPImageOpaqueBinds
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, pImageOpaqueBinds}
 
-instance CanWriteField "pImageOpaqueBinds" VkBindSparseInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pImageOpaqueBinds" VkBindSparseInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPImageOpaqueBinds
-
-instance {-# OVERLAPPING #-} HasVkImageBindCount VkBindSparseInfo
-         where
-        type VkImageBindCountMType VkBindSparseInfo = Word32
-
-        {-# NOINLINE vkImageBindCount #-}
-        vkImageBindCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, imageBindCount})
-
-        {-# INLINE vkImageBindCountByteOffset #-}
-        vkImageBindCountByteOffset ~_
-          = #{offset VkBindSparseInfo, imageBindCount}
-
-        {-# INLINE readVkImageBindCount #-}
-        readVkImageBindCount p
-          = peekByteOff p #{offset VkBindSparseInfo, imageBindCount}
-
-        {-# INLINE writeVkImageBindCount #-}
-        writeVkImageBindCount p
-          = pokeByteOff p #{offset VkBindSparseInfo, imageBindCount}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, pImageOpaqueBinds}
 
 instance {-# OVERLAPPING #-}
          HasField "imageBindCount" VkBindSparseInfo where
@@ -498,38 +356,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, imageBindCount}
 
-instance CanReadField "imageBindCount" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkImageBindCount
+instance {-# OVERLAPPING #-}
+         CanReadField "imageBindCount" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, imageBindCount})
 
         {-# INLINE readField #-}
-        readField = readVkImageBindCount
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, imageBindCount}
 
-instance CanWriteField "imageBindCount" VkBindSparseInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageBindCount" VkBindSparseInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkImageBindCount
-
-instance {-# OVERLAPPING #-} HasVkPImageBinds VkBindSparseInfo
-         where
-        type VkPImageBindsMType VkBindSparseInfo =
-             Ptr VkSparseImageMemoryBindInfo
-
-        {-# NOINLINE vkPImageBinds #-}
-        vkPImageBinds x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pImageBinds})
-
-        {-# INLINE vkPImageBindsByteOffset #-}
-        vkPImageBindsByteOffset ~_
-          = #{offset VkBindSparseInfo, pImageBinds}
-
-        {-# INLINE readVkPImageBinds #-}
-        readVkPImageBinds p
-          = peekByteOff p #{offset VkBindSparseInfo, pImageBinds}
-
-        {-# INLINE writeVkPImageBinds #-}
-        writeVkPImageBinds p
-          = pokeByteOff p #{offset VkBindSparseInfo, pImageBinds}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, imageBindCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pImageBinds" VkBindSparseInfo where
@@ -546,37 +388,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBindSparseInfo, pImageBinds}
 
-instance CanReadField "pImageBinds" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkPImageBinds
-
-        {-# INLINE readField #-}
-        readField = readVkPImageBinds
-
-instance CanWriteField "pImageBinds" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPImageBinds
-
 instance {-# OVERLAPPING #-}
-         HasVkSignalSemaphoreCount VkBindSparseInfo where
-        type VkSignalSemaphoreCountMType VkBindSparseInfo = Word32
-
-        {-# NOINLINE vkSignalSemaphoreCount #-}
-        vkSignalSemaphoreCount x
+         CanReadField "pImageBinds" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, signalSemaphoreCount})
-
-        {-# INLINE vkSignalSemaphoreCountByteOffset #-}
-        vkSignalSemaphoreCountByteOffset ~_
-          = #{offset VkBindSparseInfo, signalSemaphoreCount}
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pImageBinds})
 
-        {-# INLINE readVkSignalSemaphoreCount #-}
-        readVkSignalSemaphoreCount p
-          = peekByteOff p #{offset VkBindSparseInfo, signalSemaphoreCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, pImageBinds}
 
-        {-# INLINE writeVkSignalSemaphoreCount #-}
-        writeVkSignalSemaphoreCount p
-          = pokeByteOff p #{offset VkBindSparseInfo, signalSemaphoreCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pImageBinds" VkBindSparseInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, pImageBinds}
 
 instance {-# OVERLAPPING #-}
          HasField "signalSemaphoreCount" VkBindSparseInfo where
@@ -593,38 +420,22 @@
         fieldOffset
           = #{offset VkBindSparseInfo, signalSemaphoreCount}
 
-instance CanReadField "signalSemaphoreCount" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkSignalSemaphoreCount
-
-        {-# INLINE readField #-}
-        readField = readVkSignalSemaphoreCount
-
-instance CanWriteField "signalSemaphoreCount" VkBindSparseInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSignalSemaphoreCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPSignalSemaphores VkBindSparseInfo where
-        type VkPSignalSemaphoresMType VkBindSparseInfo = Ptr VkSemaphore
-
-        {-# NOINLINE vkPSignalSemaphores #-}
-        vkPSignalSemaphores x
+         CanReadField "signalSemaphoreCount" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pSignalSemaphores})
-
-        {-# INLINE vkPSignalSemaphoresByteOffset #-}
-        vkPSignalSemaphoresByteOffset ~_
-          = #{offset VkBindSparseInfo, pSignalSemaphores}
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, signalSemaphoreCount})
 
-        {-# INLINE readVkPSignalSemaphores #-}
-        readVkPSignalSemaphores p
-          = peekByteOff p #{offset VkBindSparseInfo, pSignalSemaphores}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, signalSemaphoreCount}
 
-        {-# INLINE writeVkPSignalSemaphores #-}
-        writeVkPSignalSemaphores p
-          = pokeByteOff p #{offset VkBindSparseInfo, pSignalSemaphores}
+instance {-# OVERLAPPING #-}
+         CanWriteField "signalSemaphoreCount" VkBindSparseInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, signalSemaphoreCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSignalSemaphores" VkBindSparseInfo where
@@ -642,63 +453,77 @@
         fieldOffset
           = #{offset VkBindSparseInfo, pSignalSemaphores}
 
-instance CanReadField "pSignalSemaphores" VkBindSparseInfo where
-        {-# INLINE getField #-}
-        getField = vkPSignalSemaphores
+instance {-# OVERLAPPING #-}
+         CanReadField "pSignalSemaphores" VkBindSparseInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pSignalSemaphores})
 
         {-# INLINE readField #-}
-        readField = readVkPSignalSemaphores
+        readField p
+          = peekByteOff p #{offset VkBindSparseInfo, pSignalSemaphores}
 
-instance CanWriteField "pSignalSemaphores" VkBindSparseInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSignalSemaphores" VkBindSparseInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPSignalSemaphores
+        writeField p
+          = pokeByteOff p #{offset VkBindSparseInfo, pSignalSemaphores}
 
 instance Show VkBindSparseInfo where
         showsPrec d x
           = showString "VkBindSparseInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkWaitSemaphoreCount = " .
-                            showsPrec d (vkWaitSemaphoreCount x) .
+                          showString "waitSemaphoreCount = " .
+                            showsPrec d (getField @"waitSemaphoreCount" x) .
                               showString ", " .
-                                showString "vkPWaitSemaphores = " .
-                                  showsPrec d (vkPWaitSemaphores x) .
+                                showString "pWaitSemaphores = " .
+                                  showsPrec d (getField @"pWaitSemaphores" x) .
                                     showString ", " .
-                                      showString "vkBufferBindCount = " .
-                                        showsPrec d (vkBufferBindCount x) .
+                                      showString "bufferBindCount = " .
+                                        showsPrec d (getField @"bufferBindCount" x) .
                                           showString ", " .
-                                            showString "vkPBufferBinds = " .
-                                              showsPrec d (vkPBufferBinds x) .
+                                            showString "pBufferBinds = " .
+                                              showsPrec d (getField @"pBufferBinds" x) .
                                                 showString ", " .
-                                                  showString "vkImageOpaqueBindCount = " .
-                                                    showsPrec d (vkImageOpaqueBindCount x) .
+                                                  showString "imageOpaqueBindCount = " .
+                                                    showsPrec d (getField @"imageOpaqueBindCount" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkPImageOpaqueBinds = " .
-                                                          showsPrec d (vkPImageOpaqueBinds x) .
+                                                        showString "pImageOpaqueBinds = " .
+                                                          showsPrec d
+                                                            (getField @"pImageOpaqueBinds" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkImageBindCount = " .
-                                                                showsPrec d (vkImageBindCount x) .
+                                                              showString "imageBindCount = " .
+                                                                showsPrec d
+                                                                  (getField @"imageBindCount" x)
+                                                                  .
                                                                   showString ", " .
-                                                                    showString "vkPImageBinds = " .
-                                                                      showsPrec d (vkPImageBinds x)
+                                                                    showString "pImageBinds = " .
+                                                                      showsPrec d
+                                                                        (getField @"pImageBinds" x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkSignalSemaphoreCount = "
+                                                                            "signalSemaphoreCount = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkSignalSemaphoreCount
+                                                                              (getField
+                                                                                 @"signalSemaphoreCount"
                                                                                  x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkPSignalSemaphores = "
+                                                                                  "pSignalSemaphores = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkPSignalSemaphores
+                                                                                    (getField
+                                                                                       @"pSignalSemaphores"
                                                                                        x)
                                                                                     . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCopy.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCopy.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCopy.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCopy.hsc
@@ -5,16 +5,16 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkBufferCopy (VkBufferCopy(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes     (VkDeviceSize)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes  (VkDeviceSize)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBufferCopy {
 --   >     VkDeviceSize           srcOffset;
@@ -22,7 +22,7 @@
 --   >     VkDeviceSize           size;
 --   > } VkBufferCopy;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBufferCopy.html VkBufferCopy registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBufferCopy.html VkBufferCopy registry at www.khronos.org>
 data VkBufferCopy = VkBufferCopy## Addr## ByteArray##
 
 instance Eq VkBufferCopy where
@@ -70,26 +70,6 @@
         type ReturnedOnly VkBufferCopy = 'False -- ' closing tick for hsc2hs
         type StructExtends VkBufferCopy = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSrcOffset VkBufferCopy where
-        type VkSrcOffsetMType VkBufferCopy = VkDeviceSize
-
-        {-# NOINLINE vkSrcOffset #-}
-        vkSrcOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, srcOffset})
-
-        {-# INLINE vkSrcOffsetByteOffset #-}
-        vkSrcOffsetByteOffset ~_
-          = #{offset VkBufferCopy, srcOffset}
-
-        {-# INLINE readVkSrcOffset #-}
-        readVkSrcOffset p
-          = peekByteOff p #{offset VkBufferCopy, srcOffset}
-
-        {-# INLINE writeVkSrcOffset #-}
-        writeVkSrcOffset p
-          = pokeByteOff p #{offset VkBufferCopy, srcOffset}
-
 instance {-# OVERLAPPING #-} HasField "srcOffset" VkBufferCopy
          where
         type FieldType "srcOffset" VkBufferCopy = VkDeviceSize
@@ -104,36 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCopy, srcOffset}
 
-instance CanReadField "srcOffset" VkBufferCopy where
-        {-# INLINE getField #-}
-        getField = vkSrcOffset
+instance {-# OVERLAPPING #-} CanReadField "srcOffset" VkBufferCopy
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, srcOffset})
 
         {-# INLINE readField #-}
-        readField = readVkSrcOffset
+        readField p
+          = peekByteOff p #{offset VkBufferCopy, srcOffset}
 
-instance CanWriteField "srcOffset" VkBufferCopy where
+instance {-# OVERLAPPING #-} CanWriteField "srcOffset" VkBufferCopy
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcOffset
-
-instance {-# OVERLAPPING #-} HasVkDstOffset VkBufferCopy where
-        type VkDstOffsetMType VkBufferCopy = VkDeviceSize
-
-        {-# NOINLINE vkDstOffset #-}
-        vkDstOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, dstOffset})
-
-        {-# INLINE vkDstOffsetByteOffset #-}
-        vkDstOffsetByteOffset ~_
-          = #{offset VkBufferCopy, dstOffset}
-
-        {-# INLINE readVkDstOffset #-}
-        readVkDstOffset p
-          = peekByteOff p #{offset VkBufferCopy, dstOffset}
-
-        {-# INLINE writeVkDstOffset #-}
-        writeVkDstOffset p
-          = pokeByteOff p #{offset VkBufferCopy, dstOffset}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCopy, srcOffset}
 
 instance {-# OVERLAPPING #-} HasField "dstOffset" VkBufferCopy
          where
@@ -149,35 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCopy, dstOffset}
 
-instance CanReadField "dstOffset" VkBufferCopy where
-        {-# INLINE getField #-}
-        getField = vkDstOffset
+instance {-# OVERLAPPING #-} CanReadField "dstOffset" VkBufferCopy
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, dstOffset})
 
         {-# INLINE readField #-}
-        readField = readVkDstOffset
+        readField p
+          = peekByteOff p #{offset VkBufferCopy, dstOffset}
 
-instance CanWriteField "dstOffset" VkBufferCopy where
+instance {-# OVERLAPPING #-} CanWriteField "dstOffset" VkBufferCopy
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkDstOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkBufferCopy where
-        type VkSizeMType VkBufferCopy = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_ = #{offset VkBufferCopy, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkBufferCopy, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkBufferCopy, size}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCopy, dstOffset}
 
 instance {-# OVERLAPPING #-} HasField "size" VkBufferCopy where
         type FieldType "size" VkBufferCopy = VkDeviceSize
@@ -192,24 +145,30 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCopy, size}
 
-instance CanReadField "size" VkBufferCopy where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-} CanReadField "size" VkBufferCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkBufferCopy, size}
 
-instance CanWriteField "size" VkBufferCopy where
+instance {-# OVERLAPPING #-} CanWriteField "size" VkBufferCopy
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
+        writeField p
+          = pokeByteOff p #{offset VkBufferCopy, size}
 
 instance Show VkBufferCopy where
         showsPrec d x
           = showString "VkBufferCopy {" .
-              showString "vkSrcOffset = " .
-                showsPrec d (vkSrcOffset x) .
+              showString "srcOffset = " .
+                showsPrec d (getField @"srcOffset" x) .
                   showString ", " .
-                    showString "vkDstOffset = " .
-                      showsPrec d (vkDstOffset x) .
+                    showString "dstOffset = " .
+                      showsPrec d (getField @"dstOffset" x) .
                         showString ", " .
-                          showString "vkSize = " . showsPrec d (vkSize x) . showChar '}'
+                          showString "size = " .
+                            showsPrec d (getField @"size" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkBufferCreateInfo
        (VkBufferCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags  (VkBufferUsageFlags)
 import           Graphics.Vulkan.Types.Enum.VkSharingMode       (VkSharingMode)
 import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBufferCreateInfo {
@@ -31,7 +31,7 @@
 --   >     const uint32_t*        pQueueFamilyIndices;
 --   > } VkBufferCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBufferCreateInfo.html VkBufferCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBufferCreateInfo.html VkBufferCreateInfo registry at www.khronos.org>
 data VkBufferCreateInfo = VkBufferCreateInfo## Addr## ByteArray##
 
 instance Eq VkBufferCreateInfo where
@@ -80,26 +80,6 @@
         type ReturnedOnly VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkBufferCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkBufferCreateInfo where
-        type VkSTypeMType VkBufferCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBufferCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBufferCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBufferCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkBufferCreateInfo
          where
         type FieldType "sType" VkBufferCreateInfo = VkStructureType
@@ -114,36 +94,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCreateInfo, sType}
 
-instance CanReadField "sType" VkBufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, sType}
 
-instance CanWriteField "sType" VkBufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkBufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkBufferCreateInfo where
-        type VkPNextMType VkBufferCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBufferCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBufferCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBufferCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkBufferCreateInfo
          where
@@ -159,36 +125,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCreateInfo, pNext}
 
-instance CanReadField "pNext" VkBufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkBufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkBufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkBufferCreateInfo where
-        type VkFlagsMType VkBufferCreateInfo = VkBufferCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkBufferCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkBufferCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkBufferCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkBufferCreateInfo
          where
@@ -204,36 +156,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCreateInfo, flags}
 
-instance CanReadField "flags" VkBufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, flags}
 
-instance CanWriteField "flags" VkBufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkBufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkSize VkBufferCreateInfo where
-        type VkSizeMType VkBufferCreateInfo = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkBufferCreateInfo, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkBufferCreateInfo, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkBufferCreateInfo, size}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, flags}
 
 instance {-# OVERLAPPING #-} HasField "size" VkBufferCreateInfo
          where
@@ -249,36 +187,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCreateInfo, size}
 
-instance CanReadField "size" VkBufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-} CanReadField "size" VkBufferCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, size}
 
-instance CanWriteField "size" VkBufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkBufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
-
-instance {-# OVERLAPPING #-} HasVkUsage VkBufferCreateInfo where
-        type VkUsageMType VkBufferCreateInfo = VkBufferUsageFlags
-
-        {-# NOINLINE vkUsage #-}
-        vkUsage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, usage})
-
-        {-# INLINE vkUsageByteOffset #-}
-        vkUsageByteOffset ~_
-          = #{offset VkBufferCreateInfo, usage}
-
-        {-# INLINE readVkUsage #-}
-        readVkUsage p
-          = peekByteOff p #{offset VkBufferCreateInfo, usage}
-
-        {-# INLINE writeVkUsage #-}
-        writeVkUsage p
-          = pokeByteOff p #{offset VkBufferCreateInfo, usage}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, size}
 
 instance {-# OVERLAPPING #-} HasField "usage" VkBufferCreateInfo
          where
@@ -294,37 +218,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCreateInfo, usage}
 
-instance CanReadField "usage" VkBufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkUsage
+instance {-# OVERLAPPING #-}
+         CanReadField "usage" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, usage})
 
         {-# INLINE readField #-}
-        readField = readVkUsage
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, usage}
 
-instance CanWriteField "usage" VkBufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "usage" VkBufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkUsage
-
-instance {-# OVERLAPPING #-} HasVkSharingMode VkBufferCreateInfo
-         where
-        type VkSharingModeMType VkBufferCreateInfo = VkSharingMode
-
-        {-# NOINLINE vkSharingMode #-}
-        vkSharingMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, sharingMode})
-
-        {-# INLINE vkSharingModeByteOffset #-}
-        vkSharingModeByteOffset ~_
-          = #{offset VkBufferCreateInfo, sharingMode}
-
-        {-# INLINE readVkSharingMode #-}
-        readVkSharingMode p
-          = peekByteOff p #{offset VkBufferCreateInfo, sharingMode}
-
-        {-# INLINE writeVkSharingMode #-}
-        writeVkSharingMode p
-          = pokeByteOff p #{offset VkBufferCreateInfo, sharingMode}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, usage}
 
 instance {-# OVERLAPPING #-}
          HasField "sharingMode" VkBufferCreateInfo where
@@ -340,37 +249,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferCreateInfo, sharingMode}
 
-instance CanReadField "sharingMode" VkBufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSharingMode
-
-        {-# INLINE readField #-}
-        readField = readVkSharingMode
-
-instance CanWriteField "sharingMode" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkSharingMode
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueFamilyIndexCount VkBufferCreateInfo where
-        type VkQueueFamilyIndexCountMType VkBufferCreateInfo = Word32
-
-        {-# NOINLINE vkQueueFamilyIndexCount #-}
-        vkQueueFamilyIndexCount x
+         CanReadField "sharingMode" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, queueFamilyIndexCount})
-
-        {-# INLINE vkQueueFamilyIndexCountByteOffset #-}
-        vkQueueFamilyIndexCountByteOffset ~_
-          = #{offset VkBufferCreateInfo, queueFamilyIndexCount}
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, sharingMode})
 
-        {-# INLINE readVkQueueFamilyIndexCount #-}
-        readVkQueueFamilyIndexCount p
-          = peekByteOff p #{offset VkBufferCreateInfo, queueFamilyIndexCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, sharingMode}
 
-        {-# INLINE writeVkQueueFamilyIndexCount #-}
-        writeVkQueueFamilyIndexCount p
-          = pokeByteOff p #{offset VkBufferCreateInfo, queueFamilyIndexCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sharingMode" VkBufferCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, sharingMode}
 
 instance {-# OVERLAPPING #-}
          HasField "queueFamilyIndexCount" VkBufferCreateInfo where
@@ -389,39 +283,22 @@
         fieldOffset
           = #{offset VkBufferCreateInfo, queueFamilyIndexCount}
 
-instance CanReadField "queueFamilyIndexCount" VkBufferCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueFamilyIndexCount
-
-        {-# INLINE readField #-}
-        readField = readVkQueueFamilyIndexCount
-
-instance CanWriteField "queueFamilyIndexCount" VkBufferCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueueFamilyIndexCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPQueueFamilyIndices VkBufferCreateInfo where
-        type VkPQueueFamilyIndicesMType VkBufferCreateInfo = Ptr Word32
-
-        {-# NOINLINE vkPQueueFamilyIndices #-}
-        vkPQueueFamilyIndices x
+         CanReadField "queueFamilyIndexCount" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, pQueueFamilyIndices})
-
-        {-# INLINE vkPQueueFamilyIndicesByteOffset #-}
-        vkPQueueFamilyIndicesByteOffset ~_
-          = #{offset VkBufferCreateInfo, pQueueFamilyIndices}
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, queueFamilyIndexCount})
 
-        {-# INLINE readVkPQueueFamilyIndices #-}
-        readVkPQueueFamilyIndices p
-          = peekByteOff p #{offset VkBufferCreateInfo, pQueueFamilyIndices}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, queueFamilyIndexCount}
 
-        {-# INLINE writeVkPQueueFamilyIndices #-}
-        writeVkPQueueFamilyIndices p
-          = pokeByteOff p #{offset VkBufferCreateInfo, pQueueFamilyIndices}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueFamilyIndexCount" VkBufferCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, queueFamilyIndexCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pQueueFamilyIndices" VkBufferCreateInfo where
@@ -440,43 +317,50 @@
         fieldOffset
           = #{offset VkBufferCreateInfo, pQueueFamilyIndices}
 
-instance CanReadField "pQueueFamilyIndices" VkBufferCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPQueueFamilyIndices
+instance {-# OVERLAPPING #-}
+         CanReadField "pQueueFamilyIndices" VkBufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, pQueueFamilyIndices})
 
         {-# INLINE readField #-}
-        readField = readVkPQueueFamilyIndices
+        readField p
+          = peekByteOff p #{offset VkBufferCreateInfo, pQueueFamilyIndices}
 
-instance CanWriteField "pQueueFamilyIndices" VkBufferCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pQueueFamilyIndices" VkBufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPQueueFamilyIndices
+        writeField p
+          = pokeByteOff p #{offset VkBufferCreateInfo, pQueueFamilyIndices}
 
 instance Show VkBufferCreateInfo where
         showsPrec d x
           = showString "VkBufferCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkSize = " .
-                                  showsPrec d (vkSize x) .
+                                showString "size = " .
+                                  showsPrec d (getField @"size" x) .
                                     showString ", " .
-                                      showString "vkUsage = " .
-                                        showsPrec d (vkUsage x) .
+                                      showString "usage = " .
+                                        showsPrec d (getField @"usage" x) .
                                           showString ", " .
-                                            showString "vkSharingMode = " .
-                                              showsPrec d (vkSharingMode x) .
+                                            showString "sharingMode = " .
+                                              showsPrec d (getField @"sharingMode" x) .
                                                 showString ", " .
-                                                  showString "vkQueueFamilyIndexCount = " .
-                                                    showsPrec d (vkQueueFamilyIndexCount x) .
+                                                  showString "queueFamilyIndexCount = " .
+                                                    showsPrec d
+                                                      (getField @"queueFamilyIndexCount" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkPQueueFamilyIndices = " .
-                                                          showsPrec d (vkPQueueFamilyIndices x) .
-                                                            showChar '}'
+                                                        showString "pQueueFamilyIndices = " .
+                                                          showsPrec d
+                                                            (getField @"pQueueFamilyIndices" x)
+                                                            . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferImageCopy.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferImageCopy.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferImageCopy.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferImageCopy.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkBufferImageCopy
        (VkBufferImageCopy(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Struct.VkExtent3D               (VkExtent3D)
 import           Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers (VkImageSubresourceLayers)
 import           Graphics.Vulkan.Types.Struct.VkOffset3D               (VkOffset3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBufferImageCopy {
@@ -28,7 +28,7 @@
 --   >     VkExtent3D             imageExtent;
 --   > } VkBufferImageCopy;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBufferImageCopy.html VkBufferImageCopy registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBufferImageCopy.html VkBufferImageCopy registry at www.khronos.org>
 data VkBufferImageCopy = VkBufferImageCopy## Addr## ByteArray##
 
 instance Eq VkBufferImageCopy where
@@ -77,27 +77,6 @@
         type ReturnedOnly VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
         type StructExtends VkBufferImageCopy = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkBufferOffset VkBufferImageCopy
-         where
-        type VkBufferOffsetMType VkBufferImageCopy = VkDeviceSize
-
-        {-# NOINLINE vkBufferOffset #-}
-        vkBufferOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferOffset})
-
-        {-# INLINE vkBufferOffsetByteOffset #-}
-        vkBufferOffsetByteOffset ~_
-          = #{offset VkBufferImageCopy, bufferOffset}
-
-        {-# INLINE readVkBufferOffset #-}
-        readVkBufferOffset p
-          = peekByteOff p #{offset VkBufferImageCopy, bufferOffset}
-
-        {-# INLINE writeVkBufferOffset #-}
-        writeVkBufferOffset p
-          = pokeByteOff p #{offset VkBufferImageCopy, bufferOffset}
-
 instance {-# OVERLAPPING #-}
          HasField "bufferOffset" VkBufferImageCopy where
         type FieldType "bufferOffset" VkBufferImageCopy = VkDeviceSize
@@ -112,37 +91,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferImageCopy, bufferOffset}
 
-instance CanReadField "bufferOffset" VkBufferImageCopy where
-        {-# INLINE getField #-}
-        getField = vkBufferOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "bufferOffset" VkBufferImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferOffset})
 
         {-# INLINE readField #-}
-        readField = readVkBufferOffset
+        readField p
+          = peekByteOff p #{offset VkBufferImageCopy, bufferOffset}
 
-instance CanWriteField "bufferOffset" VkBufferImageCopy where
+instance {-# OVERLAPPING #-}
+         CanWriteField "bufferOffset" VkBufferImageCopy where
         {-# INLINE writeField #-}
-        writeField = writeVkBufferOffset
-
-instance {-# OVERLAPPING #-} HasVkBufferRowLength VkBufferImageCopy
-         where
-        type VkBufferRowLengthMType VkBufferImageCopy = Word32
-
-        {-# NOINLINE vkBufferRowLength #-}
-        vkBufferRowLength x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferRowLength})
-
-        {-# INLINE vkBufferRowLengthByteOffset #-}
-        vkBufferRowLengthByteOffset ~_
-          = #{offset VkBufferImageCopy, bufferRowLength}
-
-        {-# INLINE readVkBufferRowLength #-}
-        readVkBufferRowLength p
-          = peekByteOff p #{offset VkBufferImageCopy, bufferRowLength}
-
-        {-# INLINE writeVkBufferRowLength #-}
-        writeVkBufferRowLength p
-          = pokeByteOff p #{offset VkBufferImageCopy, bufferRowLength}
+        writeField p
+          = pokeByteOff p #{offset VkBufferImageCopy, bufferOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "bufferRowLength" VkBufferImageCopy where
@@ -159,37 +123,22 @@
         fieldOffset
           = #{offset VkBufferImageCopy, bufferRowLength}
 
-instance CanReadField "bufferRowLength" VkBufferImageCopy where
-        {-# INLINE getField #-}
-        getField = vkBufferRowLength
-
-        {-# INLINE readField #-}
-        readField = readVkBufferRowLength
-
-instance CanWriteField "bufferRowLength" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField = writeVkBufferRowLength
-
 instance {-# OVERLAPPING #-}
-         HasVkBufferImageHeight VkBufferImageCopy where
-        type VkBufferImageHeightMType VkBufferImageCopy = Word32
-
-        {-# NOINLINE vkBufferImageHeight #-}
-        vkBufferImageHeight x
+         CanReadField "bufferRowLength" VkBufferImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferImageHeight})
-
-        {-# INLINE vkBufferImageHeightByteOffset #-}
-        vkBufferImageHeightByteOffset ~_
-          = #{offset VkBufferImageCopy, bufferImageHeight}
+              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferRowLength})
 
-        {-# INLINE readVkBufferImageHeight #-}
-        readVkBufferImageHeight p
-          = peekByteOff p #{offset VkBufferImageCopy, bufferImageHeight}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferImageCopy, bufferRowLength}
 
-        {-# INLINE writeVkBufferImageHeight #-}
-        writeVkBufferImageHeight p
-          = pokeByteOff p #{offset VkBufferImageCopy, bufferImageHeight}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bufferRowLength" VkBufferImageCopy where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferImageCopy, bufferRowLength}
 
 instance {-# OVERLAPPING #-}
          HasField "bufferImageHeight" VkBufferImageCopy where
@@ -206,38 +155,22 @@
         fieldOffset
           = #{offset VkBufferImageCopy, bufferImageHeight}
 
-instance CanReadField "bufferImageHeight" VkBufferImageCopy where
-        {-# INLINE getField #-}
-        getField = vkBufferImageHeight
-
-        {-# INLINE readField #-}
-        readField = readVkBufferImageHeight
-
-instance CanWriteField "bufferImageHeight" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField = writeVkBufferImageHeight
-
 instance {-# OVERLAPPING #-}
-         HasVkImageSubresource VkBufferImageCopy where
-        type VkImageSubresourceMType VkBufferImageCopy =
-             VkImageSubresourceLayers
-
-        {-# NOINLINE vkImageSubresource #-}
-        vkImageSubresource x
+         CanReadField "bufferImageHeight" VkBufferImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageSubresource})
-
-        {-# INLINE vkImageSubresourceByteOffset #-}
-        vkImageSubresourceByteOffset ~_
-          = #{offset VkBufferImageCopy, imageSubresource}
+              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferImageHeight})
 
-        {-# INLINE readVkImageSubresource #-}
-        readVkImageSubresource p
-          = peekByteOff p #{offset VkBufferImageCopy, imageSubresource}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferImageCopy, bufferImageHeight}
 
-        {-# INLINE writeVkImageSubresource #-}
-        writeVkImageSubresource p
-          = pokeByteOff p #{offset VkBufferImageCopy, imageSubresource}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bufferImageHeight" VkBufferImageCopy where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferImageCopy, bufferImageHeight}
 
 instance {-# OVERLAPPING #-}
          HasField "imageSubresource" VkBufferImageCopy where
@@ -255,37 +188,22 @@
         fieldOffset
           = #{offset VkBufferImageCopy, imageSubresource}
 
-instance CanReadField "imageSubresource" VkBufferImageCopy where
-        {-# INLINE getField #-}
-        getField = vkImageSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "imageSubresource" VkBufferImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkImageSubresource
+        readField p
+          = peekByteOff p #{offset VkBufferImageCopy, imageSubresource}
 
-instance CanWriteField "imageSubresource" VkBufferImageCopy where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageSubresource" VkBufferImageCopy where
         {-# INLINE writeField #-}
-        writeField = writeVkImageSubresource
-
-instance {-# OVERLAPPING #-} HasVkImageOffset VkBufferImageCopy
-         where
-        type VkImageOffsetMType VkBufferImageCopy = VkOffset3D
-
-        {-# NOINLINE vkImageOffset #-}
-        vkImageOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageOffset})
-
-        {-# INLINE vkImageOffsetByteOffset #-}
-        vkImageOffsetByteOffset ~_
-          = #{offset VkBufferImageCopy, imageOffset}
-
-        {-# INLINE readVkImageOffset #-}
-        readVkImageOffset p
-          = peekByteOff p #{offset VkBufferImageCopy, imageOffset}
-
-        {-# INLINE writeVkImageOffset #-}
-        writeVkImageOffset p
-          = pokeByteOff p #{offset VkBufferImageCopy, imageOffset}
+        writeField p
+          = pokeByteOff p #{offset VkBufferImageCopy, imageSubresource}
 
 instance {-# OVERLAPPING #-}
          HasField "imageOffset" VkBufferImageCopy where
@@ -301,37 +219,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferImageCopy, imageOffset}
 
-instance CanReadField "imageOffset" VkBufferImageCopy where
-        {-# INLINE getField #-}
-        getField = vkImageOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "imageOffset" VkBufferImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageOffset})
 
         {-# INLINE readField #-}
-        readField = readVkImageOffset
+        readField p
+          = peekByteOff p #{offset VkBufferImageCopy, imageOffset}
 
-instance CanWriteField "imageOffset" VkBufferImageCopy where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageOffset" VkBufferImageCopy where
         {-# INLINE writeField #-}
-        writeField = writeVkImageOffset
-
-instance {-# OVERLAPPING #-} HasVkImageExtent VkBufferImageCopy
-         where
-        type VkImageExtentMType VkBufferImageCopy = VkExtent3D
-
-        {-# NOINLINE vkImageExtent #-}
-        vkImageExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageExtent})
-
-        {-# INLINE vkImageExtentByteOffset #-}
-        vkImageExtentByteOffset ~_
-          = #{offset VkBufferImageCopy, imageExtent}
-
-        {-# INLINE readVkImageExtent #-}
-        readVkImageExtent p
-          = peekByteOff p #{offset VkBufferImageCopy, imageExtent}
-
-        {-# INLINE writeVkImageExtent #-}
-        writeVkImageExtent p
-          = pokeByteOff p #{offset VkBufferImageCopy, imageExtent}
+        writeField p
+          = pokeByteOff p #{offset VkBufferImageCopy, imageOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "imageExtent" VkBufferImageCopy where
@@ -347,34 +250,40 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferImageCopy, imageExtent}
 
-instance CanReadField "imageExtent" VkBufferImageCopy where
-        {-# INLINE getField #-}
-        getField = vkImageExtent
+instance {-# OVERLAPPING #-}
+         CanReadField "imageExtent" VkBufferImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageExtent})
 
         {-# INLINE readField #-}
-        readField = readVkImageExtent
+        readField p
+          = peekByteOff p #{offset VkBufferImageCopy, imageExtent}
 
-instance CanWriteField "imageExtent" VkBufferImageCopy where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageExtent" VkBufferImageCopy where
         {-# INLINE writeField #-}
-        writeField = writeVkImageExtent
+        writeField p
+          = pokeByteOff p #{offset VkBufferImageCopy, imageExtent}
 
 instance Show VkBufferImageCopy where
         showsPrec d x
           = showString "VkBufferImageCopy {" .
-              showString "vkBufferOffset = " .
-                showsPrec d (vkBufferOffset x) .
+              showString "bufferOffset = " .
+                showsPrec d (getField @"bufferOffset" x) .
                   showString ", " .
-                    showString "vkBufferRowLength = " .
-                      showsPrec d (vkBufferRowLength x) .
+                    showString "bufferRowLength = " .
+                      showsPrec d (getField @"bufferRowLength" x) .
                         showString ", " .
-                          showString "vkBufferImageHeight = " .
-                            showsPrec d (vkBufferImageHeight x) .
+                          showString "bufferImageHeight = " .
+                            showsPrec d (getField @"bufferImageHeight" x) .
                               showString ", " .
-                                showString "vkImageSubresource = " .
-                                  showsPrec d (vkImageSubresource x) .
+                                showString "imageSubresource = " .
+                                  showsPrec d (getField @"imageSubresource" x) .
                                     showString ", " .
-                                      showString "vkImageOffset = " .
-                                        showsPrec d (vkImageOffset x) .
+                                      showString "imageOffset = " .
+                                        showsPrec d (getField @"imageOffset" x) .
                                           showString ", " .
-                                            showString "vkImageExtent = " .
-                                              showsPrec d (vkImageExtent x) . showChar '}'
+                                            showString "imageExtent = " .
+                                              showsPrec d (getField @"imageExtent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryBarrier.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryBarrier.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryBarrier.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryBarrier.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkBufferMemoryBarrier
        (VkBufferMemoryBarrier(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkAccessFlags   (VkAccessFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBufferMemoryBarrier {
@@ -31,7 +31,7 @@
 --   >     VkDeviceSize           size;
 --   > } VkBufferMemoryBarrier;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBufferMemoryBarrier.html VkBufferMemoryBarrier registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBufferMemoryBarrier.html VkBufferMemoryBarrier registry at www.khronos.org>
 data VkBufferMemoryBarrier = VkBufferMemoryBarrier## Addr##
                                                     ByteArray##
 
@@ -82,26 +82,6 @@
         type ReturnedOnly VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
         type StructExtends VkBufferMemoryBarrier = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkBufferMemoryBarrier where
-        type VkSTypeMType VkBufferMemoryBarrier = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkBufferMemoryBarrier
          where
         type FieldType "sType" VkBufferMemoryBarrier = VkStructureType
@@ -116,36 +96,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferMemoryBarrier, sType}
 
-instance CanReadField "sType" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, sType}
 
-instance CanWriteField "sType" VkBufferMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkBufferMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkBufferMemoryBarrier where
-        type VkPNextMType VkBufferMemoryBarrier = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkBufferMemoryBarrier
          where
@@ -161,37 +127,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferMemoryBarrier, pNext}
 
-instance CanReadField "pNext" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSrcAccessMask VkBufferMemoryBarrier where
-        type VkSrcAccessMaskMType VkBufferMemoryBarrier = VkAccessFlags
-
-        {-# NOINLINE vkSrcAccessMask #-}
-        vkSrcAccessMask x
+         CanReadField "pNext" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, srcAccessMask})
-
-        {-# INLINE vkSrcAccessMaskByteOffset #-}
-        vkSrcAccessMaskByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, srcAccessMask}
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, pNext})
 
-        {-# INLINE readVkSrcAccessMask #-}
-        readVkSrcAccessMask p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, srcAccessMask}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, pNext}
 
-        {-# INLINE writeVkSrcAccessMask #-}
-        writeVkSrcAccessMask p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, srcAccessMask}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkBufferMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "srcAccessMask" VkBufferMemoryBarrier where
@@ -209,37 +160,22 @@
         fieldOffset
           = #{offset VkBufferMemoryBarrier, srcAccessMask}
 
-instance CanReadField "srcAccessMask" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSrcAccessMask
-
-        {-# INLINE readField #-}
-        readField = readVkSrcAccessMask
-
-instance CanWriteField "srcAccessMask" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkSrcAccessMask
-
 instance {-# OVERLAPPING #-}
-         HasVkDstAccessMask VkBufferMemoryBarrier where
-        type VkDstAccessMaskMType VkBufferMemoryBarrier = VkAccessFlags
-
-        {-# NOINLINE vkDstAccessMask #-}
-        vkDstAccessMask x
+         CanReadField "srcAccessMask" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, dstAccessMask})
-
-        {-# INLINE vkDstAccessMaskByteOffset #-}
-        vkDstAccessMaskByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, dstAccessMask}
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, srcAccessMask})
 
-        {-# INLINE readVkDstAccessMask #-}
-        readVkDstAccessMask p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, dstAccessMask}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, srcAccessMask}
 
-        {-# INLINE writeVkDstAccessMask #-}
-        writeVkDstAccessMask p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, dstAccessMask}
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcAccessMask" VkBufferMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, srcAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "dstAccessMask" VkBufferMemoryBarrier where
@@ -257,37 +193,22 @@
         fieldOffset
           = #{offset VkBufferMemoryBarrier, dstAccessMask}
 
-instance CanReadField "dstAccessMask" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkDstAccessMask
-
-        {-# INLINE readField #-}
-        readField = readVkDstAccessMask
-
-instance CanWriteField "dstAccessMask" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstAccessMask
-
 instance {-# OVERLAPPING #-}
-         HasVkSrcQueueFamilyIndex VkBufferMemoryBarrier where
-        type VkSrcQueueFamilyIndexMType VkBufferMemoryBarrier = Word32
-
-        {-# NOINLINE vkSrcQueueFamilyIndex #-}
-        vkSrcQueueFamilyIndex x
+         CanReadField "dstAccessMask" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex})
-
-        {-# INLINE vkSrcQueueFamilyIndexByteOffset #-}
-        vkSrcQueueFamilyIndexByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, dstAccessMask})
 
-        {-# INLINE readVkSrcQueueFamilyIndex #-}
-        readVkSrcQueueFamilyIndex p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, dstAccessMask}
 
-        {-# INLINE writeVkSrcQueueFamilyIndex #-}
-        writeVkSrcQueueFamilyIndex p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstAccessMask" VkBufferMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, dstAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
@@ -306,39 +227,22 @@
         fieldOffset
           = #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
 
-instance CanReadField "srcQueueFamilyIndex" VkBufferMemoryBarrier
-         where
-        {-# INLINE getField #-}
-        getField = vkSrcQueueFamilyIndex
-
-        {-# INLINE readField #-}
-        readField = readVkSrcQueueFamilyIndex
-
-instance CanWriteField "srcQueueFamilyIndex" VkBufferMemoryBarrier
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSrcQueueFamilyIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkDstQueueFamilyIndex VkBufferMemoryBarrier where
-        type VkDstQueueFamilyIndexMType VkBufferMemoryBarrier = Word32
-
-        {-# NOINLINE vkDstQueueFamilyIndex #-}
-        vkDstQueueFamilyIndex x
+         CanReadField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex})
-
-        {-# INLINE vkDstQueueFamilyIndexByteOffset #-}
-        vkDstQueueFamilyIndexByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex})
 
-        {-# INLINE readVkDstQueueFamilyIndex #-}
-        readVkDstQueueFamilyIndex p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
 
-        {-# INLINE writeVkDstQueueFamilyIndex #-}
-        writeVkDstQueueFamilyIndex p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
@@ -357,39 +261,22 @@
         fieldOffset
           = #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
 
-instance CanReadField "dstQueueFamilyIndex" VkBufferMemoryBarrier
-         where
-        {-# INLINE getField #-}
-        getField = vkDstQueueFamilyIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex})
 
         {-# INLINE readField #-}
-        readField = readVkDstQueueFamilyIndex
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
 
-instance CanWriteField "dstQueueFamilyIndex" VkBufferMemoryBarrier
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkDstQueueFamilyIndex
-
-instance {-# OVERLAPPING #-} HasVkBuffer VkBufferMemoryBarrier
-         where
-        type VkBufferMType VkBufferMemoryBarrier = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, buffer}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkBufferMemoryBarrier where
@@ -405,37 +292,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferMemoryBarrier, buffer}
 
-instance CanReadField "buffer" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkBuffer
+instance {-# OVERLAPPING #-}
+         CanReadField "buffer" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, buffer})
 
         {-# INLINE readField #-}
-        readField = readVkBuffer
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, buffer}
 
-instance CanWriteField "buffer" VkBufferMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkBufferMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance {-# OVERLAPPING #-} HasVkOffset VkBufferMemoryBarrier
-         where
-        type VkOffsetMType VkBufferMemoryBarrier = VkDeviceSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, offset}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, buffer}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkBufferMemoryBarrier where
@@ -451,36 +323,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferMemoryBarrier, offset}
 
-instance CanReadField "offset" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, offset}
 
-instance CanWriteField "offset" VkBufferMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkBufferMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkBufferMemoryBarrier where
-        type VkSizeMType VkBufferMemoryBarrier = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkBufferMemoryBarrier, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, size}
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, offset}
 
 instance {-# OVERLAPPING #-} HasField "size" VkBufferMemoryBarrier
          where
@@ -496,44 +354,50 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferMemoryBarrier, size}
 
-instance CanReadField "size" VkBufferMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-}
+         CanReadField "size" VkBufferMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkBufferMemoryBarrier, size}
 
-instance CanWriteField "size" VkBufferMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkBufferMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
+        writeField p
+          = pokeByteOff p #{offset VkBufferMemoryBarrier, size}
 
 instance Show VkBufferMemoryBarrier where
         showsPrec d x
           = showString "VkBufferMemoryBarrier {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSrcAccessMask = " .
-                            showsPrec d (vkSrcAccessMask x) .
+                          showString "srcAccessMask = " .
+                            showsPrec d (getField @"srcAccessMask" x) .
                               showString ", " .
-                                showString "vkDstAccessMask = " .
-                                  showsPrec d (vkDstAccessMask x) .
+                                showString "dstAccessMask = " .
+                                  showsPrec d (getField @"dstAccessMask" x) .
                                     showString ", " .
-                                      showString "vkSrcQueueFamilyIndex = " .
-                                        showsPrec d (vkSrcQueueFamilyIndex x) .
+                                      showString "srcQueueFamilyIndex = " .
+                                        showsPrec d (getField @"srcQueueFamilyIndex" x) .
                                           showString ", " .
-                                            showString "vkDstQueueFamilyIndex = " .
-                                              showsPrec d (vkDstQueueFamilyIndex x) .
+                                            showString "dstQueueFamilyIndex = " .
+                                              showsPrec d (getField @"dstQueueFamilyIndex" x) .
                                                 showString ", " .
-                                                  showString "vkBuffer = " .
-                                                    showsPrec d (vkBuffer x) .
+                                                  showString "buffer = " .
+                                                    showsPrec d (getField @"buffer" x) .
                                                       showString ", " .
-                                                        showString "vkOffset = " .
-                                                          showsPrec d (vkOffset x) .
+                                                        showString "offset = " .
+                                                          showsPrec d (getField @"offset" x) .
                                                             showString ", " .
-                                                              showString "vkSize = " .
-                                                                showsPrec d (vkSize x) .
+                                                              showString "size = " .
+                                                                showsPrec d (getField @"size" x) .
                                                                   showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2.hsc
@@ -0,0 +1,187 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2
+       (VkBufferMemoryRequirementsInfo2(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkBuffer)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkBufferMemoryRequirementsInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                                                          pNext;
+--   >     VkBuffer                                                             buffer;
+--   > } VkBufferMemoryRequirementsInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBufferMemoryRequirementsInfo2.html VkBufferMemoryRequirementsInfo2 registry at www.khronos.org>
+data VkBufferMemoryRequirementsInfo2 = VkBufferMemoryRequirementsInfo2## Addr##
+                                                                        ByteArray##
+
+instance Eq VkBufferMemoryRequirementsInfo2 where
+        (VkBufferMemoryRequirementsInfo2## a _) ==
+          x@(VkBufferMemoryRequirementsInfo2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkBufferMemoryRequirementsInfo2 where
+        (VkBufferMemoryRequirementsInfo2## a _) `compare`
+          x@(VkBufferMemoryRequirementsInfo2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkBufferMemoryRequirementsInfo2 where
+        unsafeAddr (VkBufferMemoryRequirementsInfo2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkBufferMemoryRequirementsInfo2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkBufferMemoryRequirementsInfo2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2KHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2KHR
+       (VkBufferMemoryRequirementsInfo2(..),
+        VkBufferMemoryRequirementsInfo2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2 (VkBufferMemoryRequirementsInfo2 (..))
+
+-- | Alias for `VkBufferMemoryRequirementsInfo2`
+type VkBufferMemoryRequirementsInfo2KHR =
+     VkBufferMemoryRequirementsInfo2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferMemoryRequirementsInfo2KHR.hsc
+++ /dev/null
@@ -1,246 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2KHR
-       (VkBufferMemoryRequirementsInfo2KHR(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkBufferMemoryRequirementsInfo2KHR {
---   >     VkStructureType sType;
---   >     const void*                                                          pNext;
---   >     VkBuffer                                                             buffer;
---   > } VkBufferMemoryRequirementsInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBufferMemoryRequirementsInfo2KHR.html VkBufferMemoryRequirementsInfo2KHR registry at www.khronos.org>
-data VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2KHR## Addr##
-                                                                              ByteArray##
-
-instance Eq VkBufferMemoryRequirementsInfo2KHR where
-        (VkBufferMemoryRequirementsInfo2KHR## a _) ==
-          x@(VkBufferMemoryRequirementsInfo2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferMemoryRequirementsInfo2KHR where
-        (VkBufferMemoryRequirementsInfo2KHR## a _) `compare`
-          x@(VkBufferMemoryRequirementsInfo2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferMemoryRequirementsInfo2KHR where
-        sizeOf ~_ = #{size VkBufferMemoryRequirementsInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBufferMemoryRequirementsInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkBufferMemoryRequirementsInfo2KHR where
-        unsafeAddr (VkBufferMemoryRequirementsInfo2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkBufferMemoryRequirementsInfo2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkBufferMemoryRequirementsInfo2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkBufferMemoryRequirementsInfo2KHR where
-        type StructFields VkBufferMemoryRequirementsInfo2KHR =
-             '["sType", "pNext", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkBufferMemoryRequirementsInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferMemoryRequirementsInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferMemoryRequirementsInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkBufferMemoryRequirementsInfo2KHR where
-        type VkSTypeMType VkBufferMemoryRequirementsInfo2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryRequirementsInfo2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBufferMemoryRequirementsInfo2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBufferMemoryRequirementsInfo2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBufferMemoryRequirementsInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBufferMemoryRequirementsInfo2KHR where
-        type FieldType "sType" VkBufferMemoryRequirementsInfo2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkBufferMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBufferMemoryRequirementsInfo2KHR =
-             #{offset VkBufferMemoryRequirementsInfo2KHR, sType}
-        type FieldIsArray "sType" VkBufferMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryRequirementsInfo2KHR, sType}
-
-instance CanReadField "sType" VkBufferMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkBufferMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkBufferMemoryRequirementsInfo2KHR where
-        type VkPNextMType VkBufferMemoryRequirementsInfo2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryRequirementsInfo2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBufferMemoryRequirementsInfo2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBufferMemoryRequirementsInfo2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBufferMemoryRequirementsInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBufferMemoryRequirementsInfo2KHR where
-        type FieldType "pNext" VkBufferMemoryRequirementsInfo2KHR =
-             Ptr Void
-        type FieldOptional "pNext" VkBufferMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBufferMemoryRequirementsInfo2KHR =
-             #{offset VkBufferMemoryRequirementsInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkBufferMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryRequirementsInfo2KHR, pNext}
-
-instance CanReadField "pNext" VkBufferMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkBufferMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkBuffer VkBufferMemoryRequirementsInfo2KHR where
-        type VkBufferMType VkBufferMemoryRequirementsInfo2KHR = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryRequirementsInfo2KHR, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkBufferMemoryRequirementsInfo2KHR, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkBufferMemoryRequirementsInfo2KHR, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkBufferMemoryRequirementsInfo2KHR, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkBufferMemoryRequirementsInfo2KHR where
-        type FieldType "buffer" VkBufferMemoryRequirementsInfo2KHR =
-             VkBuffer
-        type FieldOptional "buffer" VkBufferMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkBufferMemoryRequirementsInfo2KHR =
-             #{offset VkBufferMemoryRequirementsInfo2KHR, buffer}
-        type FieldIsArray "buffer" VkBufferMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryRequirementsInfo2KHR, buffer}
-
-instance CanReadField "buffer" VkBufferMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkBuffer
-
-instance CanWriteField "buffer" VkBufferMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance Show VkBufferMemoryRequirementsInfo2KHR where
-        showsPrec d x
-          = showString "VkBufferMemoryRequirementsInfo2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkBuffer = " . showsPrec d (vkBuffer x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferViewCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferViewCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkBufferViewCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkBufferViewCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkBufferViewCreateInfo
        (VkBufferViewCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkFormat        (VkFormat)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBufferViewCreateInfo {
@@ -30,7 +30,7 @@
 --   >     VkDeviceSize           range;
 --   > } VkBufferViewCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkBufferViewCreateInfo.html VkBufferViewCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkBufferViewCreateInfo.html VkBufferViewCreateInfo registry at www.khronos.org>
 data VkBufferViewCreateInfo = VkBufferViewCreateInfo## Addr##
                                                       ByteArray##
 
@@ -79,27 +79,6 @@
         type ReturnedOnly VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkBufferViewCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkBufferViewCreateInfo
-         where
-        type VkSTypeMType VkBufferViewCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkBufferViewCreateInfo where
         type FieldType "sType" VkBufferViewCreateInfo = VkStructureType
@@ -114,37 +93,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, sType}
 
-instance CanReadField "sType" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, sType}
 
-instance CanWriteField "sType" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkBufferViewCreateInfo
-         where
-        type VkPNextMType VkBufferViewCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkBufferViewCreateInfo where
@@ -160,37 +124,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, pNext}
 
-instance CanReadField "pNext" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkBufferViewCreateInfo
-         where
-        type VkFlagsMType VkBufferViewCreateInfo = VkBufferViewCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkBufferViewCreateInfo where
@@ -207,37 +156,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, flags}
 
-instance CanReadField "flags" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, flags}
 
-instance CanWriteField "flags" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkBuffer VkBufferViewCreateInfo
-         where
-        type VkBufferMType VkBufferViewCreateInfo = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, buffer}
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkBufferViewCreateInfo where
@@ -253,37 +187,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, buffer}
 
-instance CanReadField "buffer" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkBuffer
+instance {-# OVERLAPPING #-}
+         CanReadField "buffer" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, buffer})
 
         {-# INLINE readField #-}
-        readField = readVkBuffer
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, buffer}
 
-instance CanWriteField "buffer" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance {-# OVERLAPPING #-} HasVkFormat VkBufferViewCreateInfo
-         where
-        type VkFormatMType VkBufferViewCreateInfo = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, format}
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, buffer}
 
 instance {-# OVERLAPPING #-}
          HasField "format" VkBufferViewCreateInfo where
@@ -299,37 +218,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, format}
 
-instance CanReadField "format" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFormat
+instance {-# OVERLAPPING #-}
+         CanReadField "format" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, format})
 
         {-# INLINE readField #-}
-        readField = readVkFormat
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, format}
 
-instance CanWriteField "format" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "format" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-} HasVkOffset VkBufferViewCreateInfo
-         where
-        type VkOffsetMType VkBufferViewCreateInfo = VkDeviceSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, offset}
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, format}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkBufferViewCreateInfo where
@@ -345,37 +249,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, offset}
 
-instance CanReadField "offset" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, offset}
 
-instance CanWriteField "offset" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkRange VkBufferViewCreateInfo
-         where
-        type VkRangeMType VkBufferViewCreateInfo = VkDeviceSize
-
-        {-# NOINLINE vkRange #-}
-        vkRange x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, range})
-
-        {-# INLINE vkRangeByteOffset #-}
-        vkRangeByteOffset ~_
-          = #{offset VkBufferViewCreateInfo, range}
-
-        {-# INLINE readVkRange #-}
-        readVkRange p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, range}
-
-        {-# INLINE writeVkRange #-}
-        writeVkRange p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, range}
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, offset}
 
 instance {-# OVERLAPPING #-}
          HasField "range" VkBufferViewCreateInfo where
@@ -391,37 +280,43 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkBufferViewCreateInfo, range}
 
-instance CanReadField "range" VkBufferViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkRange
+instance {-# OVERLAPPING #-}
+         CanReadField "range" VkBufferViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, range})
 
         {-# INLINE readField #-}
-        readField = readVkRange
+        readField p
+          = peekByteOff p #{offset VkBufferViewCreateInfo, range}
 
-instance CanWriteField "range" VkBufferViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "range" VkBufferViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkRange
+        writeField p
+          = pokeByteOff p #{offset VkBufferViewCreateInfo, range}
 
 instance Show VkBufferViewCreateInfo where
         showsPrec d x
           = showString "VkBufferViewCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkBuffer = " .
-                                  showsPrec d (vkBuffer x) .
+                                showString "buffer = " .
+                                  showsPrec d (getField @"buffer" x) .
                                     showString ", " .
-                                      showString "vkFormat = " .
-                                        showsPrec d (vkFormat x) .
+                                      showString "format = " .
+                                        showsPrec d (getField @"format" x) .
                                           showString ", " .
-                                            showString "vkOffset = " .
-                                              showsPrec d (vkOffset x) .
+                                            showString "offset = " .
+                                              showsPrec d (getField @"offset" x) .
                                                 showString ", " .
-                                                  showString "vkRange = " .
-                                                    showsPrec d (vkRange x) . showChar '}'
+                                                  showString "range = " .
+                                                    showsPrec d (getField @"range" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkClearAttachment.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkClearAttachment.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkClearAttachment.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkClearAttachment.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkClearAttachment
        (VkClearAttachment(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags (VkImageAspectFlags)
 import           Graphics.Vulkan.Types.Struct.VkClearValue     (VkClearValue)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkClearAttachment {
@@ -23,7 +23,7 @@
 --   >     VkClearValue           clearValue;
 --   > } VkClearAttachment;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkClearAttachment.html VkClearAttachment registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkClearAttachment.html VkClearAttachment registry at www.khronos.org>
 data VkClearAttachment = VkClearAttachment## Addr## ByteArray##
 
 instance Eq VkClearAttachment where
@@ -71,27 +71,6 @@
         type ReturnedOnly VkClearAttachment = 'False -- ' closing tick for hsc2hs
         type StructExtends VkClearAttachment = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkAspectMask VkClearAttachment
-         where
-        type VkAspectMaskMType VkClearAttachment = VkImageAspectFlags
-
-        {-# NOINLINE vkAspectMask #-}
-        vkAspectMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, aspectMask})
-
-        {-# INLINE vkAspectMaskByteOffset #-}
-        vkAspectMaskByteOffset ~_
-          = #{offset VkClearAttachment, aspectMask}
-
-        {-# INLINE readVkAspectMask #-}
-        readVkAspectMask p
-          = peekByteOff p #{offset VkClearAttachment, aspectMask}
-
-        {-# INLINE writeVkAspectMask #-}
-        writeVkAspectMask p
-          = pokeByteOff p #{offset VkClearAttachment, aspectMask}
-
 instance {-# OVERLAPPING #-}
          HasField "aspectMask" VkClearAttachment where
         type FieldType "aspectMask" VkClearAttachment = VkImageAspectFlags
@@ -106,37 +85,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearAttachment, aspectMask}
 
-instance CanReadField "aspectMask" VkClearAttachment where
-        {-# INLINE getField #-}
-        getField = vkAspectMask
+instance {-# OVERLAPPING #-}
+         CanReadField "aspectMask" VkClearAttachment where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, aspectMask})
 
         {-# INLINE readField #-}
-        readField = readVkAspectMask
+        readField p
+          = peekByteOff p #{offset VkClearAttachment, aspectMask}
 
-instance CanWriteField "aspectMask" VkClearAttachment where
+instance {-# OVERLAPPING #-}
+         CanWriteField "aspectMask" VkClearAttachment where
         {-# INLINE writeField #-}
-        writeField = writeVkAspectMask
-
-instance {-# OVERLAPPING #-} HasVkColorAttachment VkClearAttachment
-         where
-        type VkColorAttachmentMType VkClearAttachment = Word32
-
-        {-# NOINLINE vkColorAttachment #-}
-        vkColorAttachment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, colorAttachment})
-
-        {-# INLINE vkColorAttachmentByteOffset #-}
-        vkColorAttachmentByteOffset ~_
-          = #{offset VkClearAttachment, colorAttachment}
-
-        {-# INLINE readVkColorAttachment #-}
-        readVkColorAttachment p
-          = peekByteOff p #{offset VkClearAttachment, colorAttachment}
-
-        {-# INLINE writeVkColorAttachment #-}
-        writeVkColorAttachment p
-          = pokeByteOff p #{offset VkClearAttachment, colorAttachment}
+        writeField p
+          = pokeByteOff p #{offset VkClearAttachment, aspectMask}
 
 instance {-# OVERLAPPING #-}
          HasField "colorAttachment" VkClearAttachment where
@@ -153,37 +117,22 @@
         fieldOffset
           = #{offset VkClearAttachment, colorAttachment}
 
-instance CanReadField "colorAttachment" VkClearAttachment where
-        {-# INLINE getField #-}
-        getField = vkColorAttachment
+instance {-# OVERLAPPING #-}
+         CanReadField "colorAttachment" VkClearAttachment where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, colorAttachment})
 
         {-# INLINE readField #-}
-        readField = readVkColorAttachment
+        readField p
+          = peekByteOff p #{offset VkClearAttachment, colorAttachment}
 
-instance CanWriteField "colorAttachment" VkClearAttachment where
+instance {-# OVERLAPPING #-}
+         CanWriteField "colorAttachment" VkClearAttachment where
         {-# INLINE writeField #-}
-        writeField = writeVkColorAttachment
-
-instance {-# OVERLAPPING #-} HasVkClearValue VkClearAttachment
-         where
-        type VkClearValueMType VkClearAttachment = VkClearValue
-
-        {-# NOINLINE vkClearValue #-}
-        vkClearValue x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, clearValue})
-
-        {-# INLINE vkClearValueByteOffset #-}
-        vkClearValueByteOffset ~_
-          = #{offset VkClearAttachment, clearValue}
-
-        {-# INLINE readVkClearValue #-}
-        readVkClearValue p
-          = peekByteOff p #{offset VkClearAttachment, clearValue}
-
-        {-# INLINE writeVkClearValue #-}
-        writeVkClearValue p
-          = pokeByteOff p #{offset VkClearAttachment, clearValue}
+        writeField p
+          = pokeByteOff p #{offset VkClearAttachment, colorAttachment}
 
 instance {-# OVERLAPPING #-}
          HasField "clearValue" VkClearAttachment where
@@ -199,25 +148,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearAttachment, clearValue}
 
-instance CanReadField "clearValue" VkClearAttachment where
-        {-# INLINE getField #-}
-        getField = vkClearValue
+instance {-# OVERLAPPING #-}
+         CanReadField "clearValue" VkClearAttachment where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, clearValue})
 
         {-# INLINE readField #-}
-        readField = readVkClearValue
+        readField p
+          = peekByteOff p #{offset VkClearAttachment, clearValue}
 
-instance CanWriteField "clearValue" VkClearAttachment where
+instance {-# OVERLAPPING #-}
+         CanWriteField "clearValue" VkClearAttachment where
         {-# INLINE writeField #-}
-        writeField = writeVkClearValue
+        writeField p
+          = pokeByteOff p #{offset VkClearAttachment, clearValue}
 
 instance Show VkClearAttachment where
         showsPrec d x
           = showString "VkClearAttachment {" .
-              showString "vkAspectMask = " .
-                showsPrec d (vkAspectMask x) .
+              showString "aspectMask = " .
+                showsPrec d (getField @"aspectMask" x) .
                   showString ", " .
-                    showString "vkColorAttachment = " .
-                      showsPrec d (vkColorAttachment x) .
+                    showString "colorAttachment = " .
+                      showsPrec d (getField @"colorAttachment" x) .
                         showString ", " .
-                          showString "vkClearValue = " .
-                            showsPrec d (vkClearValue x) . showChar '}'
+                          showString "clearValue = " .
+                            showsPrec d (getField @"clearValue" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkClearColorValue.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkClearColorValue.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkClearColorValue.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkClearColorValue.hsc
@@ -8,17 +8,17 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkClearColorValue
        (VkClearColorValue(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
-import           GHC.TypeLits                        (KnownNat, natVal') -- ' closing tick for hsc2hs
+import           GHC.TypeLits                     (KnownNat, natVal') -- ' closing tick for hsc2hs
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | // Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
 --
@@ -28,7 +28,7 @@
 --   >     uint32_t               uint32[4];
 --   > } VkClearColorValue;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkClearColorValue.html VkClearColorValue registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkClearColorValue.html VkClearColorValue registry at www.khronos.org>
 data VkClearColorValue = VkClearColorValue## Addr## ByteArray##
 
 instance Eq VkClearColorValue where
@@ -76,34 +76,6 @@
         type ReturnedOnly VkClearColorValue = 'False -- ' closing tick for hsc2hs
         type StructExtends VkClearColorValue = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkFloat32Array VkClearColorValue
-         where
-        type VkFloat32ArrayMType VkClearColorValue =
-             #{type float}
-
-        {-# NOINLINE vkFloat32Array #-}
-        vkFloat32Array x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkClearColorValue, float32}))
-
-        {-# INLINE vkFloat32ArrayByteOffset #-}
-        vkFloat32ArrayByteOffset ~_
-          = #{offset VkClearColorValue, float32}
-
-        {-# INLINE readVkFloat32Array #-}
-        readVkFloat32Array p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkClearColorValue, float32})
-
-        {-# INLINE writeVkFloat32Array #-}
-        writeVkFloat32Array p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkClearColorValue, float32})
-
 instance {-# OVERLAPPING #-} HasField "float32" VkClearColorValue
          where
         type FieldType "float32" VkClearColorValue =
@@ -119,8 +91,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearColorValue, float32}
 
-instance (KnownNat idx,
-          IndexInBounds "float32" idx VkClearColorValue) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "float32" idx VkClearColorValue) =>
          CanReadFieldArray "float32" idx VkClearColorValue
          where
         {-# SPECIALISE instance
@@ -140,16 +112,23 @@
         fieldArrayLength = 4
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkFloat32Array x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkClearColorValue, float32} +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkFloat32Array x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkClearColorValue, float32} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
-          IndexInBounds "float32" idx VkClearColorValue) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "float32" idx VkClearColorValue) =>
          CanWriteFieldArray "float32" idx VkClearColorValue
          where
         {-# SPECIALISE instance
@@ -165,36 +144,11 @@
                        CanWriteFieldArray "float32" 3 VkClearColorValue #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkFloat32Array x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkInt32Array VkClearColorValue
-         where
-        type VkInt32ArrayMType VkClearColorValue = Int32
-
-        {-# NOINLINE vkInt32Array #-}
-        vkInt32Array x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Int32) +
-                    #{offset VkClearColorValue, int32}))
-
-        {-# INLINE vkInt32ArrayByteOffset #-}
-        vkInt32ArrayByteOffset ~_
-          = #{offset VkClearColorValue, int32}
-
-        {-# INLINE readVkInt32Array #-}
-        readVkInt32Array p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Int32) +
-                 #{offset VkClearColorValue, int32})
-
-        {-# INLINE writeVkInt32Array #-}
-        writeVkInt32Array p idx
+        writeFieldArray p
           = pokeByteOff p
-              (idx * sizeOf (undefined :: Int32) +
-                 #{offset VkClearColorValue, int32})
+              (#{offset VkClearColorValue, float32} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-} HasField "int32" VkClearColorValue
          where
@@ -210,8 +164,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearColorValue, int32}
 
-instance (KnownNat idx,
-          IndexInBounds "int32" idx VkClearColorValue) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "int32" idx VkClearColorValue) =>
          CanReadFieldArray "int32" idx VkClearColorValue
          where
         {-# SPECIALISE instance
@@ -231,15 +185,23 @@
         fieldArrayLength = 4
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkInt32Array x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkClearColorValue, int32} +
+                      sizeOf (undefined :: Int32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkInt32Array x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkClearColorValue, int32} +
+                 sizeOf (undefined :: Int32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
-          IndexInBounds "int32" idx VkClearColorValue) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "int32" idx VkClearColorValue) =>
          CanWriteFieldArray "int32" idx VkClearColorValue
          where
         {-# SPECIALISE instance
@@ -255,36 +217,11 @@
                        CanWriteFieldArray "int32" 3 VkClearColorValue #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkInt32Array x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkUint32Array VkClearColorValue
-         where
-        type VkUint32ArrayMType VkClearColorValue = Word32
-
-        {-# NOINLINE vkUint32Array #-}
-        vkUint32Array x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word32) +
-                    #{offset VkClearColorValue, uint32}))
-
-        {-# INLINE vkUint32ArrayByteOffset #-}
-        vkUint32ArrayByteOffset ~_
-          = #{offset VkClearColorValue, uint32}
-
-        {-# INLINE readVkUint32Array #-}
-        readVkUint32Array p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkClearColorValue, uint32})
-
-        {-# INLINE writeVkUint32Array #-}
-        writeVkUint32Array p idx
+        writeFieldArray p
           = pokeByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkClearColorValue, uint32})
+              (#{offset VkClearColorValue, int32} +
+                 sizeOf (undefined :: Int32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-} HasField "uint32" VkClearColorValue
          where
@@ -300,8 +237,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearColorValue, uint32}
 
-instance (KnownNat idx,
-          IndexInBounds "uint32" idx VkClearColorValue) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "uint32" idx VkClearColorValue) =>
          CanReadFieldArray "uint32" idx VkClearColorValue
          where
         {-# SPECIALISE instance
@@ -321,16 +258,23 @@
         fieldArrayLength = 4
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkUint32Array x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkClearColorValue, uint32} +
+                      sizeOf (undefined :: Word32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkUint32Array x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkClearColorValue, uint32} +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
-          IndexInBounds "uint32" idx VkClearColorValue) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "uint32" idx VkClearColorValue) =>
          CanWriteFieldArray "uint32" idx VkClearColorValue
          where
         {-# SPECIALISE instance
@@ -346,21 +290,51 @@
                        CanWriteFieldArray "uint32" 3 VkClearColorValue #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkUint32Array x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkClearColorValue, uint32} +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance Show VkClearColorValue where
         showsPrec d x
           = showString "VkClearColorValue {" .
-              showString "vkFloat32Array = [" .
-                showsPrec d (map (vkFloat32Array x) [1 .. 4]) .
-                  showChar ']' .
+              (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 "vkInt32Array = [" .
-                        showsPrec d (map (vkInt32Array x) [1 .. 4]) .
-                          showChar ']' .
-                            showString ", " .
-                              showString "vkUint32Array = [" .
-                                showsPrec d (map (vkUint32Array x) [1 .. 4]) .
-                                  showChar ']' . showChar '}'
+                      (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkClearDepthStencilValue.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkClearDepthStencilValue.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkClearDepthStencilValue.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkClearDepthStencilValue.hsc
@@ -5,22 +5,22 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue
        (VkClearDepthStencilValue(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkClearDepthStencilValue {
 --   >     float                  depth;
 --   >     uint32_t               stencil;
 --   > } VkClearDepthStencilValue;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkClearDepthStencilValue.html VkClearDepthStencilValue registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkClearDepthStencilValue.html VkClearDepthStencilValue registry at www.khronos.org>
 data VkClearDepthStencilValue = VkClearDepthStencilValue## Addr##
                                                           ByteArray##
 
@@ -69,28 +69,6 @@
         type ReturnedOnly VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
         type StructExtends VkClearDepthStencilValue = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkDepth VkClearDepthStencilValue
-         where
-        type VkDepthMType VkClearDepthStencilValue =
-             #{type float}
-
-        {-# NOINLINE vkDepth #-}
-        vkDepth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearDepthStencilValue, depth})
-
-        {-# INLINE vkDepthByteOffset #-}
-        vkDepthByteOffset ~_
-          = #{offset VkClearDepthStencilValue, depth}
-
-        {-# INLINE readVkDepth #-}
-        readVkDepth p
-          = peekByteOff p #{offset VkClearDepthStencilValue, depth}
-
-        {-# INLINE writeVkDepth #-}
-        writeVkDepth p
-          = pokeByteOff p #{offset VkClearDepthStencilValue, depth}
-
 instance {-# OVERLAPPING #-}
          HasField "depth" VkClearDepthStencilValue where
         type FieldType "depth" VkClearDepthStencilValue =
@@ -106,37 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearDepthStencilValue, depth}
 
-instance CanReadField "depth" VkClearDepthStencilValue where
-        {-# INLINE getField #-}
-        getField = vkDepth
+instance {-# OVERLAPPING #-}
+         CanReadField "depth" VkClearDepthStencilValue where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearDepthStencilValue, depth})
 
         {-# INLINE readField #-}
-        readField = readVkDepth
+        readField p
+          = peekByteOff p #{offset VkClearDepthStencilValue, depth}
 
-instance CanWriteField "depth" VkClearDepthStencilValue where
+instance {-# OVERLAPPING #-}
+         CanWriteField "depth" VkClearDepthStencilValue where
         {-# INLINE writeField #-}
-        writeField = writeVkDepth
-
-instance {-# OVERLAPPING #-} HasVkStencil VkClearDepthStencilValue
-         where
-        type VkStencilMType VkClearDepthStencilValue = Word32
-
-        {-# NOINLINE vkStencil #-}
-        vkStencil x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearDepthStencilValue, stencil})
-
-        {-# INLINE vkStencilByteOffset #-}
-        vkStencilByteOffset ~_
-          = #{offset VkClearDepthStencilValue, stencil}
-
-        {-# INLINE readVkStencil #-}
-        readVkStencil p
-          = peekByteOff p #{offset VkClearDepthStencilValue, stencil}
-
-        {-# INLINE writeVkStencil #-}
-        writeVkStencil p
-          = pokeByteOff p #{offset VkClearDepthStencilValue, stencil}
+        writeField p
+          = pokeByteOff p #{offset VkClearDepthStencilValue, depth}
 
 instance {-# OVERLAPPING #-}
          HasField "stencil" VkClearDepthStencilValue where
@@ -153,22 +116,28 @@
         fieldOffset
           = #{offset VkClearDepthStencilValue, stencil}
 
-instance CanReadField "stencil" VkClearDepthStencilValue where
-        {-# INLINE getField #-}
-        getField = vkStencil
+instance {-# OVERLAPPING #-}
+         CanReadField "stencil" VkClearDepthStencilValue where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearDepthStencilValue, stencil})
 
         {-# INLINE readField #-}
-        readField = readVkStencil
+        readField p
+          = peekByteOff p #{offset VkClearDepthStencilValue, stencil}
 
-instance CanWriteField "stencil" VkClearDepthStencilValue where
+instance {-# OVERLAPPING #-}
+         CanWriteField "stencil" VkClearDepthStencilValue where
         {-# INLINE writeField #-}
-        writeField = writeVkStencil
+        writeField p
+          = pokeByteOff p #{offset VkClearDepthStencilValue, stencil}
 
 instance Show VkClearDepthStencilValue where
         showsPrec d x
           = showString "VkClearDepthStencilValue {" .
-              showString "vkDepth = " .
-                showsPrec d (vkDepth x) .
+              showString "depth = " .
+                showsPrec d (getField @"depth" x) .
                   showString ", " .
-                    showString "vkStencil = " .
-                      showsPrec d (vkStencil x) . showChar '}'
+                    showString "stencil = " .
+                      showsPrec d (getField @"stencil" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkClearRect.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkClearRect.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkClearRect.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkClearRect.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkClearRect (VkClearRect(..))
        where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkRect2D (VkRect2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkClearRect {
@@ -22,7 +22,7 @@
 --   >     uint32_t       layerCount;
 --   > } VkClearRect;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkClearRect.html VkClearRect registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkClearRect.html VkClearRect registry at www.khronos.org>
 data VkClearRect = VkClearRect## Addr## ByteArray##
 
 instance Eq VkClearRect where
@@ -70,25 +70,6 @@
         type ReturnedOnly VkClearRect = 'False -- ' closing tick for hsc2hs
         type StructExtends VkClearRect = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkRect VkClearRect where
-        type VkRectMType VkClearRect = VkRect2D
-
-        {-# NOINLINE vkRect #-}
-        vkRect x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearRect, rect})
-
-        {-# INLINE vkRectByteOffset #-}
-        vkRectByteOffset ~_ = #{offset VkClearRect, rect}
-
-        {-# INLINE readVkRect #-}
-        readVkRect p
-          = peekByteOff p #{offset VkClearRect, rect}
-
-        {-# INLINE writeVkRect #-}
-        writeVkRect p
-          = pokeByteOff p #{offset VkClearRect, rect}
-
 instance {-# OVERLAPPING #-} HasField "rect" VkClearRect where
         type FieldType "rect" VkClearRect = VkRect2D
         type FieldOptional "rect" VkClearRect = 'False -- ' closing tick for hsc2hs
@@ -102,36 +83,19 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearRect, rect}
 
-instance CanReadField "rect" VkClearRect where
-        {-# INLINE getField #-}
-        getField = vkRect
+instance {-# OVERLAPPING #-} CanReadField "rect" VkClearRect where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearRect, rect})
 
         {-# INLINE readField #-}
-        readField = readVkRect
+        readField p = peekByteOff p #{offset VkClearRect, rect}
 
-instance CanWriteField "rect" VkClearRect where
+instance {-# OVERLAPPING #-} CanWriteField "rect" VkClearRect where
         {-# INLINE writeField #-}
-        writeField = writeVkRect
-
-instance {-# OVERLAPPING #-} HasVkBaseArrayLayer VkClearRect where
-        type VkBaseArrayLayerMType VkClearRect = Word32
-
-        {-# NOINLINE vkBaseArrayLayer #-}
-        vkBaseArrayLayer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearRect, baseArrayLayer})
-
-        {-# INLINE vkBaseArrayLayerByteOffset #-}
-        vkBaseArrayLayerByteOffset ~_
-          = #{offset VkClearRect, baseArrayLayer}
-
-        {-# INLINE readVkBaseArrayLayer #-}
-        readVkBaseArrayLayer p
-          = peekByteOff p #{offset VkClearRect, baseArrayLayer}
-
-        {-# INLINE writeVkBaseArrayLayer #-}
-        writeVkBaseArrayLayer p
-          = pokeByteOff p #{offset VkClearRect, baseArrayLayer}
+        writeField p
+          = pokeByteOff p #{offset VkClearRect, rect}
 
 instance {-# OVERLAPPING #-} HasField "baseArrayLayer" VkClearRect
          where
@@ -147,36 +111,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearRect, baseArrayLayer}
 
-instance CanReadField "baseArrayLayer" VkClearRect where
-        {-# INLINE getField #-}
-        getField = vkBaseArrayLayer
+instance {-# OVERLAPPING #-}
+         CanReadField "baseArrayLayer" VkClearRect where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearRect, baseArrayLayer})
 
         {-# INLINE readField #-}
-        readField = readVkBaseArrayLayer
+        readField p
+          = peekByteOff p #{offset VkClearRect, baseArrayLayer}
 
-instance CanWriteField "baseArrayLayer" VkClearRect where
+instance {-# OVERLAPPING #-}
+         CanWriteField "baseArrayLayer" VkClearRect where
         {-# INLINE writeField #-}
-        writeField = writeVkBaseArrayLayer
-
-instance {-# OVERLAPPING #-} HasVkLayerCount VkClearRect where
-        type VkLayerCountMType VkClearRect = Word32
-
-        {-# NOINLINE vkLayerCount #-}
-        vkLayerCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearRect, layerCount})
-
-        {-# INLINE vkLayerCountByteOffset #-}
-        vkLayerCountByteOffset ~_
-          = #{offset VkClearRect, layerCount}
-
-        {-# INLINE readVkLayerCount #-}
-        readVkLayerCount p
-          = peekByteOff p #{offset VkClearRect, layerCount}
-
-        {-# INLINE writeVkLayerCount #-}
-        writeVkLayerCount p
-          = pokeByteOff p #{offset VkClearRect, layerCount}
+        writeField p
+          = pokeByteOff p #{offset VkClearRect, baseArrayLayer}
 
 instance {-# OVERLAPPING #-} HasField "layerCount" VkClearRect
          where
@@ -192,25 +142,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearRect, layerCount}
 
-instance CanReadField "layerCount" VkClearRect where
-        {-# INLINE getField #-}
-        getField = vkLayerCount
+instance {-# OVERLAPPING #-} CanReadField "layerCount" VkClearRect
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearRect, layerCount})
 
         {-# INLINE readField #-}
-        readField = readVkLayerCount
+        readField p
+          = peekByteOff p #{offset VkClearRect, layerCount}
 
-instance CanWriteField "layerCount" VkClearRect where
+instance {-# OVERLAPPING #-} CanWriteField "layerCount" VkClearRect
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkLayerCount
+        writeField p
+          = pokeByteOff p #{offset VkClearRect, layerCount}
 
 instance Show VkClearRect where
         showsPrec d x
           = showString "VkClearRect {" .
-              showString "vkRect = " .
-                showsPrec d (vkRect x) .
+              showString "rect = " .
+                showsPrec d (getField @"rect" x) .
                   showString ", " .
-                    showString "vkBaseArrayLayer = " .
-                      showsPrec d (vkBaseArrayLayer x) .
+                    showString "baseArrayLayer = " .
+                      showsPrec d (getField @"baseArrayLayer" x) .
                         showString ", " .
-                          showString "vkLayerCount = " .
-                            showsPrec d (vkLayerCount x) . showChar '}'
+                          showString "layerCount = " .
+                            showsPrec d (getField @"layerCount" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkClearValue.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkClearValue.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkClearValue.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkClearValue.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkClearValue (VkClearValue(..))
        where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkClearColorValue        (VkClearColorValue)
 import           Graphics.Vulkan.Types.Struct.VkClearDepthStencilValue (VkClearDepthStencilValue)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | // Union allowing specification of color or depth and stencil values. Actual value selected is based on attachment being cleared.
@@ -24,7 +24,7 @@
 --   >     VkClearDepthStencilValue depthStencil;
 --   > } VkClearValue;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkClearValue.html VkClearValue registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkClearValue.html VkClearValue registry at www.khronos.org>
 data VkClearValue = VkClearValue## Addr## ByteArray##
 
 instance Eq VkClearValue where
@@ -71,25 +71,6 @@
         type ReturnedOnly VkClearValue = 'False -- ' closing tick for hsc2hs
         type StructExtends VkClearValue = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkColor VkClearValue where
-        type VkColorMType VkClearValue = VkClearColorValue
-
-        {-# NOINLINE vkColor #-}
-        vkColor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearValue, color})
-
-        {-# INLINE vkColorByteOffset #-}
-        vkColorByteOffset ~_ = #{offset VkClearValue, color}
-
-        {-# INLINE readVkColor #-}
-        readVkColor p
-          = peekByteOff p #{offset VkClearValue, color}
-
-        {-# INLINE writeVkColor #-}
-        writeVkColor p
-          = pokeByteOff p #{offset VkClearValue, color}
-
 instance {-# OVERLAPPING #-} HasField "color" VkClearValue where
         type FieldType "color" VkClearValue = VkClearColorValue
         type FieldOptional "color" VkClearValue = 'False -- ' closing tick for hsc2hs
@@ -103,36 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearValue, color}
 
-instance CanReadField "color" VkClearValue where
-        {-# INLINE getField #-}
-        getField = vkColor
+instance {-# OVERLAPPING #-} CanReadField "color" VkClearValue
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearValue, color})
 
         {-# INLINE readField #-}
-        readField = readVkColor
+        readField p
+          = peekByteOff p #{offset VkClearValue, color}
 
-instance CanWriteField "color" VkClearValue where
+instance {-# OVERLAPPING #-} CanWriteField "color" VkClearValue
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkColor
-
-instance {-# OVERLAPPING #-} HasVkDepthStencil VkClearValue where
-        type VkDepthStencilMType VkClearValue = VkClearDepthStencilValue
-
-        {-# NOINLINE vkDepthStencil #-}
-        vkDepthStencil x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearValue, depthStencil})
-
-        {-# INLINE vkDepthStencilByteOffset #-}
-        vkDepthStencilByteOffset ~_
-          = #{offset VkClearValue, depthStencil}
-
-        {-# INLINE readVkDepthStencil #-}
-        readVkDepthStencil p
-          = peekByteOff p #{offset VkClearValue, depthStencil}
-
-        {-# INLINE writeVkDepthStencil #-}
-        writeVkDepthStencil p
-          = pokeByteOff p #{offset VkClearValue, depthStencil}
+        writeField p
+          = pokeByteOff p #{offset VkClearValue, color}
 
 instance {-# OVERLAPPING #-} HasField "depthStencil" VkClearValue
          where
@@ -149,22 +116,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkClearValue, depthStencil}
 
-instance CanReadField "depthStencil" VkClearValue where
-        {-# INLINE getField #-}
-        getField = vkDepthStencil
+instance {-# OVERLAPPING #-}
+         CanReadField "depthStencil" VkClearValue where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkClearValue, depthStencil})
 
         {-# INLINE readField #-}
-        readField = readVkDepthStencil
+        readField p
+          = peekByteOff p #{offset VkClearValue, depthStencil}
 
-instance CanWriteField "depthStencil" VkClearValue where
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthStencil" VkClearValue where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthStencil
+        writeField p
+          = pokeByteOff p #{offset VkClearValue, depthStencil}
 
 instance Show VkClearValue where
         showsPrec d x
           = showString "VkClearValue {" .
-              showString "vkColor = " .
-                showsPrec d (vkColor x) .
+              showString "color = " .
+                showsPrec d (getField @"color" x) .
                   showString ", " .
-                    showString "vkDepthStencil = " .
-                      showsPrec d (vkDepthStencil x) . showChar '}'
+                    showString "depthStencil = " .
+                      showsPrec d (getField @"depthStencil" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCmdProcessCommandsInfoNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCmdProcessCommandsInfoNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCmdProcessCommandsInfoNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCmdProcessCommandsInfoNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCmdProcessCommandsInfoNVX
        (VkCmdProcessCommandsInfoNVX(..)) where
@@ -19,7 +20,6 @@
                                                                           VkIndirectCommandsLayoutNVX,
                                                                           VkObjectTableNVX)
 import           Graphics.Vulkan.Types.Struct.VkIndirectCommandsTokenNVX (VkIndirectCommandsTokenNVX)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCmdProcessCommandsInfoNVX {
@@ -37,7 +37,7 @@
 --   >     VkDeviceSize                             sequencesIndexOffset;
 --   > } VkCmdProcessCommandsInfoNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCmdProcessCommandsInfoNVX.html VkCmdProcessCommandsInfoNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCmdProcessCommandsInfoNVX.html VkCmdProcessCommandsInfoNVX registry at www.khronos.org>
 data VkCmdProcessCommandsInfoNVX = VkCmdProcessCommandsInfoNVX## Addr##
                                                                 ByteArray##
 
@@ -93,27 +93,6 @@
         type ReturnedOnly VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
         type StructExtends VkCmdProcessCommandsInfoNVX = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkCmdProcessCommandsInfoNVX
-         where
-        type VkSTypeMType VkCmdProcessCommandsInfoNVX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkCmdProcessCommandsInfoNVX where
         type FieldType "sType" VkCmdProcessCommandsInfoNVX =
@@ -130,37 +109,22 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, sType}
 
-instance CanReadField "sType" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkCmdProcessCommandsInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sType}
 
-instance CanWriteField "sType" VkCmdProcessCommandsInfoNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCmdProcessCommandsInfoNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkCmdProcessCommandsInfoNVX
-         where
-        type VkPNextMType VkCmdProcessCommandsInfoNVX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkCmdProcessCommandsInfoNVX where
@@ -177,38 +141,22 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, pNext}
 
-instance CanReadField "pNext" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkObjectTable VkCmdProcessCommandsInfoNVX where
-        type VkObjectTableMType VkCmdProcessCommandsInfoNVX =
-             VkObjectTableNVX
-
-        {-# NOINLINE vkObjectTable #-}
-        vkObjectTable x
+         CanReadField "pNext" VkCmdProcessCommandsInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, objectTable})
-
-        {-# INLINE vkObjectTableByteOffset #-}
-        vkObjectTableByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, objectTable}
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, pNext})
 
-        {-# INLINE readVkObjectTable #-}
-        readVkObjectTable p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, objectTable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, pNext}
 
-        {-# INLINE writeVkObjectTable #-}
-        writeVkObjectTable p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, objectTable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCmdProcessCommandsInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "objectTable" VkCmdProcessCommandsInfoNVX where
@@ -228,40 +176,22 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, objectTable}
 
-instance CanReadField "objectTable" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkObjectTable
-
-        {-# INLINE readField #-}
-        readField = readVkObjectTable
-
-instance CanWriteField "objectTable" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkObjectTable
-
 instance {-# OVERLAPPING #-}
-         HasVkIndirectCommandsLayout VkCmdProcessCommandsInfoNVX where
-        type VkIndirectCommandsLayoutMType VkCmdProcessCommandsInfoNVX =
-             VkIndirectCommandsLayoutNVX
-
-        {-# NOINLINE vkIndirectCommandsLayout #-}
-        vkIndirectCommandsLayout x
+         CanReadField "objectTable" VkCmdProcessCommandsInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout})
-
-        {-# INLINE vkIndirectCommandsLayoutByteOffset #-}
-        vkIndirectCommandsLayoutByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, objectTable})
 
-        {-# INLINE readVkIndirectCommandsLayout #-}
-        readVkIndirectCommandsLayout p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, objectTable}
 
-        {-# INLINE writeVkIndirectCommandsLayout #-}
-        writeVkIndirectCommandsLayout p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "objectTable" VkCmdProcessCommandsInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, objectTable}
 
 instance {-# OVERLAPPING #-}
          HasField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX where
@@ -285,42 +215,24 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
 
-instance CanReadField "indirectCommandsLayout"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkIndirectCommandsLayout
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout})
 
         {-# INLINE readField #-}
-        readField = readVkIndirectCommandsLayout
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
 
-instance CanWriteField "indirectCommandsLayout"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkIndirectCommandsLayout
-
-instance {-# OVERLAPPING #-}
-         HasVkIndirectCommandsTokenCount VkCmdProcessCommandsInfoNVX where
-        type VkIndirectCommandsTokenCountMType VkCmdProcessCommandsInfoNVX
-             = Word32
-
-        {-# NOINLINE vkIndirectCommandsTokenCount #-}
-        vkIndirectCommandsTokenCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount})
-
-        {-# INLINE vkIndirectCommandsTokenCountByteOffset #-}
-        vkIndirectCommandsTokenCountByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
-
-        {-# INLINE readVkIndirectCommandsTokenCount #-}
-        readVkIndirectCommandsTokenCount p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
-
-        {-# INLINE writeVkIndirectCommandsTokenCount #-}
-        writeVkIndirectCommandsTokenCount p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "indirectCommandsTokenCount" VkCmdProcessCommandsInfoNVX
@@ -346,42 +258,26 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
 
-instance CanReadField "indirectCommandsTokenCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "indirectCommandsTokenCount"
            VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkIndirectCommandsTokenCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount})
 
         {-# INLINE readField #-}
-        readField = readVkIndirectCommandsTokenCount
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
 
-instance CanWriteField "indirectCommandsTokenCount"
+instance {-# OVERLAPPING #-}
+         CanWriteField "indirectCommandsTokenCount"
            VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkIndirectCommandsTokenCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPIndirectCommandsTokens VkCmdProcessCommandsInfoNVX where
-        type VkPIndirectCommandsTokensMType VkCmdProcessCommandsInfoNVX =
-             Ptr VkIndirectCommandsTokenNVX
-
-        {-# NOINLINE vkPIndirectCommandsTokens #-}
-        vkPIndirectCommandsTokens x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens})
-
-        {-# INLINE vkPIndirectCommandsTokensByteOffset #-}
-        vkPIndirectCommandsTokensByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
-
-        {-# INLINE readVkPIndirectCommandsTokens #-}
-        readVkPIndirectCommandsTokens p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
-
-        {-# INLINE writeVkPIndirectCommandsTokens #-}
-        writeVkPIndirectCommandsTokens p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
@@ -407,41 +303,24 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
 
-instance CanReadField "pIndirectCommandsTokens"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPIndirectCommandsTokens
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens})
 
         {-# INLINE readField #-}
-        readField = readVkPIndirectCommandsTokens
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
 
-instance CanWriteField "pIndirectCommandsTokens"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPIndirectCommandsTokens
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSequencesCount VkCmdProcessCommandsInfoNVX where
-        type VkMaxSequencesCountMType VkCmdProcessCommandsInfoNVX = Word32
-
-        {-# NOINLINE vkMaxSequencesCount #-}
-        vkMaxSequencesCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount})
-
-        {-# INLINE vkMaxSequencesCountByteOffset #-}
-        vkMaxSequencesCountByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
-
-        {-# INLINE readVkMaxSequencesCount #-}
-        readVkMaxSequencesCount p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
-
-        {-# INLINE writeVkMaxSequencesCount #-}
-        writeVkMaxSequencesCount p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
@@ -461,42 +340,22 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
 
-instance CanReadField "maxSequencesCount"
-           VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSequencesCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSequencesCount
-
-instance CanWriteField "maxSequencesCount"
-           VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMaxSequencesCount
-
 instance {-# OVERLAPPING #-}
-         HasVkTargetCommandBuffer VkCmdProcessCommandsInfoNVX where
-        type VkTargetCommandBufferMType VkCmdProcessCommandsInfoNVX =
-             VkCommandBuffer
-
-        {-# NOINLINE vkTargetCommandBuffer #-}
-        vkTargetCommandBuffer x
+         CanReadField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer})
-
-        {-# INLINE vkTargetCommandBufferByteOffset #-}
-        vkTargetCommandBufferByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount})
 
-        {-# INLINE readVkTargetCommandBuffer #-}
-        readVkTargetCommandBuffer p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
 
-        {-# INLINE writeVkTargetCommandBuffer #-}
-        writeVkTargetCommandBuffer p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
 
 instance {-# OVERLAPPING #-}
          HasField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX where
@@ -518,42 +377,24 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
 
-instance CanReadField "targetCommandBuffer"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkTargetCommandBuffer
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer})
 
         {-# INLINE readField #-}
-        readField = readVkTargetCommandBuffer
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
 
-instance CanWriteField "targetCommandBuffer"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkTargetCommandBuffer
-
-instance {-# OVERLAPPING #-}
-         HasVkSequencesCountBuffer VkCmdProcessCommandsInfoNVX where
-        type VkSequencesCountBufferMType VkCmdProcessCommandsInfoNVX =
-             VkBuffer
-
-        {-# NOINLINE vkSequencesCountBuffer #-}
-        vkSequencesCountBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer})
-
-        {-# INLINE vkSequencesCountBufferByteOffset #-}
-        vkSequencesCountBufferByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
-
-        {-# INLINE readVkSequencesCountBuffer #-}
-        readVkSequencesCountBuffer p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
-
-        {-# INLINE writeVkSequencesCountBuffer #-}
-        writeVkSequencesCountBuffer p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
 
 instance {-# OVERLAPPING #-}
          HasField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX where
@@ -576,42 +417,24 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
 
-instance CanReadField "sequencesCountBuffer"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkSequencesCountBuffer
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer})
 
         {-# INLINE readField #-}
-        readField = readVkSequencesCountBuffer
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
 
-instance CanWriteField "sequencesCountBuffer"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSequencesCountBuffer
-
-instance {-# OVERLAPPING #-}
-         HasVkSequencesCountOffset VkCmdProcessCommandsInfoNVX where
-        type VkSequencesCountOffsetMType VkCmdProcessCommandsInfoNVX =
-             VkDeviceSize
-
-        {-# NOINLINE vkSequencesCountOffset #-}
-        vkSequencesCountOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset})
-
-        {-# INLINE vkSequencesCountOffsetByteOffset #-}
-        vkSequencesCountOffsetByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
-
-        {-# INLINE readVkSequencesCountOffset #-}
-        readVkSequencesCountOffset p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
-
-        {-# INLINE writeVkSequencesCountOffset #-}
-        writeVkSequencesCountOffset p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
 
 instance {-# OVERLAPPING #-}
          HasField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX where
@@ -634,42 +457,24 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
 
-instance CanReadField "sequencesCountOffset"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkSequencesCountOffset
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset})
 
         {-# INLINE readField #-}
-        readField = readVkSequencesCountOffset
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
 
-instance CanWriteField "sequencesCountOffset"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSequencesCountOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkSequencesIndexBuffer VkCmdProcessCommandsInfoNVX where
-        type VkSequencesIndexBufferMType VkCmdProcessCommandsInfoNVX =
-             VkBuffer
-
-        {-# NOINLINE vkSequencesIndexBuffer #-}
-        vkSequencesIndexBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer})
-
-        {-# INLINE vkSequencesIndexBufferByteOffset #-}
-        vkSequencesIndexBufferByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
-
-        {-# INLINE readVkSequencesIndexBuffer #-}
-        readVkSequencesIndexBuffer p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
-
-        {-# INLINE writeVkSequencesIndexBuffer #-}
-        writeVkSequencesIndexBuffer p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX where
@@ -692,42 +497,24 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
 
-instance CanReadField "sequencesIndexBuffer"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkSequencesIndexBuffer
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer})
 
         {-# INLINE readField #-}
-        readField = readVkSequencesIndexBuffer
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
 
-instance CanWriteField "sequencesIndexBuffer"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSequencesIndexBuffer
-
-instance {-# OVERLAPPING #-}
-         HasVkSequencesIndexOffset VkCmdProcessCommandsInfoNVX where
-        type VkSequencesIndexOffsetMType VkCmdProcessCommandsInfoNVX =
-             VkDeviceSize
-
-        {-# NOINLINE vkSequencesIndexOffset #-}
-        vkSequencesIndexOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset})
-
-        {-# INLINE vkSequencesIndexOffsetByteOffset #-}
-        vkSequencesIndexOffsetByteOffset ~_
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
-
-        {-# INLINE readVkSequencesIndexOffset #-}
-        readVkSequencesIndexOffset p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
-
-        {-# INLINE writeVkSequencesIndexOffset #-}
-        writeVkSequencesIndexOffset p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
 
 instance {-# OVERLAPPING #-}
          HasField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX where
@@ -750,73 +537,83 @@
         fieldOffset
           = #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
 
-instance CanReadField "sequencesIndexOffset"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkSequencesIndexOffset
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset})
 
         {-# INLINE readField #-}
-        readField = readVkSequencesIndexOffset
+        readField p
+          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
 
-instance CanWriteField "sequencesIndexOffset"
-           VkCmdProcessCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSequencesIndexOffset
+        writeField p
+          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
 
 instance Show VkCmdProcessCommandsInfoNVX where
         showsPrec d x
           = showString "VkCmdProcessCommandsInfoNVX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkObjectTable = " .
-                            showsPrec d (vkObjectTable x) .
+                          showString "objectTable = " .
+                            showsPrec d (getField @"objectTable" x) .
                               showString ", " .
-                                showString "vkIndirectCommandsLayout = " .
-                                  showsPrec d (vkIndirectCommandsLayout x) .
+                                showString "indirectCommandsLayout = " .
+                                  showsPrec d (getField @"indirectCommandsLayout" x) .
                                     showString ", " .
-                                      showString "vkIndirectCommandsTokenCount = " .
-                                        showsPrec d (vkIndirectCommandsTokenCount x) .
+                                      showString "indirectCommandsTokenCount = " .
+                                        showsPrec d (getField @"indirectCommandsTokenCount" x) .
                                           showString ", " .
-                                            showString "vkPIndirectCommandsTokens = " .
-                                              showsPrec d (vkPIndirectCommandsTokens x) .
+                                            showString "pIndirectCommandsTokens = " .
+                                              showsPrec d (getField @"pIndirectCommandsTokens" x) .
                                                 showString ", " .
-                                                  showString "vkMaxSequencesCount = " .
-                                                    showsPrec d (vkMaxSequencesCount x) .
+                                                  showString "maxSequencesCount = " .
+                                                    showsPrec d (getField @"maxSequencesCount" x) .
                                                       showString ", " .
-                                                        showString "vkTargetCommandBuffer = " .
-                                                          showsPrec d (vkTargetCommandBuffer x) .
+                                                        showString "targetCommandBuffer = " .
+                                                          showsPrec d
+                                                            (getField @"targetCommandBuffer" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkSequencesCountBuffer = "
-                                                                .
+                                                              showString "sequencesCountBuffer = " .
                                                                 showsPrec d
-                                                                  (vkSequencesCountBuffer x)
+                                                                  (getField @"sequencesCountBuffer"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkSequencesCountOffset = "
+                                                                      "sequencesCountOffset = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkSequencesCountOffset x)
+                                                                        (getField
+                                                                           @"sequencesCountOffset"
+                                                                           x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkSequencesIndexBuffer = "
+                                                                            "sequencesIndexBuffer = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkSequencesIndexBuffer
+                                                                              (getField
+                                                                                 @"sequencesIndexBuffer"
                                                                                  x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkSequencesIndexOffset = "
+                                                                                  "sequencesIndexOffset = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkSequencesIndexOffset
+                                                                                    (getField
+                                                                                       @"sequencesIndexOffset"
                                                                                        x)
                                                                                     . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCmdReserveSpaceForCommandsInfoNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCmdReserveSpaceForCommandsInfoNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCmdReserveSpaceForCommandsInfoNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCmdReserveSpaceForCommandsInfoNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCmdReserveSpaceForCommandsInfoNVX
        (VkCmdReserveSpaceForCommandsInfoNVX(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkIndirectCommandsLayoutNVX,
                                                              VkObjectTableNVX)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
@@ -26,7 +26,7 @@
 --   >     uint32_t                                                 maxSequencesCount;
 --   > } VkCmdReserveSpaceForCommandsInfoNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCmdReserveSpaceForCommandsInfoNVX.html VkCmdReserveSpaceForCommandsInfoNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCmdReserveSpaceForCommandsInfoNVX.html VkCmdReserveSpaceForCommandsInfoNVX registry at www.khronos.org>
 data VkCmdReserveSpaceForCommandsInfoNVX = VkCmdReserveSpaceForCommandsInfoNVX## Addr##
                                                                                 ByteArray##
 
@@ -83,28 +83,6 @@
         type StructExtends VkCmdReserveSpaceForCommandsInfoNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkCmdReserveSpaceForCommandsInfoNVX where
-        type VkSTypeMType VkCmdReserveSpaceForCommandsInfoNVX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkCmdReserveSpaceForCommandsInfoNVX where
         type FieldType "sType" VkCmdReserveSpaceForCommandsInfoNVX =
              VkStructureType
@@ -122,39 +100,22 @@
         fieldOffset
           = #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
 
-instance CanReadField "sType" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkCmdReserveSpaceForCommandsInfoNVX where
-        type VkPNextMType VkCmdReserveSpaceForCommandsInfoNVX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkCmdReserveSpaceForCommandsInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCmdReserveSpaceForCommandsInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkCmdReserveSpaceForCommandsInfoNVX where
@@ -174,40 +135,22 @@
         fieldOffset
           = #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
 
-instance CanReadField "pNext" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkObjectTable VkCmdReserveSpaceForCommandsInfoNVX where
-        type VkObjectTableMType VkCmdReserveSpaceForCommandsInfoNVX =
-             VkObjectTableNVX
-
-        {-# NOINLINE vkObjectTable #-}
-        vkObjectTable x
+         CanReadField "pNext" VkCmdReserveSpaceForCommandsInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable})
-
-        {-# INLINE vkObjectTableByteOffset #-}
-        vkObjectTableByteOffset ~_
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
+              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext})
 
-        {-# INLINE readVkObjectTable #-}
-        readVkObjectTable p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
 
-        {-# INLINE writeVkObjectTable #-}
-        writeVkObjectTable p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCmdReserveSpaceForCommandsInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX where
@@ -229,44 +172,24 @@
         fieldOffset
           = #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
 
-instance CanReadField "objectTable"
-           VkCmdReserveSpaceForCommandsInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkObjectTable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable})
 
         {-# INLINE readField #-}
-        readField = readVkObjectTable
-
-instance CanWriteField "objectTable"
-           VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkObjectTable
+        readField p
+          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
 
 instance {-# OVERLAPPING #-}
-         HasVkIndirectCommandsLayout VkCmdReserveSpaceForCommandsInfoNVX
+         CanWriteField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
          where
-        type VkIndirectCommandsLayoutMType
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = VkIndirectCommandsLayoutNVX
-
-        {-# NOINLINE vkIndirectCommandsLayout #-}
-        vkIndirectCommandsLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout})
-
-        {-# INLINE vkIndirectCommandsLayoutByteOffset #-}
-        vkIndirectCommandsLayoutByteOffset ~_
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
-
-        {-# INLINE readVkIndirectCommandsLayout #-}
-        readVkIndirectCommandsLayout p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
-
-        {-# INLINE writeVkIndirectCommandsLayout #-}
-        writeVkIndirectCommandsLayout p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
 
 instance {-# OVERLAPPING #-}
          HasField "indirectCommandsLayout"
@@ -293,42 +216,26 @@
         fieldOffset
           = #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
 
-instance CanReadField "indirectCommandsLayout"
+instance {-# OVERLAPPING #-}
+         CanReadField "indirectCommandsLayout"
            VkCmdReserveSpaceForCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkIndirectCommandsLayout
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout})
 
         {-# INLINE readField #-}
-        readField = readVkIndirectCommandsLayout
+        readField p
+          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
 
-instance CanWriteField "indirectCommandsLayout"
+instance {-# OVERLAPPING #-}
+         CanWriteField "indirectCommandsLayout"
            VkCmdReserveSpaceForCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkIndirectCommandsLayout
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSequencesCount VkCmdReserveSpaceForCommandsInfoNVX where
-        type VkMaxSequencesCountMType VkCmdReserveSpaceForCommandsInfoNVX =
-             Word32
-
-        {-# NOINLINE vkMaxSequencesCount #-}
-        vkMaxSequencesCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount})
-
-        {-# INLINE vkMaxSequencesCountByteOffset #-}
-        vkMaxSequencesCountByteOffset ~_
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
-
-        {-# INLINE readVkMaxSequencesCount #-}
-        readVkMaxSequencesCount p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
-
-        {-# INLINE writeVkMaxSequencesCount #-}
-        writeVkMaxSequencesCount p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
+        writeField p
+          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSequencesCount" VkCmdReserveSpaceForCommandsInfoNVX
@@ -354,35 +261,41 @@
         fieldOffset
           = #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
 
-instance CanReadField "maxSequencesCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxSequencesCount"
            VkCmdReserveSpaceForCommandsInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxSequencesCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount})
 
         {-# INLINE readField #-}
-        readField = readVkMaxSequencesCount
+        readField p
+          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
 
-instance CanWriteField "maxSequencesCount"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxSequencesCount"
            VkCmdReserveSpaceForCommandsInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxSequencesCount
+        writeField p
+          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
 
 instance Show VkCmdReserveSpaceForCommandsInfoNVX where
         showsPrec d x
           = showString "VkCmdReserveSpaceForCommandsInfoNVX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkObjectTable = " .
-                            showsPrec d (vkObjectTable x) .
+                          showString "objectTable = " .
+                            showsPrec d (getField @"objectTable" x) .
                               showString ", " .
-                                showString "vkIndirectCommandsLayout = " .
-                                  showsPrec d (vkIndirectCommandsLayout x) .
+                                showString "indirectCommandsLayout = " .
+                                  showsPrec d (getField @"indirectCommandsLayout" x) .
                                     showString ", " .
-                                      showString "vkMaxSequencesCount = " .
-                                        showsPrec d (vkMaxSequencesCount x) . showChar '}'
+                                      showString "maxSequencesCount = " .
+                                        showsPrec d (getField @"maxSequencesCount" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferAllocateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferAllocateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferAllocateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferAllocateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCommandBufferAllocateInfo
        (VkCommandBufferAllocateInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkCommandBufferLevel (VkCommandBufferLevel)
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                   (VkCommandPool)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCommandBufferAllocateInfo {
@@ -26,7 +26,7 @@
 --   >     uint32_t               commandBufferCount;
 --   > } VkCommandBufferAllocateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCommandBufferAllocateInfo.html VkCommandBufferAllocateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCommandBufferAllocateInfo.html VkCommandBufferAllocateInfo registry at www.khronos.org>
 data VkCommandBufferAllocateInfo = VkCommandBufferAllocateInfo## Addr##
                                                                 ByteArray##
 
@@ -78,27 +78,6 @@
         type ReturnedOnly VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkCommandBufferAllocateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkCommandBufferAllocateInfo
-         where
-        type VkSTypeMType VkCommandBufferAllocateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCommandBufferAllocateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkCommandBufferAllocateInfo where
         type FieldType "sType" VkCommandBufferAllocateInfo =
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkCommandBufferAllocateInfo, sType}
 
-instance CanReadField "sType" VkCommandBufferAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkCommandBufferAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkCommandBufferAllocateInfo, sType}
 
-instance CanWriteField "sType" VkCommandBufferAllocateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCommandBufferAllocateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkCommandBufferAllocateInfo
-         where
-        type VkPNextMType VkCommandBufferAllocateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCommandBufferAllocateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkCommandBufferAllocateInfo where
@@ -162,37 +126,22 @@
         fieldOffset
           = #{offset VkCommandBufferAllocateInfo, pNext}
 
-instance CanReadField "pNext" VkCommandBufferAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkCommandBufferAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkCommandPool VkCommandBufferAllocateInfo where
-        type VkCommandPoolMType VkCommandBufferAllocateInfo = VkCommandPool
-
-        {-# NOINLINE vkCommandPool #-}
-        vkCommandPool x
+         CanReadField "pNext" VkCommandBufferAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, commandPool})
-
-        {-# INLINE vkCommandPoolByteOffset #-}
-        vkCommandPoolByteOffset ~_
-          = #{offset VkCommandBufferAllocateInfo, commandPool}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, pNext})
 
-        {-# INLINE readVkCommandPool #-}
-        readVkCommandPool p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, commandPool}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferAllocateInfo, pNext}
 
-        {-# INLINE writeVkCommandPool #-}
-        writeVkCommandPool p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, commandPool}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCommandBufferAllocateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "commandPool" VkCommandBufferAllocateInfo where
@@ -212,40 +161,22 @@
         fieldOffset
           = #{offset VkCommandBufferAllocateInfo, commandPool}
 
-instance CanReadField "commandPool" VkCommandBufferAllocateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkCommandPool
+instance {-# OVERLAPPING #-}
+         CanReadField "commandPool" VkCommandBufferAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, commandPool})
 
         {-# INLINE readField #-}
-        readField = readVkCommandPool
+        readField p
+          = peekByteOff p #{offset VkCommandBufferAllocateInfo, commandPool}
 
-instance CanWriteField "commandPool" VkCommandBufferAllocateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "commandPool" VkCommandBufferAllocateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkCommandPool
-
-instance {-# OVERLAPPING #-} HasVkLevel VkCommandBufferAllocateInfo
-         where
-        type VkLevelMType VkCommandBufferAllocateInfo =
-             VkCommandBufferLevel
-
-        {-# NOINLINE vkLevel #-}
-        vkLevel x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, level})
-
-        {-# INLINE vkLevelByteOffset #-}
-        vkLevelByteOffset ~_
-          = #{offset VkCommandBufferAllocateInfo, level}
-
-        {-# INLINE readVkLevel #-}
-        readVkLevel p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, level}
-
-        {-# INLINE writeVkLevel #-}
-        writeVkLevel p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, level}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, commandPool}
 
 instance {-# OVERLAPPING #-}
          HasField "level" VkCommandBufferAllocateInfo where
@@ -263,37 +194,22 @@
         fieldOffset
           = #{offset VkCommandBufferAllocateInfo, level}
 
-instance CanReadField "level" VkCommandBufferAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkLevel
-
-        {-# INLINE readField #-}
-        readField = readVkLevel
-
-instance CanWriteField "level" VkCommandBufferAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkLevel
-
 instance {-# OVERLAPPING #-}
-         HasVkCommandBufferCount VkCommandBufferAllocateInfo where
-        type VkCommandBufferCountMType VkCommandBufferAllocateInfo = Word32
-
-        {-# NOINLINE vkCommandBufferCount #-}
-        vkCommandBufferCount x
+         CanReadField "level" VkCommandBufferAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, commandBufferCount})
-
-        {-# INLINE vkCommandBufferCountByteOffset #-}
-        vkCommandBufferCountByteOffset ~_
-          = #{offset VkCommandBufferAllocateInfo, commandBufferCount}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, level})
 
-        {-# INLINE readVkCommandBufferCount #-}
-        readVkCommandBufferCount p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, commandBufferCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferAllocateInfo, level}
 
-        {-# INLINE writeVkCommandBufferCount #-}
-        writeVkCommandBufferCount p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, commandBufferCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "level" VkCommandBufferAllocateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, level}
 
 instance {-# OVERLAPPING #-}
          HasField "commandBufferCount" VkCommandBufferAllocateInfo where
@@ -313,35 +229,39 @@
         fieldOffset
           = #{offset VkCommandBufferAllocateInfo, commandBufferCount}
 
-instance CanReadField "commandBufferCount"
-           VkCommandBufferAllocateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkCommandBufferCount
+instance {-# OVERLAPPING #-}
+         CanReadField "commandBufferCount" VkCommandBufferAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, commandBufferCount})
 
         {-# INLINE readField #-}
-        readField = readVkCommandBufferCount
+        readField p
+          = peekByteOff p #{offset VkCommandBufferAllocateInfo, commandBufferCount}
 
-instance CanWriteField "commandBufferCount"
-           VkCommandBufferAllocateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "commandBufferCount" VkCommandBufferAllocateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkCommandBufferCount
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, commandBufferCount}
 
 instance Show VkCommandBufferAllocateInfo where
         showsPrec d x
           = showString "VkCommandBufferAllocateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkCommandPool = " .
-                            showsPrec d (vkCommandPool x) .
+                          showString "commandPool = " .
+                            showsPrec d (getField @"commandPool" x) .
                               showString ", " .
-                                showString "vkLevel = " .
-                                  showsPrec d (vkLevel x) .
+                                showString "level = " .
+                                  showsPrec d (getField @"level" x) .
                                     showString ", " .
-                                      showString "vkCommandBufferCount = " .
-                                        showsPrec d (vkCommandBufferCount x) . showChar '}'
+                                      showString "commandBufferCount = " .
+                                        showsPrec d (getField @"commandBufferCount" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferBeginInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferBeginInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferBeginInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferBeginInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo
        (VkCommandBufferBeginInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkCommandBufferUsageFlags        (VkCommandBufferUsageFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo (VkCommandBufferInheritanceInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCommandBufferBeginInfo {
@@ -25,7 +25,7 @@
 --   >     const VkCommandBufferInheritanceInfo*       pInheritanceInfo;
 --   > } VkCommandBufferBeginInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCommandBufferBeginInfo.html VkCommandBufferBeginInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCommandBufferBeginInfo.html VkCommandBufferBeginInfo registry at www.khronos.org>
 data VkCommandBufferBeginInfo = VkCommandBufferBeginInfo## Addr##
                                                           ByteArray##
 
@@ -75,27 +75,6 @@
         type ReturnedOnly VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkCommandBufferBeginInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkCommandBufferBeginInfo
-         where
-        type VkSTypeMType VkCommandBufferBeginInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCommandBufferBeginInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkCommandBufferBeginInfo where
         type FieldType "sType" VkCommandBufferBeginInfo = VkStructureType
@@ -110,37 +89,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCommandBufferBeginInfo, sType}
 
-instance CanReadField "sType" VkCommandBufferBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkCommandBufferBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkCommandBufferBeginInfo, sType}
 
-instance CanWriteField "sType" VkCommandBufferBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCommandBufferBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkCommandBufferBeginInfo
-         where
-        type VkPNextMType VkCommandBufferBeginInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCommandBufferBeginInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferBeginInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkCommandBufferBeginInfo where
@@ -156,38 +120,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCommandBufferBeginInfo, pNext}
 
-instance CanReadField "pNext" VkCommandBufferBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkCommandBufferBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkCommandBufferBeginInfo, pNext}
 
-instance CanWriteField "pNext" VkCommandBufferBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCommandBufferBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkCommandBufferBeginInfo
-         where
-        type VkFlagsMType VkCommandBufferBeginInfo =
-             VkCommandBufferUsageFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkCommandBufferBeginInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferBeginInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkCommandBufferBeginInfo where
@@ -204,38 +152,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCommandBufferBeginInfo, flags}
 
-instance CanReadField "flags" VkCommandBufferBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPInheritanceInfo VkCommandBufferBeginInfo where
-        type VkPInheritanceInfoMType VkCommandBufferBeginInfo =
-             Ptr VkCommandBufferInheritanceInfo
-
-        {-# NOINLINE vkPInheritanceInfo #-}
-        vkPInheritanceInfo x
+         CanReadField "flags" VkCommandBufferBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, pInheritanceInfo})
-
-        {-# INLINE vkPInheritanceInfoByteOffset #-}
-        vkPInheritanceInfoByteOffset ~_
-          = #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, flags})
 
-        {-# INLINE readVkPInheritanceInfo #-}
-        readVkPInheritanceInfo p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferBeginInfo, flags}
 
-        {-# INLINE writeVkPInheritanceInfo #-}
-        writeVkPInheritanceInfo p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkCommandBufferBeginInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferBeginInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pInheritanceInfo" VkCommandBufferBeginInfo where
@@ -255,30 +187,34 @@
         fieldOffset
           = #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
 
-instance CanReadField "pInheritanceInfo" VkCommandBufferBeginInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPInheritanceInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pInheritanceInfo" VkCommandBufferBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, pInheritanceInfo})
 
         {-# INLINE readField #-}
-        readField = readVkPInheritanceInfo
+        readField p
+          = peekByteOff p #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
 
-instance CanWriteField "pInheritanceInfo" VkCommandBufferBeginInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pInheritanceInfo" VkCommandBufferBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPInheritanceInfo
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
 
 instance Show VkCommandBufferBeginInfo where
         showsPrec d x
           = showString "VkCommandBufferBeginInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkPInheritanceInfo = " .
-                                  showsPrec d (vkPInheritanceInfo x) . showChar '}'
+                                showString "pInheritanceInfo = " .
+                                  showsPrec d (getField @"pInheritanceInfo" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferInheritanceInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferInheritanceInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferInheritanceInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandBufferInheritanceInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCommandBufferInheritanceInfo
        (VkCommandBufferInheritanceInfo(..)) where
@@ -18,7 +19,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                            (VkFramebuffer,
                                                                            VkRenderPass)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCommandBufferInheritanceInfo {
@@ -32,7 +32,7 @@
 --   >     VkQueryPipelineStatisticFlags pipelineStatistics;
 --   > } VkCommandBufferInheritanceInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCommandBufferInheritanceInfo.html VkCommandBufferInheritanceInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCommandBufferInheritanceInfo.html VkCommandBufferInheritanceInfo registry at www.khronos.org>
 data VkCommandBufferInheritanceInfo = VkCommandBufferInheritanceInfo## Addr##
                                                                       ByteArray##
 
@@ -87,27 +87,6 @@
         type StructExtends VkCommandBufferInheritanceInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkCommandBufferInheritanceInfo where
-        type VkSTypeMType VkCommandBufferInheritanceInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkCommandBufferInheritanceInfo where
         type FieldType "sType" VkCommandBufferInheritanceInfo =
              VkStructureType
@@ -123,37 +102,22 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, sType}
 
-instance CanReadField "sType" VkCommandBufferInheritanceInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkCommandBufferInheritanceInfo where
-        type VkPNextMType VkCommandBufferInheritanceInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkCommandBufferInheritanceInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCommandBufferInheritanceInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkCommandBufferInheritanceInfo where
@@ -170,38 +134,22 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, pNext}
 
-instance CanReadField "pNext" VkCommandBufferInheritanceInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkRenderPass VkCommandBufferInheritanceInfo where
-        type VkRenderPassMType VkCommandBufferInheritanceInfo =
-             VkRenderPass
-
-        {-# NOINLINE vkRenderPass #-}
-        vkRenderPass x
+         CanReadField "pNext" VkCommandBufferInheritanceInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, renderPass})
-
-        {-# INLINE vkRenderPassByteOffset #-}
-        vkRenderPassByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, renderPass}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, pNext})
 
-        {-# INLINE readVkRenderPass #-}
-        readVkRenderPass p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, renderPass}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, pNext}
 
-        {-# INLINE writeVkRenderPass #-}
-        writeVkRenderPass p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, renderPass}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCommandBufferInheritanceInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "renderPass" VkCommandBufferInheritanceInfo where
@@ -221,39 +169,22 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, renderPass}
 
-instance CanReadField "renderPass" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkRenderPass
-
-        {-# INLINE readField #-}
-        readField = readVkRenderPass
-
-instance CanWriteField "renderPass" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkRenderPass
-
 instance {-# OVERLAPPING #-}
-         HasVkSubpass VkCommandBufferInheritanceInfo where
-        type VkSubpassMType VkCommandBufferInheritanceInfo = Word32
-
-        {-# NOINLINE vkSubpass #-}
-        vkSubpass x
+         CanReadField "renderPass" VkCommandBufferInheritanceInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, subpass})
-
-        {-# INLINE vkSubpassByteOffset #-}
-        vkSubpassByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, subpass}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, renderPass})
 
-        {-# INLINE readVkSubpass #-}
-        readVkSubpass p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, subpass}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, renderPass}
 
-        {-# INLINE writeVkSubpass #-}
-        writeVkSubpass p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, subpass}
+instance {-# OVERLAPPING #-}
+         CanWriteField "renderPass" VkCommandBufferInheritanceInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, renderPass}
 
 instance {-# OVERLAPPING #-}
          HasField "subpass" VkCommandBufferInheritanceInfo where
@@ -271,40 +202,22 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, subpass}
 
-instance CanReadField "subpass" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSubpass
-
-        {-# INLINE readField #-}
-        readField = readVkSubpass
-
-instance CanWriteField "subpass" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSubpass
-
 instance {-# OVERLAPPING #-}
-         HasVkFramebuffer VkCommandBufferInheritanceInfo where
-        type VkFramebufferMType VkCommandBufferInheritanceInfo =
-             VkFramebuffer
-
-        {-# NOINLINE vkFramebuffer #-}
-        vkFramebuffer x
+         CanReadField "subpass" VkCommandBufferInheritanceInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, framebuffer})
-
-        {-# INLINE vkFramebufferByteOffset #-}
-        vkFramebufferByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, framebuffer}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, subpass})
 
-        {-# INLINE readVkFramebuffer #-}
-        readVkFramebuffer p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, framebuffer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, subpass}
 
-        {-# INLINE writeVkFramebuffer #-}
-        writeVkFramebuffer p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, framebuffer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "subpass" VkCommandBufferInheritanceInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, subpass}
 
 instance {-# OVERLAPPING #-}
          HasField "framebuffer" VkCommandBufferInheritanceInfo where
@@ -324,40 +237,22 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, framebuffer}
 
-instance CanReadField "framebuffer" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFramebuffer
-
-        {-# INLINE readField #-}
-        readField = readVkFramebuffer
-
-instance CanWriteField "framebuffer" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFramebuffer
-
 instance {-# OVERLAPPING #-}
-         HasVkOcclusionQueryEnable VkCommandBufferInheritanceInfo where
-        type VkOcclusionQueryEnableMType VkCommandBufferInheritanceInfo =
-             VkBool32
-
-        {-# NOINLINE vkOcclusionQueryEnable #-}
-        vkOcclusionQueryEnable x
+         CanReadField "framebuffer" VkCommandBufferInheritanceInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable})
-
-        {-# INLINE vkOcclusionQueryEnableByteOffset #-}
-        vkOcclusionQueryEnableByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, framebuffer})
 
-        {-# INLINE readVkOcclusionQueryEnable #-}
-        readVkOcclusionQueryEnable p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, framebuffer}
 
-        {-# INLINE writeVkOcclusionQueryEnable #-}
-        writeVkOcclusionQueryEnable p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "framebuffer" VkCommandBufferInheritanceInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, framebuffer}
 
 instance {-# OVERLAPPING #-}
          HasField "occlusionQueryEnable" VkCommandBufferInheritanceInfo
@@ -383,42 +278,24 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
 
-instance CanReadField "occlusionQueryEnable"
-           VkCommandBufferInheritanceInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "occlusionQueryEnable" VkCommandBufferInheritanceInfo
          where
-        {-# INLINE getField #-}
-        getField = vkOcclusionQueryEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable})
 
         {-# INLINE readField #-}
-        readField = readVkOcclusionQueryEnable
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
 
-instance CanWriteField "occlusionQueryEnable"
-           VkCommandBufferInheritanceInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "occlusionQueryEnable" VkCommandBufferInheritanceInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkOcclusionQueryEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkQueryFlags VkCommandBufferInheritanceInfo where
-        type VkQueryFlagsMType VkCommandBufferInheritanceInfo =
-             VkQueryControlFlags
-
-        {-# NOINLINE vkQueryFlags #-}
-        vkQueryFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, queryFlags})
-
-        {-# INLINE vkQueryFlagsByteOffset #-}
-        vkQueryFlagsByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, queryFlags}
-
-        {-# INLINE readVkQueryFlags #-}
-        readVkQueryFlags p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, queryFlags}
-
-        {-# INLINE writeVkQueryFlags #-}
-        writeVkQueryFlags p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, queryFlags}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "queryFlags" VkCommandBufferInheritanceInfo where
@@ -438,40 +315,22 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, queryFlags}
 
-instance CanReadField "queryFlags" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkQueryFlags
-
-        {-# INLINE readField #-}
-        readField = readVkQueryFlags
-
-instance CanWriteField "queryFlags" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueryFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPipelineStatistics VkCommandBufferInheritanceInfo where
-        type VkPipelineStatisticsMType VkCommandBufferInheritanceInfo =
-             VkQueryPipelineStatisticFlags
-
-        {-# NOINLINE vkPipelineStatistics #-}
-        vkPipelineStatistics x
+         CanReadField "queryFlags" VkCommandBufferInheritanceInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, pipelineStatistics})
-
-        {-# INLINE vkPipelineStatisticsByteOffset #-}
-        vkPipelineStatisticsByteOffset ~_
-          = #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, queryFlags})
 
-        {-# INLINE readVkPipelineStatistics #-}
-        readVkPipelineStatistics p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, queryFlags}
 
-        {-# INLINE writeVkPipelineStatistics #-}
-        writeVkPipelineStatistics p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queryFlags" VkCommandBufferInheritanceInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, queryFlags}
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineStatistics" VkCommandBufferInheritanceInfo where
@@ -495,45 +354,50 @@
         fieldOffset
           = #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
 
-instance CanReadField "pipelineStatistics"
-           VkCommandBufferInheritanceInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pipelineStatistics" VkCommandBufferInheritanceInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPipelineStatistics
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, pipelineStatistics})
 
         {-# INLINE readField #-}
-        readField = readVkPipelineStatistics
+        readField p
+          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
 
-instance CanWriteField "pipelineStatistics"
-           VkCommandBufferInheritanceInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipelineStatistics" VkCommandBufferInheritanceInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPipelineStatistics
+        writeField p
+          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
 
 instance Show VkCommandBufferInheritanceInfo where
         showsPrec d x
           = showString "VkCommandBufferInheritanceInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkRenderPass = " .
-                            showsPrec d (vkRenderPass x) .
+                          showString "renderPass = " .
+                            showsPrec d (getField @"renderPass" x) .
                               showString ", " .
-                                showString "vkSubpass = " .
-                                  showsPrec d (vkSubpass x) .
+                                showString "subpass = " .
+                                  showsPrec d (getField @"subpass" x) .
                                     showString ", " .
-                                      showString "vkFramebuffer = " .
-                                        showsPrec d (vkFramebuffer x) .
+                                      showString "framebuffer = " .
+                                        showsPrec d (getField @"framebuffer" x) .
                                           showString ", " .
-                                            showString "vkOcclusionQueryEnable = " .
-                                              showsPrec d (vkOcclusionQueryEnable x) .
+                                            showString "occlusionQueryEnable = " .
+                                              showsPrec d (getField @"occlusionQueryEnable" x) .
                                                 showString ", " .
-                                                  showString "vkQueryFlags = " .
-                                                    showsPrec d (vkQueryFlags x) .
+                                                  showString "queryFlags = " .
+                                                    showsPrec d (getField @"queryFlags" x) .
                                                       showString ", " .
-                                                        showString "vkPipelineStatistics = " .
-                                                          showsPrec d (vkPipelineStatistics x) .
-                                                            showChar '}'
+                                                        showString "pipelineStatistics = " .
+                                                          showsPrec d
+                                                            (getField @"pipelineStatistics" x)
+                                                            . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandPoolCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandPoolCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCommandPoolCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCommandPoolCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCommandPoolCreateInfo
        (VkCommandPoolCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkCommandPoolCreateFlags (VkCommandPoolCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCommandPoolCreateInfo {
@@ -24,7 +24,7 @@
 --   >     uint32_t               queueFamilyIndex;
 --   > } VkCommandPoolCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCommandPoolCreateInfo.html VkCommandPoolCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCommandPoolCreateInfo.html VkCommandPoolCreateInfo registry at www.khronos.org>
 data VkCommandPoolCreateInfo = VkCommandPoolCreateInfo## Addr##
                                                         ByteArray##
 
@@ -73,27 +73,6 @@
         type ReturnedOnly VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkCommandPoolCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkCommandPoolCreateInfo
-         where
-        type VkSTypeMType VkCommandPoolCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCommandPoolCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkCommandPoolCreateInfo where
         type FieldType "sType" VkCommandPoolCreateInfo = VkStructureType
@@ -108,37 +87,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCommandPoolCreateInfo, sType}
 
-instance CanReadField "sType" VkCommandPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkCommandPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkCommandPoolCreateInfo, sType}
 
-instance CanWriteField "sType" VkCommandPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCommandPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkCommandPoolCreateInfo
-         where
-        type VkPNextMType VkCommandPoolCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCommandPoolCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkCommandPoolCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkCommandPoolCreateInfo where
@@ -154,38 +118,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCommandPoolCreateInfo, pNext}
 
-instance CanReadField "pNext" VkCommandPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkCommandPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkCommandPoolCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkCommandPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCommandPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkCommandPoolCreateInfo
-         where
-        type VkFlagsMType VkCommandPoolCreateInfo =
-             VkCommandPoolCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkCommandPoolCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkCommandPoolCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkCommandPoolCreateInfo where
@@ -202,37 +150,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCommandPoolCreateInfo, flags}
 
-instance CanReadField "flags" VkCommandPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkCommandPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueFamilyIndex VkCommandPoolCreateInfo where
-        type VkQueueFamilyIndexMType VkCommandPoolCreateInfo = Word32
-
-        {-# NOINLINE vkQueueFamilyIndex #-}
-        vkQueueFamilyIndex x
+         CanReadField "flags" VkCommandPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, queueFamilyIndex})
-
-        {-# INLINE vkQueueFamilyIndexByteOffset #-}
-        vkQueueFamilyIndexByteOffset ~_
-          = #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
+              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, flags})
 
-        {-# INLINE readVkQueueFamilyIndex #-}
-        readVkQueueFamilyIndex p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCommandPoolCreateInfo, flags}
 
-        {-# INLINE writeVkQueueFamilyIndex #-}
-        writeVkQueueFamilyIndex p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkCommandPoolCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCommandPoolCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "queueFamilyIndex" VkCommandPoolCreateInfo where
@@ -251,30 +184,34 @@
         fieldOffset
           = #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
 
-instance CanReadField "queueFamilyIndex" VkCommandPoolCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueFamilyIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "queueFamilyIndex" VkCommandPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, queueFamilyIndex})
 
         {-# INLINE readField #-}
-        readField = readVkQueueFamilyIndex
+        readField p
+          = peekByteOff p #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
 
-instance CanWriteField "queueFamilyIndex" VkCommandPoolCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueFamilyIndex" VkCommandPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkQueueFamilyIndex
+        writeField p
+          = pokeByteOff p #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
 
 instance Show VkCommandPoolCreateInfo where
         showsPrec d x
           = showString "VkCommandPoolCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkQueueFamilyIndex = " .
-                                  showsPrec d (vkQueueFamilyIndex x) . showChar '}'
+                                showString "queueFamilyIndex = " .
+                                  showsPrec d (getField @"queueFamilyIndex" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkComponentMapping.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkComponentMapping.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkComponentMapping.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkComponentMapping.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkComponentMapping
        (VkComponentMapping(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkComponentSwizzle (VkComponentSwizzle)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkComponentMapping {
@@ -23,7 +23,7 @@
 --   >     VkComponentSwizzle a;
 --   > } VkComponentMapping;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkComponentMapping.html VkComponentMapping registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkComponentMapping.html VkComponentMapping registry at www.khronos.org>
 data VkComponentMapping = VkComponentMapping## Addr## ByteArray##
 
 instance Eq VkComponentMapping where
@@ -70,25 +70,6 @@
         type ReturnedOnly VkComponentMapping = 'False -- ' closing tick for hsc2hs
         type StructExtends VkComponentMapping = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkR VkComponentMapping where
-        type VkRMType VkComponentMapping = VkComponentSwizzle
-
-        {-# NOINLINE vkR #-}
-        vkR x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, r})
-
-        {-# INLINE vkRByteOffset #-}
-        vkRByteOffset ~_ = #{offset VkComponentMapping, r}
-
-        {-# INLINE readVkR #-}
-        readVkR p
-          = peekByteOff p #{offset VkComponentMapping, r}
-
-        {-# INLINE writeVkR #-}
-        writeVkR p
-          = pokeByteOff p #{offset VkComponentMapping, r}
-
 instance {-# OVERLAPPING #-} HasField "r" VkComponentMapping where
         type FieldType "r" VkComponentMapping = VkComponentSwizzle
         type FieldOptional "r" VkComponentMapping = 'False -- ' closing tick for hsc2hs
@@ -102,35 +83,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkComponentMapping, r}
 
-instance CanReadField "r" VkComponentMapping where
-        {-# INLINE getField #-}
-        getField = vkR
+instance {-# OVERLAPPING #-} CanReadField "r" VkComponentMapping
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, r})
 
         {-# INLINE readField #-}
-        readField = readVkR
+        readField p
+          = peekByteOff p #{offset VkComponentMapping, r}
 
-instance CanWriteField "r" VkComponentMapping where
+instance {-# OVERLAPPING #-} CanWriteField "r" VkComponentMapping
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkR
-
-instance {-# OVERLAPPING #-} HasVkG VkComponentMapping where
-        type VkGMType VkComponentMapping = VkComponentSwizzle
-
-        {-# NOINLINE vkG #-}
-        vkG x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, g})
-
-        {-# INLINE vkGByteOffset #-}
-        vkGByteOffset ~_ = #{offset VkComponentMapping, g}
-
-        {-# INLINE readVkG #-}
-        readVkG p
-          = peekByteOff p #{offset VkComponentMapping, g}
-
-        {-# INLINE writeVkG #-}
-        writeVkG p
-          = pokeByteOff p #{offset VkComponentMapping, g}
+        writeField p
+          = pokeByteOff p #{offset VkComponentMapping, r}
 
 instance {-# OVERLAPPING #-} HasField "g" VkComponentMapping where
         type FieldType "g" VkComponentMapping = VkComponentSwizzle
@@ -145,35 +113,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkComponentMapping, g}
 
-instance CanReadField "g" VkComponentMapping where
-        {-# INLINE getField #-}
-        getField = vkG
+instance {-# OVERLAPPING #-} CanReadField "g" VkComponentMapping
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, g})
 
         {-# INLINE readField #-}
-        readField = readVkG
+        readField p
+          = peekByteOff p #{offset VkComponentMapping, g}
 
-instance CanWriteField "g" VkComponentMapping where
+instance {-# OVERLAPPING #-} CanWriteField "g" VkComponentMapping
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkG
-
-instance {-# OVERLAPPING #-} HasVkB VkComponentMapping where
-        type VkBMType VkComponentMapping = VkComponentSwizzle
-
-        {-# NOINLINE vkB #-}
-        vkB x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, b})
-
-        {-# INLINE vkBByteOffset #-}
-        vkBByteOffset ~_ = #{offset VkComponentMapping, b}
-
-        {-# INLINE readVkB #-}
-        readVkB p
-          = peekByteOff p #{offset VkComponentMapping, b}
-
-        {-# INLINE writeVkB #-}
-        writeVkB p
-          = pokeByteOff p #{offset VkComponentMapping, b}
+        writeField p
+          = pokeByteOff p #{offset VkComponentMapping, g}
 
 instance {-# OVERLAPPING #-} HasField "b" VkComponentMapping where
         type FieldType "b" VkComponentMapping = VkComponentSwizzle
@@ -188,35 +143,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkComponentMapping, b}
 
-instance CanReadField "b" VkComponentMapping where
-        {-# INLINE getField #-}
-        getField = vkB
+instance {-# OVERLAPPING #-} CanReadField "b" VkComponentMapping
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, b})
 
         {-# INLINE readField #-}
-        readField = readVkB
+        readField p
+          = peekByteOff p #{offset VkComponentMapping, b}
 
-instance CanWriteField "b" VkComponentMapping where
+instance {-# OVERLAPPING #-} CanWriteField "b" VkComponentMapping
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkB
-
-instance {-# OVERLAPPING #-} HasVkA VkComponentMapping where
-        type VkAMType VkComponentMapping = VkComponentSwizzle
-
-        {-# NOINLINE vkA #-}
-        vkA x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, a})
-
-        {-# INLINE vkAByteOffset #-}
-        vkAByteOffset ~_ = #{offset VkComponentMapping, a}
-
-        {-# INLINE readVkA #-}
-        readVkA p
-          = peekByteOff p #{offset VkComponentMapping, a}
-
-        {-# INLINE writeVkA #-}
-        writeVkA p
-          = pokeByteOff p #{offset VkComponentMapping, a}
+        writeField p
+          = pokeByteOff p #{offset VkComponentMapping, b}
 
 instance {-# OVERLAPPING #-} HasField "a" VkComponentMapping where
         type FieldType "a" VkComponentMapping = VkComponentSwizzle
@@ -231,27 +173,33 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkComponentMapping, a}
 
-instance CanReadField "a" VkComponentMapping where
-        {-# INLINE getField #-}
-        getField = vkA
+instance {-# OVERLAPPING #-} CanReadField "a" VkComponentMapping
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, a})
 
         {-# INLINE readField #-}
-        readField = readVkA
+        readField p
+          = peekByteOff p #{offset VkComponentMapping, a}
 
-instance CanWriteField "a" VkComponentMapping where
+instance {-# OVERLAPPING #-} CanWriteField "a" VkComponentMapping
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkA
+        writeField p
+          = pokeByteOff p #{offset VkComponentMapping, a}
 
 instance Show VkComponentMapping where
         showsPrec d x
           = showString "VkComponentMapping {" .
-              showString "vkR = " .
-                showsPrec d (vkR x) .
+              showString "r = " .
+                showsPrec d (getField @"r" x) .
                   showString ", " .
-                    showString "vkG = " .
-                      showsPrec d (vkG x) .
+                    showString "g = " .
+                      showsPrec d (getField @"g" x) .
                         showString ", " .
-                          showString "vkB = " .
-                            showsPrec d (vkB x) .
+                          showString "b = " .
+                            showsPrec d (getField @"b" x) .
                               showString ", " .
-                                showString "vkA = " . showsPrec d (vkA x) . showChar '}'
+                                showString "a = " . showsPrec d (getField @"a" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkComputePipelineCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkComputePipelineCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkComputePipelineCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkComputePipelineCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkComputePipelineCreateInfo
        (VkComputePipelineCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Handles                                (VkPipeline,
                                                                                VkPipelineLayout)
 import           Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo (VkPipelineShaderStageCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkComputePipelineCreateInfo {
@@ -30,7 +30,7 @@
 --   >     int32_t                basePipelineIndex;
 --   > } VkComputePipelineCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkComputePipelineCreateInfo.html VkComputePipelineCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkComputePipelineCreateInfo.html VkComputePipelineCreateInfo registry at www.khronos.org>
 data VkComputePipelineCreateInfo = VkComputePipelineCreateInfo## Addr##
                                                                 ByteArray##
 
@@ -83,27 +83,6 @@
         type ReturnedOnly VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkComputePipelineCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkComputePipelineCreateInfo
-         where
-        type VkSTypeMType VkComputePipelineCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkComputePipelineCreateInfo where
         type FieldType "sType" VkComputePipelineCreateInfo =
@@ -120,37 +99,22 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, sType}
 
-instance CanReadField "sType" VkComputePipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, sType}
 
-instance CanWriteField "sType" VkComputePipelineCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkComputePipelineCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkComputePipelineCreateInfo
-         where
-        type VkPNextMType VkComputePipelineCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkComputePipelineCreateInfo where
@@ -167,38 +131,22 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, pNext}
 
-instance CanReadField "pNext" VkComputePipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkComputePipelineCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkComputePipelineCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkComputePipelineCreateInfo
-         where
-        type VkFlagsMType VkComputePipelineCreateInfo =
-             VkPipelineCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkComputePipelineCreateInfo where
@@ -216,38 +164,22 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, flags}
 
-instance CanReadField "flags" VkComputePipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, flags}
 
-instance CanWriteField "flags" VkComputePipelineCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkComputePipelineCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkStage VkComputePipelineCreateInfo
-         where
-        type VkStageMType VkComputePipelineCreateInfo =
-             VkPipelineShaderStageCreateInfo
-
-        {-# NOINLINE vkStage #-}
-        vkStage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, stage})
-
-        {-# INLINE vkStageByteOffset #-}
-        vkStageByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, stage}
-
-        {-# INLINE readVkStage #-}
-        readVkStage p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, stage}
-
-        {-# INLINE writeVkStage #-}
-        writeVkStage p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, stage}
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "stage" VkComputePipelineCreateInfo where
@@ -265,37 +197,22 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, stage}
 
-instance CanReadField "stage" VkComputePipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkStage
-
-        {-# INLINE readField #-}
-        readField = readVkStage
-
-instance CanWriteField "stage" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkStage
-
 instance {-# OVERLAPPING #-}
-         HasVkLayout VkComputePipelineCreateInfo where
-        type VkLayoutMType VkComputePipelineCreateInfo = VkPipelineLayout
-
-        {-# NOINLINE vkLayout #-}
-        vkLayout x
+         CanReadField "stage" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, layout})
-
-        {-# INLINE vkLayoutByteOffset #-}
-        vkLayoutByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, layout}
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, stage})
 
-        {-# INLINE readVkLayout #-}
-        readVkLayout p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, layout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, stage}
 
-        {-# INLINE writeVkLayout #-}
-        writeVkLayout p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, layout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stage" VkComputePipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, stage}
 
 instance {-# OVERLAPPING #-}
          HasField "layout" VkComputePipelineCreateInfo where
@@ -313,38 +230,22 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, layout}
 
-instance CanReadField "layout" VkComputePipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkLayout
-
-        {-# INLINE readField #-}
-        readField = readVkLayout
-
-instance CanWriteField "layout" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkLayout
-
 instance {-# OVERLAPPING #-}
-         HasVkBasePipelineHandle VkComputePipelineCreateInfo where
-        type VkBasePipelineHandleMType VkComputePipelineCreateInfo =
-             VkPipeline
-
-        {-# NOINLINE vkBasePipelineHandle #-}
-        vkBasePipelineHandle x
+         CanReadField "layout" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, basePipelineHandle})
-
-        {-# INLINE vkBasePipelineHandleByteOffset #-}
-        vkBasePipelineHandleByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, basePipelineHandle}
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, layout})
 
-        {-# INLINE readVkBasePipelineHandle #-}
-        readVkBasePipelineHandle p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, basePipelineHandle}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, layout}
 
-        {-# INLINE writeVkBasePipelineHandle #-}
-        writeVkBasePipelineHandle p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, basePipelineHandle}
+instance {-# OVERLAPPING #-}
+         CanWriteField "layout" VkComputePipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, layout}
 
 instance {-# OVERLAPPING #-}
          HasField "basePipelineHandle" VkComputePipelineCreateInfo where
@@ -364,41 +265,23 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, basePipelineHandle}
 
-instance CanReadField "basePipelineHandle"
-           VkComputePipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBasePipelineHandle
+instance {-# OVERLAPPING #-}
+         CanReadField "basePipelineHandle" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, basePipelineHandle})
 
         {-# INLINE readField #-}
-        readField = readVkBasePipelineHandle
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, basePipelineHandle}
 
-instance CanWriteField "basePipelineHandle"
-           VkComputePipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "basePipelineHandle" VkComputePipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkBasePipelineHandle
-
-instance {-# OVERLAPPING #-}
-         HasVkBasePipelineIndex VkComputePipelineCreateInfo where
-        type VkBasePipelineIndexMType VkComputePipelineCreateInfo = Int32
-
-        {-# NOINLINE vkBasePipelineIndex #-}
-        vkBasePipelineIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, basePipelineIndex})
-
-        {-# INLINE vkBasePipelineIndexByteOffset #-}
-        vkBasePipelineIndexByteOffset ~_
-          = #{offset VkComputePipelineCreateInfo, basePipelineIndex}
-
-        {-# INLINE readVkBasePipelineIndex #-}
-        readVkBasePipelineIndex p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, basePipelineIndex}
-
-        {-# INLINE writeVkBasePipelineIndex #-}
-        writeVkBasePipelineIndex p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, basePipelineIndex}
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, basePipelineHandle}
 
 instance {-# OVERLAPPING #-}
          HasField "basePipelineIndex" VkComputePipelineCreateInfo where
@@ -418,42 +301,44 @@
         fieldOffset
           = #{offset VkComputePipelineCreateInfo, basePipelineIndex}
 
-instance CanReadField "basePipelineIndex"
-           VkComputePipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBasePipelineIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "basePipelineIndex" VkComputePipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, basePipelineIndex})
 
         {-# INLINE readField #-}
-        readField = readVkBasePipelineIndex
+        readField p
+          = peekByteOff p #{offset VkComputePipelineCreateInfo, basePipelineIndex}
 
-instance CanWriteField "basePipelineIndex"
-           VkComputePipelineCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "basePipelineIndex" VkComputePipelineCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkBasePipelineIndex
+        writeField p
+          = pokeByteOff p #{offset VkComputePipelineCreateInfo, basePipelineIndex}
 
 instance Show VkComputePipelineCreateInfo where
         showsPrec d x
           = showString "VkComputePipelineCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkStage = " .
-                                  showsPrec d (vkStage x) .
+                                showString "stage = " .
+                                  showsPrec d (getField @"stage" x) .
                                     showString ", " .
-                                      showString "vkLayout = " .
-                                        showsPrec d (vkLayout x) .
+                                      showString "layout = " .
+                                        showsPrec d (getField @"layout" x) .
                                           showString ", " .
-                                            showString "vkBasePipelineHandle = " .
-                                              showsPrec d (vkBasePipelineHandle x) .
+                                            showString "basePipelineHandle = " .
+                                              showsPrec d (getField @"basePipelineHandle" x) .
                                                 showString ", " .
-                                                  showString "vkBasePipelineIndex = " .
-                                                    showsPrec d (vkBasePipelineIndex x) .
+                                                  showString "basePipelineIndex = " .
+                                                    showsPrec d (getField @"basePipelineIndex" x) .
                                                       showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkCopyDescriptorSet.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkCopyDescriptorSet.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkCopyDescriptorSet.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkCopyDescriptorSet.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkCopyDescriptorSet
        (VkCopyDescriptorSet(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkDescriptorSet)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCopyDescriptorSet {
@@ -29,7 +29,7 @@
 --   >     uint32_t               descriptorCount;
 --   > } VkCopyDescriptorSet;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkCopyDescriptorSet.html VkCopyDescriptorSet registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkCopyDescriptorSet.html VkCopyDescriptorSet registry at www.khronos.org>
 data VkCopyDescriptorSet = VkCopyDescriptorSet## Addr## ByteArray##
 
 instance Eq VkCopyDescriptorSet where
@@ -78,26 +78,6 @@
         type ReturnedOnly VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
         type StructExtends VkCopyDescriptorSet = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkCopyDescriptorSet where
-        type VkSTypeMType VkCopyDescriptorSet = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkCopyDescriptorSet, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkCopyDescriptorSet, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkCopyDescriptorSet
          where
         type FieldType "sType" VkCopyDescriptorSet = VkStructureType
@@ -112,36 +92,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCopyDescriptorSet, sType}
 
-instance CanReadField "sType" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, sType}
 
-instance CanWriteField "sType" VkCopyDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkCopyDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkCopyDescriptorSet where
-        type VkPNextMType VkCopyDescriptorSet = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkCopyDescriptorSet, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkCopyDescriptorSet, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkCopyDescriptorSet
          where
@@ -157,36 +123,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCopyDescriptorSet, pNext}
 
-instance CanReadField "pNext" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, pNext}
 
-instance CanWriteField "pNext" VkCopyDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkCopyDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkSrcSet VkCopyDescriptorSet where
-        type VkSrcSetMType VkCopyDescriptorSet = VkDescriptorSet
-
-        {-# NOINLINE vkSrcSet #-}
-        vkSrcSet x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcSet})
-
-        {-# INLINE vkSrcSetByteOffset #-}
-        vkSrcSetByteOffset ~_
-          = #{offset VkCopyDescriptorSet, srcSet}
-
-        {-# INLINE readVkSrcSet #-}
-        readVkSrcSet p
-          = peekByteOff p #{offset VkCopyDescriptorSet, srcSet}
-
-        {-# INLINE writeVkSrcSet #-}
-        writeVkSrcSet p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, srcSet}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, pNext}
 
 instance {-# OVERLAPPING #-} HasField "srcSet" VkCopyDescriptorSet
          where
@@ -202,37 +154,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCopyDescriptorSet, srcSet}
 
-instance CanReadField "srcSet" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkSrcSet
+instance {-# OVERLAPPING #-}
+         CanReadField "srcSet" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcSet})
 
         {-# INLINE readField #-}
-        readField = readVkSrcSet
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, srcSet}
 
-instance CanWriteField "srcSet" VkCopyDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcSet" VkCopyDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcSet
-
-instance {-# OVERLAPPING #-} HasVkSrcBinding VkCopyDescriptorSet
-         where
-        type VkSrcBindingMType VkCopyDescriptorSet = Word32
-
-        {-# NOINLINE vkSrcBinding #-}
-        vkSrcBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcBinding})
-
-        {-# INLINE vkSrcBindingByteOffset #-}
-        vkSrcBindingByteOffset ~_
-          = #{offset VkCopyDescriptorSet, srcBinding}
-
-        {-# INLINE readVkSrcBinding #-}
-        readVkSrcBinding p
-          = peekByteOff p #{offset VkCopyDescriptorSet, srcBinding}
-
-        {-# INLINE writeVkSrcBinding #-}
-        writeVkSrcBinding p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, srcBinding}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, srcSet}
 
 instance {-# OVERLAPPING #-}
          HasField "srcBinding" VkCopyDescriptorSet where
@@ -248,37 +185,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCopyDescriptorSet, srcBinding}
 
-instance CanReadField "srcBinding" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkSrcBinding
-
-        {-# INLINE readField #-}
-        readField = readVkSrcBinding
-
-instance CanWriteField "srcBinding" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkSrcBinding
-
 instance {-# OVERLAPPING #-}
-         HasVkSrcArrayElement VkCopyDescriptorSet where
-        type VkSrcArrayElementMType VkCopyDescriptorSet = Word32
-
-        {-# NOINLINE vkSrcArrayElement #-}
-        vkSrcArrayElement x
+         CanReadField "srcBinding" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcArrayElement})
-
-        {-# INLINE vkSrcArrayElementByteOffset #-}
-        vkSrcArrayElementByteOffset ~_
-          = #{offset VkCopyDescriptorSet, srcArrayElement}
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcBinding})
 
-        {-# INLINE readVkSrcArrayElement #-}
-        readVkSrcArrayElement p
-          = peekByteOff p #{offset VkCopyDescriptorSet, srcArrayElement}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, srcBinding}
 
-        {-# INLINE writeVkSrcArrayElement #-}
-        writeVkSrcArrayElement p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, srcArrayElement}
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcBinding" VkCopyDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, srcBinding}
 
 instance {-# OVERLAPPING #-}
          HasField "srcArrayElement" VkCopyDescriptorSet where
@@ -295,36 +217,22 @@
         fieldOffset
           = #{offset VkCopyDescriptorSet, srcArrayElement}
 
-instance CanReadField "srcArrayElement" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkSrcArrayElement
+instance {-# OVERLAPPING #-}
+         CanReadField "srcArrayElement" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcArrayElement})
 
         {-# INLINE readField #-}
-        readField = readVkSrcArrayElement
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, srcArrayElement}
 
-instance CanWriteField "srcArrayElement" VkCopyDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcArrayElement" VkCopyDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcArrayElement
-
-instance {-# OVERLAPPING #-} HasVkDstSet VkCopyDescriptorSet where
-        type VkDstSetMType VkCopyDescriptorSet = VkDescriptorSet
-
-        {-# NOINLINE vkDstSet #-}
-        vkDstSet x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstSet})
-
-        {-# INLINE vkDstSetByteOffset #-}
-        vkDstSetByteOffset ~_
-          = #{offset VkCopyDescriptorSet, dstSet}
-
-        {-# INLINE readVkDstSet #-}
-        readVkDstSet p
-          = peekByteOff p #{offset VkCopyDescriptorSet, dstSet}
-
-        {-# INLINE writeVkDstSet #-}
-        writeVkDstSet p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, dstSet}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, srcArrayElement}
 
 instance {-# OVERLAPPING #-} HasField "dstSet" VkCopyDescriptorSet
          where
@@ -340,37 +248,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCopyDescriptorSet, dstSet}
 
-instance CanReadField "dstSet" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDstSet
+instance {-# OVERLAPPING #-}
+         CanReadField "dstSet" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstSet})
 
         {-# INLINE readField #-}
-        readField = readVkDstSet
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, dstSet}
 
-instance CanWriteField "dstSet" VkCopyDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstSet" VkCopyDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkDstSet
-
-instance {-# OVERLAPPING #-} HasVkDstBinding VkCopyDescriptorSet
-         where
-        type VkDstBindingMType VkCopyDescriptorSet = Word32
-
-        {-# NOINLINE vkDstBinding #-}
-        vkDstBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstBinding})
-
-        {-# INLINE vkDstBindingByteOffset #-}
-        vkDstBindingByteOffset ~_
-          = #{offset VkCopyDescriptorSet, dstBinding}
-
-        {-# INLINE readVkDstBinding #-}
-        readVkDstBinding p
-          = peekByteOff p #{offset VkCopyDescriptorSet, dstBinding}
-
-        {-# INLINE writeVkDstBinding #-}
-        writeVkDstBinding p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, dstBinding}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, dstSet}
 
 instance {-# OVERLAPPING #-}
          HasField "dstBinding" VkCopyDescriptorSet where
@@ -386,37 +279,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkCopyDescriptorSet, dstBinding}
 
-instance CanReadField "dstBinding" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDstBinding
-
-        {-# INLINE readField #-}
-        readField = readVkDstBinding
-
-instance CanWriteField "dstBinding" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstBinding
-
 instance {-# OVERLAPPING #-}
-         HasVkDstArrayElement VkCopyDescriptorSet where
-        type VkDstArrayElementMType VkCopyDescriptorSet = Word32
-
-        {-# NOINLINE vkDstArrayElement #-}
-        vkDstArrayElement x
+         CanReadField "dstBinding" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstArrayElement})
-
-        {-# INLINE vkDstArrayElementByteOffset #-}
-        vkDstArrayElementByteOffset ~_
-          = #{offset VkCopyDescriptorSet, dstArrayElement}
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstBinding})
 
-        {-# INLINE readVkDstArrayElement #-}
-        readVkDstArrayElement p
-          = peekByteOff p #{offset VkCopyDescriptorSet, dstArrayElement}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, dstBinding}
 
-        {-# INLINE writeVkDstArrayElement #-}
-        writeVkDstArrayElement p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, dstArrayElement}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstBinding" VkCopyDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, dstBinding}
 
 instance {-# OVERLAPPING #-}
          HasField "dstArrayElement" VkCopyDescriptorSet where
@@ -433,37 +311,22 @@
         fieldOffset
           = #{offset VkCopyDescriptorSet, dstArrayElement}
 
-instance CanReadField "dstArrayElement" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDstArrayElement
-
-        {-# INLINE readField #-}
-        readField = readVkDstArrayElement
-
-instance CanWriteField "dstArrayElement" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstArrayElement
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorCount VkCopyDescriptorSet where
-        type VkDescriptorCountMType VkCopyDescriptorSet = Word32
-
-        {-# NOINLINE vkDescriptorCount #-}
-        vkDescriptorCount x
+         CanReadField "dstArrayElement" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, descriptorCount})
-
-        {-# INLINE vkDescriptorCountByteOffset #-}
-        vkDescriptorCountByteOffset ~_
-          = #{offset VkCopyDescriptorSet, descriptorCount}
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstArrayElement})
 
-        {-# INLINE readVkDescriptorCount #-}
-        readVkDescriptorCount p
-          = peekByteOff p #{offset VkCopyDescriptorSet, descriptorCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, dstArrayElement}
 
-        {-# INLINE writeVkDescriptorCount #-}
-        writeVkDescriptorCount p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, descriptorCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstArrayElement" VkCopyDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, dstArrayElement}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorCount" VkCopyDescriptorSet where
@@ -480,44 +343,53 @@
         fieldOffset
           = #{offset VkCopyDescriptorSet, descriptorCount}
 
-instance CanReadField "descriptorCount" VkCopyDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDescriptorCount
+instance {-# OVERLAPPING #-}
+         CanReadField "descriptorCount" VkCopyDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, descriptorCount})
 
         {-# INLINE readField #-}
-        readField = readVkDescriptorCount
+        readField p
+          = peekByteOff p #{offset VkCopyDescriptorSet, descriptorCount}
 
-instance CanWriteField "descriptorCount" VkCopyDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorCount" VkCopyDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkDescriptorCount
+        writeField p
+          = pokeByteOff p #{offset VkCopyDescriptorSet, descriptorCount}
 
 instance Show VkCopyDescriptorSet where
         showsPrec d x
           = showString "VkCopyDescriptorSet {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSrcSet = " .
-                            showsPrec d (vkSrcSet x) .
+                          showString "srcSet = " .
+                            showsPrec d (getField @"srcSet" x) .
                               showString ", " .
-                                showString "vkSrcBinding = " .
-                                  showsPrec d (vkSrcBinding x) .
+                                showString "srcBinding = " .
+                                  showsPrec d (getField @"srcBinding" x) .
                                     showString ", " .
-                                      showString "vkSrcArrayElement = " .
-                                        showsPrec d (vkSrcArrayElement x) .
+                                      showString "srcArrayElement = " .
+                                        showsPrec d (getField @"srcArrayElement" x) .
                                           showString ", " .
-                                            showString "vkDstSet = " .
-                                              showsPrec d (vkDstSet x) .
+                                            showString "dstSet = " .
+                                              showsPrec d (getField @"dstSet" x) .
                                                 showString ", " .
-                                                  showString "vkDstBinding = " .
-                                                    showsPrec d (vkDstBinding x) .
+                                                  showString "dstBinding = " .
+                                                    showsPrec d (getField @"dstBinding" x) .
                                                       showString ", " .
-                                                        showString "vkDstArrayElement = " .
-                                                          showsPrec d (vkDstArrayElement x) .
+                                                        showString "dstArrayElement = " .
+                                                          showsPrec d
+                                                            (getField @"dstArrayElement" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkDescriptorCount = " .
-                                                                showsPrec d (vkDescriptorCount x) .
-                                                                  showChar '}'
+                                                              showString "descriptorCount = " .
+                                                                showsPrec d
+                                                                  (getField @"descriptorCount" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkD3D12FenceSubmitInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkD3D12FenceSubmitInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkD3D12FenceSubmitInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkD3D12FenceSubmitInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkD3D12FenceSubmitInfoKHR
        (VkD3D12FenceSubmitInfoKHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkSubmitInfo  (VkSubmitInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkD3D12FenceSubmitInfoKHR {
@@ -26,7 +26,7 @@
 --   >     const uint64_t* pSignalSemaphoreValues;
 --   > } VkD3D12FenceSubmitInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkD3D12FenceSubmitInfoKHR.html VkD3D12FenceSubmitInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkD3D12FenceSubmitInfoKHR.html VkD3D12FenceSubmitInfoKHR registry at www.khronos.org>
 data VkD3D12FenceSubmitInfoKHR = VkD3D12FenceSubmitInfoKHR## Addr##
                                                             ByteArray##
 
@@ -78,27 +78,6 @@
         type ReturnedOnly VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkD3D12FenceSubmitInfoKHR = '[VkSubmitInfo] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkD3D12FenceSubmitInfoKHR
-         where
-        type VkSTypeMType VkD3D12FenceSubmitInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkD3D12FenceSubmitInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkD3D12FenceSubmitInfoKHR where
         type FieldType "sType" VkD3D12FenceSubmitInfoKHR = VkStructureType
@@ -114,37 +93,22 @@
         fieldOffset
           = #{offset VkD3D12FenceSubmitInfoKHR, sType}
 
-instance CanReadField "sType" VkD3D12FenceSubmitInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkD3D12FenceSubmitInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, sType}
 
-instance CanWriteField "sType" VkD3D12FenceSubmitInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkD3D12FenceSubmitInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkD3D12FenceSubmitInfoKHR
-         where
-        type VkPNextMType VkD3D12FenceSubmitInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkD3D12FenceSubmitInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkD3D12FenceSubmitInfoKHR where
@@ -161,38 +125,22 @@
         fieldOffset
           = #{offset VkD3D12FenceSubmitInfoKHR, pNext}
 
-instance CanReadField "pNext" VkD3D12FenceSubmitInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkD3D12FenceSubmitInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkWaitSemaphoreValuesCount VkD3D12FenceSubmitInfoKHR where
-        type VkWaitSemaphoreValuesCountMType VkD3D12FenceSubmitInfoKHR =
-             Word32
-
-        {-# NOINLINE vkWaitSemaphoreValuesCount #-}
-        vkWaitSemaphoreValuesCount x
+         CanReadField "pNext" VkD3D12FenceSubmitInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount})
-
-        {-# INLINE vkWaitSemaphoreValuesCountByteOffset #-}
-        vkWaitSemaphoreValuesCountByteOffset ~_
-          = #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
+              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pNext})
 
-        {-# INLINE readVkWaitSemaphoreValuesCount #-}
-        readVkWaitSemaphoreValuesCount p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pNext}
 
-        {-# INLINE writeVkWaitSemaphoreValuesCount #-}
-        writeVkWaitSemaphoreValuesCount p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkD3D12FenceSubmitInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR where
@@ -216,42 +164,24 @@
         fieldOffset
           = #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
 
-instance CanReadField "waitSemaphoreValuesCount"
-           VkD3D12FenceSubmitInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkWaitSemaphoreValuesCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount})
 
         {-# INLINE readField #-}
-        readField = readVkWaitSemaphoreValuesCount
+        readField p
+          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
 
-instance CanWriteField "waitSemaphoreValuesCount"
-           VkD3D12FenceSubmitInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkWaitSemaphoreValuesCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPWaitSemaphoreValues VkD3D12FenceSubmitInfoKHR where
-        type VkPWaitSemaphoreValuesMType VkD3D12FenceSubmitInfoKHR =
-             Ptr Word64
-
-        {-# NOINLINE vkPWaitSemaphoreValues #-}
-        vkPWaitSemaphoreValues x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues})
-
-        {-# INLINE vkPWaitSemaphoreValuesByteOffset #-}
-        vkPWaitSemaphoreValuesByteOffset ~_
-          = #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
-
-        {-# INLINE readVkPWaitSemaphoreValues #-}
-        readVkPWaitSemaphoreValues p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
-
-        {-# INLINE writeVkPWaitSemaphoreValues #-}
-        writeVkPWaitSemaphoreValues p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
+        writeField p
+          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR where
@@ -271,42 +201,23 @@
         fieldOffset
           = #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
 
-instance CanReadField "pWaitSemaphoreValues"
-           VkD3D12FenceSubmitInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPWaitSemaphoreValues
+instance {-# OVERLAPPING #-}
+         CanReadField "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues})
 
         {-# INLINE readField #-}
-        readField = readVkPWaitSemaphoreValues
+        readField p
+          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
 
-instance CanWriteField "pWaitSemaphoreValues"
-           VkD3D12FenceSubmitInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPWaitSemaphoreValues
-
-instance {-# OVERLAPPING #-}
-         HasVkSignalSemaphoreValuesCount VkD3D12FenceSubmitInfoKHR where
-        type VkSignalSemaphoreValuesCountMType VkD3D12FenceSubmitInfoKHR =
-             Word32
-
-        {-# NOINLINE vkSignalSemaphoreValuesCount #-}
-        vkSignalSemaphoreValuesCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount})
-
-        {-# INLINE vkSignalSemaphoreValuesCountByteOffset #-}
-        vkSignalSemaphoreValuesCountByteOffset ~_
-          = #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
-
-        {-# INLINE readVkSignalSemaphoreValuesCount #-}
-        readVkSignalSemaphoreValuesCount p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
-
-        {-# INLINE writeVkSignalSemaphoreValuesCount #-}
-        writeVkSignalSemaphoreValuesCount p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
+        writeField p
+          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
 
 instance {-# OVERLAPPING #-}
          HasField "signalSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
@@ -332,42 +243,25 @@
         fieldOffset
           = #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
 
-instance CanReadField "signalSemaphoreValuesCount"
-           VkD3D12FenceSubmitInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "signalSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkSignalSemaphoreValuesCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount})
 
         {-# INLINE readField #-}
-        readField = readVkSignalSemaphoreValuesCount
+        readField p
+          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
 
-instance CanWriteField "signalSemaphoreValuesCount"
+instance {-# OVERLAPPING #-}
+         CanWriteField "signalSemaphoreValuesCount"
            VkD3D12FenceSubmitInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSignalSemaphoreValuesCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPSignalSemaphoreValues VkD3D12FenceSubmitInfoKHR where
-        type VkPSignalSemaphoreValuesMType VkD3D12FenceSubmitInfoKHR =
-             Ptr Word64
-
-        {-# NOINLINE vkPSignalSemaphoreValues #-}
-        vkPSignalSemaphoreValues x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues})
-
-        {-# INLINE vkPSignalSemaphoreValuesByteOffset #-}
-        vkPSignalSemaphoreValuesByteOffset ~_
-          = #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
-
-        {-# INLINE readVkPSignalSemaphoreValues #-}
-        readVkPSignalSemaphoreValues p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
-
-        {-# INLINE writeVkPSignalSemaphoreValues #-}
-        writeVkPSignalSemaphoreValues p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
+        writeField p
+          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR where
@@ -390,39 +284,43 @@
         fieldOffset
           = #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
 
-instance CanReadField "pSignalSemaphoreValues"
-           VkD3D12FenceSubmitInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPSignalSemaphoreValues
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues})
 
         {-# INLINE readField #-}
-        readField = readVkPSignalSemaphoreValues
+        readField p
+          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
 
-instance CanWriteField "pSignalSemaphoreValues"
-           VkD3D12FenceSubmitInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPSignalSemaphoreValues
+        writeField p
+          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
 
 instance Show VkD3D12FenceSubmitInfoKHR where
         showsPrec d x
           = showString "VkD3D12FenceSubmitInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkWaitSemaphoreValuesCount = " .
-                            showsPrec d (vkWaitSemaphoreValuesCount x) .
+                          showString "waitSemaphoreValuesCount = " .
+                            showsPrec d (getField @"waitSemaphoreValuesCount" x) .
                               showString ", " .
-                                showString "vkPWaitSemaphoreValues = " .
-                                  showsPrec d (vkPWaitSemaphoreValues x) .
+                                showString "pWaitSemaphoreValues = " .
+                                  showsPrec d (getField @"pWaitSemaphoreValues" x) .
                                     showString ", " .
-                                      showString "vkSignalSemaphoreValuesCount = " .
-                                        showsPrec d (vkSignalSemaphoreValuesCount x) .
+                                      showString "signalSemaphoreValuesCount = " .
+                                        showsPrec d (getField @"signalSemaphoreValuesCount" x) .
                                           showString ", " .
-                                            showString "vkPSignalSemaphoreValues = " .
-                                              showsPrec d (vkPSignalSemaphoreValues x) .
+                                            showString "pSignalSemaphoreValues = " .
+                                              showsPrec d (getField @"pSignalSemaphoreValues" x) .
                                                 showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerMarkerInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerMarkerInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerMarkerInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerMarkerInfoEXT.hsc
@@ -8,6 +8,7 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkDebugMarkerMarkerInfoEXT
@@ -18,7 +19,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugMarkerMarkerInfoEXT {
@@ -28,7 +28,7 @@
 --   >     float            color[4];
 --   > } VkDebugMarkerMarkerInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDebugMarkerMarkerInfoEXT.html VkDebugMarkerMarkerInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugMarkerMarkerInfoEXT.html VkDebugMarkerMarkerInfoEXT registry at www.khronos.org>
 data VkDebugMarkerMarkerInfoEXT = VkDebugMarkerMarkerInfoEXT## Addr##
                                                               ByteArray##
 
@@ -80,27 +80,6 @@
         type ReturnedOnly VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDebugMarkerMarkerInfoEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDebugMarkerMarkerInfoEXT
-         where
-        type VkSTypeMType VkDebugMarkerMarkerInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDebugMarkerMarkerInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkDebugMarkerMarkerInfoEXT where
         type FieldType "sType" VkDebugMarkerMarkerInfoEXT = VkStructureType
@@ -116,37 +95,22 @@
         fieldOffset
           = #{offset VkDebugMarkerMarkerInfoEXT, sType}
 
-instance CanReadField "sType" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDebugMarkerMarkerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, sType}
 
-instance CanWriteField "sType" VkDebugMarkerMarkerInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDebugMarkerMarkerInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDebugMarkerMarkerInfoEXT
-         where
-        type VkPNextMType VkDebugMarkerMarkerInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDebugMarkerMarkerInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDebugMarkerMarkerInfoEXT where
@@ -163,37 +127,22 @@
         fieldOffset
           = #{offset VkDebugMarkerMarkerInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkPMarkerName VkDebugMarkerMarkerInfoEXT where
-        type VkPMarkerNameMType VkDebugMarkerMarkerInfoEXT = CString
-
-        {-# NOINLINE vkPMarkerName #-}
-        vkPMarkerName x
+         CanReadField "pNext" VkDebugMarkerMarkerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName})
-
-        {-# INLINE vkPMarkerNameByteOffset #-}
-        vkPMarkerNameByteOffset ~_
-          = #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, pNext})
 
-        {-# INLINE readVkPMarkerName #-}
-        readVkPMarkerName p
-          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pNext}
 
-        {-# INLINE writeVkPMarkerName #-}
-        writeVkPMarkerName p
-          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDebugMarkerMarkerInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pMarkerName" VkDebugMarkerMarkerInfoEXT where
@@ -211,46 +160,22 @@
         fieldOffset
           = #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
 
-instance CanReadField "pMarkerName" VkDebugMarkerMarkerInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPMarkerName
-
-        {-# INLINE readField #-}
-        readField = readVkPMarkerName
-
-instance CanWriteField "pMarkerName" VkDebugMarkerMarkerInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPMarkerName
-
 instance {-# OVERLAPPING #-}
-         HasVkColorArray VkDebugMarkerMarkerInfoEXT where
-        type VkColorArrayMType VkDebugMarkerMarkerInfoEXT =
-             #{type float}
-
-        {-# NOINLINE vkColorArray #-}
-        vkColorArray x idx
+         CanReadField "pMarkerName" VkDebugMarkerMarkerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkDebugMarkerMarkerInfoEXT, color}))
-
-        {-# INLINE vkColorArrayByteOffset #-}
-        vkColorArrayByteOffset ~_
-          = #{offset VkDebugMarkerMarkerInfoEXT, color}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName})
 
-        {-# INLINE readVkColorArray #-}
-        readVkColorArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkDebugMarkerMarkerInfoEXT, color})
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
 
-        {-# INLINE writeVkColorArray #-}
-        writeVkColorArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkDebugMarkerMarkerInfoEXT, color})
+instance {-# OVERLAPPING #-}
+         CanWriteField "pMarkerName" VkDebugMarkerMarkerInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
 
 instance {-# OVERLAPPING #-}
          HasField "color" VkDebugMarkerMarkerInfoEXT where
@@ -268,7 +193,8 @@
         fieldOffset
           = #{offset VkDebugMarkerMarkerInfoEXT, color}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "color" idx VkDebugMarkerMarkerInfoEXT) =>
          CanReadFieldArray "color" idx VkDebugMarkerMarkerInfoEXT
          where
@@ -289,14 +215,23 @@
         fieldArrayLength = 4
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkColorArray x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkDebugMarkerMarkerInfoEXT, color} +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkColorArray x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkDebugMarkerMarkerInfoEXT, color} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "color" idx VkDebugMarkerMarkerInfoEXT) =>
          CanWriteFieldArray "color" idx VkDebugMarkerMarkerInfoEXT
          where
@@ -313,22 +248,35 @@
                        CanWriteFieldArray "color" 3 VkDebugMarkerMarkerInfoEXT #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkColorArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkDebugMarkerMarkerInfoEXT, color} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance Show VkDebugMarkerMarkerInfoEXT where
         showsPrec d x
           = showString "VkDebugMarkerMarkerInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPMarkerName = " .
-                            showsPrec d (vkPMarkerName x) .
+                          showString "pMarkerName = " .
+                            showsPrec d (getField @"pMarkerName" x) .
                               showString ", " .
-                                showString "vkColorArray = [" .
-                                  showsPrec d (map (vkColorArray x) [1 .. 4]) .
-                                    showChar ']' . showChar '}'
+                                (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectNameInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectNameInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectNameInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectNameInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDebugMarkerObjectNameInfoEXT
        (VkDebugMarkerObjectNameInfoEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT (VkDebugReportObjectTypeEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugMarkerObjectNameInfoEXT {
@@ -25,7 +25,7 @@
 --   >     const char* pObjectName;
 --   > } VkDebugMarkerObjectNameInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDebugMarkerObjectNameInfoEXT.html VkDebugMarkerObjectNameInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugMarkerObjectNameInfoEXT.html VkDebugMarkerObjectNameInfoEXT registry at www.khronos.org>
 data VkDebugMarkerObjectNameInfoEXT = VkDebugMarkerObjectNameInfoEXT## Addr##
                                                                       ByteArray##
 
@@ -79,27 +79,6 @@
         type StructExtends VkDebugMarkerObjectNameInfoEXT = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDebugMarkerObjectNameInfoEXT where
-        type VkSTypeMType VkDebugMarkerObjectNameInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDebugMarkerObjectNameInfoEXT where
         type FieldType "sType" VkDebugMarkerObjectNameInfoEXT =
              VkStructureType
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectNameInfoEXT, sType}
 
-instance CanReadField "sType" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDebugMarkerObjectNameInfoEXT where
-        type VkPNextMType VkDebugMarkerObjectNameInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDebugMarkerObjectNameInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDebugMarkerObjectNameInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDebugMarkerObjectNameInfoEXT where
@@ -162,38 +126,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkObjectType VkDebugMarkerObjectNameInfoEXT where
-        type VkObjectTypeMType VkDebugMarkerObjectNameInfoEXT =
-             VkDebugReportObjectTypeEXT
-
-        {-# NOINLINE vkObjectType #-}
-        vkObjectType x
+         CanReadField "pNext" VkDebugMarkerObjectNameInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, objectType})
-
-        {-# INLINE vkObjectTypeByteOffset #-}
-        vkObjectTypeByteOffset ~_
-          = #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, pNext})
 
-        {-# INLINE readVkObjectType #-}
-        readVkObjectType p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
 
-        {-# INLINE writeVkObjectType #-}
-        writeVkObjectType p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDebugMarkerObjectNameInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "objectType" VkDebugMarkerObjectNameInfoEXT where
@@ -213,39 +161,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
 
-instance CanReadField "objectType" VkDebugMarkerObjectNameInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkObjectType
-
-        {-# INLINE readField #-}
-        readField = readVkObjectType
-
-instance CanWriteField "objectType" VkDebugMarkerObjectNameInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkObjectType
-
 instance {-# OVERLAPPING #-}
-         HasVkObject VkDebugMarkerObjectNameInfoEXT where
-        type VkObjectMType VkDebugMarkerObjectNameInfoEXT = Word64
-
-        {-# NOINLINE vkObject #-}
-        vkObject x
+         CanReadField "objectType" VkDebugMarkerObjectNameInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, object})
-
-        {-# INLINE vkObjectByteOffset #-}
-        vkObjectByteOffset ~_
-          = #{offset VkDebugMarkerObjectNameInfoEXT, object}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, objectType})
 
-        {-# INLINE readVkObject #-}
-        readVkObject p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, object}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
 
-        {-# INLINE writeVkObject #-}
-        writeVkObject p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, object}
+instance {-# OVERLAPPING #-}
+         CanWriteField "objectType" VkDebugMarkerObjectNameInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
 
 instance {-# OVERLAPPING #-}
          HasField "object" VkDebugMarkerObjectNameInfoEXT where
@@ -262,38 +193,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectNameInfoEXT, object}
 
-instance CanReadField "object" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkObject
-
-        {-# INLINE readField #-}
-        readField = readVkObject
-
-instance CanWriteField "object" VkDebugMarkerObjectNameInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkObject
-
 instance {-# OVERLAPPING #-}
-         HasVkPObjectName VkDebugMarkerObjectNameInfoEXT where
-        type VkPObjectNameMType VkDebugMarkerObjectNameInfoEXT = CString
-
-        {-# NOINLINE vkPObjectName #-}
-        vkPObjectName x
+         CanReadField "object" VkDebugMarkerObjectNameInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName})
-
-        {-# INLINE vkPObjectNameByteOffset #-}
-        vkPObjectNameByteOffset ~_
-          = #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, object})
 
-        {-# INLINE readVkPObjectName #-}
-        readVkPObjectName p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, object}
 
-        {-# INLINE writeVkPObjectName #-}
-        writeVkPObjectName p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
+instance {-# OVERLAPPING #-}
+         CanWriteField "object" VkDebugMarkerObjectNameInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, object}
 
 instance {-# OVERLAPPING #-}
          HasField "pObjectName" VkDebugMarkerObjectNameInfoEXT where
@@ -313,33 +228,37 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
 
-instance CanReadField "pObjectName" VkDebugMarkerObjectNameInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPObjectName
+instance {-# OVERLAPPING #-}
+         CanReadField "pObjectName" VkDebugMarkerObjectNameInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName})
 
         {-# INLINE readField #-}
-        readField = readVkPObjectName
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
 
-instance CanWriteField "pObjectName" VkDebugMarkerObjectNameInfoEXT
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pObjectName" VkDebugMarkerObjectNameInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPObjectName
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
 
 instance Show VkDebugMarkerObjectNameInfoEXT where
         showsPrec d x
           = showString "VkDebugMarkerObjectNameInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkObjectType = " .
-                            showsPrec d (vkObjectType x) .
+                          showString "objectType = " .
+                            showsPrec d (getField @"objectType" x) .
                               showString ", " .
-                                showString "vkObject = " .
-                                  showsPrec d (vkObject x) .
+                                showString "object = " .
+                                  showsPrec d (getField @"object" x) .
                                     showString ", " .
-                                      showString "vkPObjectName = " .
-                                        showsPrec d (vkPObjectName x) . showChar '}'
+                                      showString "pObjectName = " .
+                                        showsPrec d (getField @"pObjectName" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectTagInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectTagInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectTagInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugMarkerObjectTagInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDebugMarkerObjectTagInfoEXT
        (VkDebugMarkerObjectTagInfoEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT (VkDebugReportObjectTypeEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugMarkerObjectTagInfoEXT {
@@ -27,7 +27,7 @@
 --   >     const void*        pTag;
 --   > } VkDebugMarkerObjectTagInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDebugMarkerObjectTagInfoEXT.html VkDebugMarkerObjectTagInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugMarkerObjectTagInfoEXT.html VkDebugMarkerObjectTagInfoEXT registry at www.khronos.org>
 data VkDebugMarkerObjectTagInfoEXT = VkDebugMarkerObjectTagInfoEXT## Addr##
                                                                     ByteArray##
 
@@ -82,27 +82,6 @@
         type StructExtends VkDebugMarkerObjectTagInfoEXT = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDebugMarkerObjectTagInfoEXT where
-        type VkSTypeMType VkDebugMarkerObjectTagInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDebugMarkerObjectTagInfoEXT where
         type FieldType "sType" VkDebugMarkerObjectTagInfoEXT =
              VkStructureType
@@ -118,37 +97,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, sType}
 
-instance CanReadField "sType" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDebugMarkerObjectTagInfoEXT where
-        type VkPNextMType VkDebugMarkerObjectTagInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDebugMarkerObjectTagInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDebugMarkerObjectTagInfoEXT where
@@ -165,38 +129,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkObjectType VkDebugMarkerObjectTagInfoEXT where
-        type VkObjectTypeMType VkDebugMarkerObjectTagInfoEXT =
-             VkDebugReportObjectTypeEXT
-
-        {-# NOINLINE vkObjectType #-}
-        vkObjectType x
+         CanReadField "pNext" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, objectType})
-
-        {-# INLINE vkObjectTypeByteOffset #-}
-        vkObjectTypeByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, pNext})
 
-        {-# INLINE readVkObjectType #-}
-        readVkObjectType p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
 
-        {-# INLINE writeVkObjectType #-}
-        writeVkObjectType p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDebugMarkerObjectTagInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "objectType" VkDebugMarkerObjectTagInfoEXT where
@@ -216,39 +164,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
 
-instance CanReadField "objectType" VkDebugMarkerObjectTagInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkObjectType
-
-        {-# INLINE readField #-}
-        readField = readVkObjectType
-
-instance CanWriteField "objectType" VkDebugMarkerObjectTagInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkObjectType
-
 instance {-# OVERLAPPING #-}
-         HasVkObject VkDebugMarkerObjectTagInfoEXT where
-        type VkObjectMType VkDebugMarkerObjectTagInfoEXT = Word64
-
-        {-# NOINLINE vkObject #-}
-        vkObject x
+         CanReadField "objectType" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, object})
-
-        {-# INLINE vkObjectByteOffset #-}
-        vkObjectByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, object}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, objectType})
 
-        {-# INLINE readVkObject #-}
-        readVkObject p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, object}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
 
-        {-# INLINE writeVkObject #-}
-        writeVkObject p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, object}
+instance {-# OVERLAPPING #-}
+         CanWriteField "objectType" VkDebugMarkerObjectTagInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
 
 instance {-# OVERLAPPING #-}
          HasField "object" VkDebugMarkerObjectTagInfoEXT where
@@ -265,37 +196,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, object}
 
-instance CanReadField "object" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkObject
-
-        {-# INLINE readField #-}
-        readField = readVkObject
-
-instance CanWriteField "object" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkObject
-
 instance {-# OVERLAPPING #-}
-         HasVkTagName VkDebugMarkerObjectTagInfoEXT where
-        type VkTagNameMType VkDebugMarkerObjectTagInfoEXT = Word64
-
-        {-# NOINLINE vkTagName #-}
-        vkTagName x
+         CanReadField "object" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, tagName})
-
-        {-# INLINE vkTagNameByteOffset #-}
-        vkTagNameByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, object})
 
-        {-# INLINE readVkTagName #-}
-        readVkTagName p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, object}
 
-        {-# INLINE writeVkTagName #-}
-        writeVkTagName p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
+instance {-# OVERLAPPING #-}
+         CanWriteField "object" VkDebugMarkerObjectTagInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, object}
 
 instance {-# OVERLAPPING #-}
          HasField "tagName" VkDebugMarkerObjectTagInfoEXT where
@@ -312,38 +228,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
 
-instance CanReadField "tagName" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkTagName
-
-        {-# INLINE readField #-}
-        readField = readVkTagName
-
-instance CanWriteField "tagName" VkDebugMarkerObjectTagInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTagName
-
 instance {-# OVERLAPPING #-}
-         HasVkTagSize VkDebugMarkerObjectTagInfoEXT where
-        type VkTagSizeMType VkDebugMarkerObjectTagInfoEXT = CSize
-
-        {-# NOINLINE vkTagSize #-}
-        vkTagSize x
+         CanReadField "tagName" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, tagSize})
-
-        {-# INLINE vkTagSizeByteOffset #-}
-        vkTagSizeByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, tagName})
 
-        {-# INLINE readVkTagSize #-}
-        readVkTagSize p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
 
-        {-# INLINE writeVkTagSize #-}
-        writeVkTagSize p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
+instance {-# OVERLAPPING #-}
+         CanWriteField "tagName" VkDebugMarkerObjectTagInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
 
 instance {-# OVERLAPPING #-}
          HasField "tagSize" VkDebugMarkerObjectTagInfoEXT where
@@ -360,38 +260,22 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
 
-instance CanReadField "tagSize" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkTagSize
-
-        {-# INLINE readField #-}
-        readField = readVkTagSize
-
-instance CanWriteField "tagSize" VkDebugMarkerObjectTagInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTagSize
-
 instance {-# OVERLAPPING #-}
-         HasVkPTag VkDebugMarkerObjectTagInfoEXT where
-        type VkPTagMType VkDebugMarkerObjectTagInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPTag #-}
-        vkPTag x
+         CanReadField "tagSize" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, pTag})
-
-        {-# INLINE vkPTagByteOffset #-}
-        vkPTagByteOffset ~_
-          = #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, tagSize})
 
-        {-# INLINE readVkPTag #-}
-        readVkPTag p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
 
-        {-# INLINE writeVkPTag #-}
-        writeVkPTag p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
+instance {-# OVERLAPPING #-}
+         CanWriteField "tagSize" VkDebugMarkerObjectTagInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
 
 instance {-# OVERLAPPING #-}
          HasField "pTag" VkDebugMarkerObjectTagInfoEXT where
@@ -408,37 +292,43 @@
         fieldOffset
           = #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
 
-instance CanReadField "pTag" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPTag
+instance {-# OVERLAPPING #-}
+         CanReadField "pTag" VkDebugMarkerObjectTagInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, pTag})
 
         {-# INLINE readField #-}
-        readField = readVkPTag
+        readField p
+          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
 
-instance CanWriteField "pTag" VkDebugMarkerObjectTagInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pTag" VkDebugMarkerObjectTagInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPTag
+        writeField p
+          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
 
 instance Show VkDebugMarkerObjectTagInfoEXT where
         showsPrec d x
           = showString "VkDebugMarkerObjectTagInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkObjectType = " .
-                            showsPrec d (vkObjectType x) .
+                          showString "objectType = " .
+                            showsPrec d (getField @"objectType" x) .
                               showString ", " .
-                                showString "vkObject = " .
-                                  showsPrec d (vkObject x) .
+                                showString "object = " .
+                                  showsPrec d (getField @"object" x) .
                                     showString ", " .
-                                      showString "vkTagName = " .
-                                        showsPrec d (vkTagName x) .
+                                      showString "tagName = " .
+                                        showsPrec d (getField @"tagName" x) .
                                           showString ", " .
-                                            showString "vkTagSize = " .
-                                              showsPrec d (vkTagSize x) .
+                                            showString "tagSize = " .
+                                              showsPrec d (getField @"tagSize" x) .
                                                 showString ", " .
-                                                  showString "vkPTag = " .
-                                                    showsPrec d (vkPTag x) . showChar '}'
+                                                  showString "pTag = " .
+                                                    showsPrec d (getField @"pTag" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugReportCallbackCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugReportCallbackCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugReportCallbackCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugReportCallbackCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDebugReportCallbackCreateInfoEXT
        (VkDebugReportCallbackCreateInfoEXT(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
 import           Graphics.Vulkan.Types.Funcpointers                (PFN_vkDebugReportCallbackEXT)
 import           Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo (VkInstanceCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugReportCallbackCreateInfoEXT {
@@ -27,7 +27,7 @@
 --   >     void*            pUserData;
 --   > } VkDebugReportCallbackCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDebugReportCallbackCreateInfoEXT.html VkDebugReportCallbackCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugReportCallbackCreateInfoEXT.html VkDebugReportCallbackCreateInfoEXT registry at www.khronos.org>
 data VkDebugReportCallbackCreateInfoEXT = VkDebugReportCallbackCreateInfoEXT## Addr##
                                                                               ByteArray##
 
@@ -83,28 +83,6 @@
              '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDebugReportCallbackCreateInfoEXT where
-        type VkSTypeMType VkDebugReportCallbackCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDebugReportCallbackCreateInfoEXT where
         type FieldType "sType" VkDebugReportCallbackCreateInfoEXT =
              VkStructureType
@@ -122,39 +100,22 @@
         fieldOffset
           = #{offset VkDebugReportCallbackCreateInfoEXT, sType}
 
-instance CanReadField "sType" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDebugReportCallbackCreateInfoEXT where
-        type VkPNextMType VkDebugReportCallbackCreateInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDebugReportCallbackCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDebugReportCallbackCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDebugReportCallbackCreateInfoEXT where
@@ -174,40 +135,22 @@
         fieldOffset
           = #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkDebugReportCallbackCreateInfoEXT where
-        type VkFlagsMType VkDebugReportCallbackCreateInfoEXT =
-             VkDebugReportFlagsEXT
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkDebugReportCallbackCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDebugReportCallbackCreateInfoEXT, flags}
+              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDebugReportCallbackCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkDebugReportCallbackCreateInfoEXT where
@@ -227,40 +170,22 @@
         fieldOffset
           = #{offset VkDebugReportCallbackCreateInfoEXT, flags}
 
-instance CanReadField "flags" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPfnCallback VkDebugReportCallbackCreateInfoEXT where
-        type VkPfnCallbackMType VkDebugReportCallbackCreateInfoEXT =
-             PFN_vkDebugReportCallbackEXT
-
-        {-# NOINLINE vkPfnCallback #-}
-        vkPfnCallback x
+         CanReadField "flags" VkDebugReportCallbackCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback})
-
-        {-# INLINE vkPfnCallbackByteOffset #-}
-        vkPfnCallbackByteOffset ~_
-          = #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
+              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, flags})
 
-        {-# INLINE readVkPfnCallback #-}
-        readVkPfnCallback p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, flags}
 
-        {-# INLINE writeVkPfnCallback #-}
-        writeVkPfnCallback p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDebugReportCallbackCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pfnCallback" VkDebugReportCallbackCreateInfoEXT where
@@ -280,41 +205,23 @@
         fieldOffset
           = #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
 
-instance CanReadField "pfnCallback"
-           VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPfnCallback
+instance {-# OVERLAPPING #-}
+         CanReadField "pfnCallback" VkDebugReportCallbackCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback})
 
         {-# INLINE readField #-}
-        readField = readVkPfnCallback
+        readField p
+          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
 
-instance CanWriteField "pfnCallback"
-           VkDebugReportCallbackCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "pfnCallback" VkDebugReportCallbackCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPfnCallback
-
-instance {-# OVERLAPPING #-}
-         HasVkPUserData VkDebugReportCallbackCreateInfoEXT where
-        type VkPUserDataMType VkDebugReportCallbackCreateInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPUserData #-}
-        vkPUserData x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pUserData})
-
-        {-# INLINE vkPUserDataByteOffset #-}
-        vkPUserDataByteOffset ~_
-          = #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
-
-        {-# INLINE readVkPUserData #-}
-        readVkPUserData p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
-
-        {-# INLINE writeVkPUserData #-}
-        writeVkPUserData p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
+        writeField p
+          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
 
 instance {-# OVERLAPPING #-}
          HasField "pUserData" VkDebugReportCallbackCreateInfoEXT where
@@ -334,35 +241,37 @@
         fieldOffset
           = #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
 
-instance CanReadField "pUserData"
-           VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPUserData
+instance {-# OVERLAPPING #-}
+         CanReadField "pUserData" VkDebugReportCallbackCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pUserData})
 
         {-# INLINE readField #-}
-        readField = readVkPUserData
+        readField p
+          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
 
-instance CanWriteField "pUserData"
-           VkDebugReportCallbackCreateInfoEXT
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pUserData" VkDebugReportCallbackCreateInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPUserData
+        writeField p
+          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
 
 instance Show VkDebugReportCallbackCreateInfoEXT where
         showsPrec d x
           = showString "VkDebugReportCallbackCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkPfnCallback = " .
-                                  showsPrec d (vkPfnCallback x) .
+                                showString "pfnCallback = " .
+                                  showsPrec d (getField @"pfnCallback" x) .
                                     showString ", " .
-                                      showString "vkPUserData = " .
-                                        showsPrec d (vkPUserData x) . showChar '}'
+                                      showString "pUserData = " .
+                                        showsPrec d (getField @"pUserData" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsLabelEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsLabelEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsLabelEXT.hsc
@@ -0,0 +1,272 @@
+#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.VkDebugUtilsLabelEXT
+       (VkDebugUtilsLabelEXT(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           GHC.TypeLits                               (KnownNat, natVal') -- ' closing tick for hsc2hs
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDebugUtilsLabelEXT {
+--   >     VkStructureType sType;
+--   >     const void*                            pNext;
+--   >     const char*      pLabelName;
+--   >     float                  color[4];
+--   > } VkDebugUtilsLabelEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugUtilsLabelEXT.html VkDebugUtilsLabelEXT registry at www.khronos.org>
+data VkDebugUtilsLabelEXT = VkDebugUtilsLabelEXT## Addr## ByteArray##
+
+instance Eq VkDebugUtilsLabelEXT where
+        (VkDebugUtilsLabelEXT## a _) == x@(VkDebugUtilsLabelEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDebugUtilsLabelEXT where
+        (VkDebugUtilsLabelEXT## a _) `compare` x@(VkDebugUtilsLabelEXT## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDebugUtilsLabelEXT where
+        unsafeAddr (VkDebugUtilsLabelEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDebugUtilsLabelEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDebugUtilsLabelEXT## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 #-}
+         (KnownNat idx, IndexInBounds "color" idx VkDebugUtilsLabelEXT) =>
+         CanReadFieldArray "color" idx VkDebugUtilsLabelEXT
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "color" 0 VkDebugUtilsLabelEXT #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "color" 1 VkDebugUtilsLabelEXT #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "color" 2 VkDebugUtilsLabelEXT #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "color" 3 VkDebugUtilsLabelEXT #-}
+        type FieldArrayLength "color" VkDebugUtilsLabelEXT = 4
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 4
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkDebugUtilsLabelEXT, color} +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkDebugUtilsLabelEXT, color} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "color" idx VkDebugUtilsLabelEXT) =>
+         CanWriteFieldArray "color" idx VkDebugUtilsLabelEXT
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "color" 0 VkDebugUtilsLabelEXT #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "color" 1 VkDebugUtilsLabelEXT #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "color" 2 VkDebugUtilsLabelEXT #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "color" 3 VkDebugUtilsLabelEXT #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkDebugUtilsLabelEXT, color} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsMessengerCallbackDataEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsMessengerCallbackDataEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsMessengerCallbackDataEXT.hsc
@@ -0,0 +1,622 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCallbackDataEXT
+       (VkDebugUtilsMessengerCallbackDataEXT(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Bitmasks                             (VkDebugUtilsMessengerCallbackDataFlagsEXT)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsLabelEXT          (VkDebugUtilsLabelEXT)
+import           Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectNameInfoEXT (VkDebugUtilsObjectNameInfoEXT)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDebugUtilsMessengerCallbackDataEXT {
+--   >     VkStructureType sType;
+--   >     const void*                                                        pNext;
+--   >     VkDebugUtilsMessengerCallbackDataFlagsEXT                          flags;
+--   >     const char*                                  pMessageIdName;
+--   >     int32_t                                                            messageIdNumber;
+--   >     const char*                                                  pMessage;
+--   >     uint32_t                                                           queueLabelCount;
+--   >     VkDebugUtilsLabelEXT*  pQueueLabels;
+--   >     uint32_t                                                           cmdBufLabelCount;
+--   >     VkDebugUtilsLabelEXT* pCmdBufLabels;
+--   >     uint32_t                                                                           objectCount;
+--   >     VkDebugUtilsObjectNameInfoEXT*             pObjects;
+--   > } VkDebugUtilsMessengerCallbackDataEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugUtilsMessengerCallbackDataEXT.html VkDebugUtilsMessengerCallbackDataEXT registry at www.khronos.org>
+data VkDebugUtilsMessengerCallbackDataEXT = VkDebugUtilsMessengerCallbackDataEXT## Addr##
+                                                                                  ByteArray##
+
+instance Eq VkDebugUtilsMessengerCallbackDataEXT where
+        (VkDebugUtilsMessengerCallbackDataEXT## a _) ==
+          x@(VkDebugUtilsMessengerCallbackDataEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDebugUtilsMessengerCallbackDataEXT where
+        (VkDebugUtilsMessengerCallbackDataEXT## a _) `compare`
+          x@(VkDebugUtilsMessengerCallbackDataEXT## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDebugUtilsMessengerCallbackDataEXT
+         where
+        unsafeAddr (VkDebugUtilsMessengerCallbackDataEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDebugUtilsMessengerCallbackDataEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDebugUtilsMessengerCallbackDataEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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"
+           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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsMessengerCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsMessengerCreateInfoEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsMessengerCreateInfoEXT.hsc
@@ -0,0 +1,371 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCreateInfoEXT
+       (VkDebugUtilsMessengerCreateInfoEXT(..)) where
+import           Foreign.Storable                                               (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Bitmasks                                 (VkDebugUtilsMessengerCreateFlagsEXT)
+import           Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageSeverityFlagsEXT (VkDebugUtilsMessageSeverityFlagsEXT)
+import           Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageTypeFlagsEXT     (VkDebugUtilsMessageTypeFlagsEXT)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                     (VkStructureType)
+import           Graphics.Vulkan.Types.Funcpointers                             (PFN_vkDebugUtilsMessengerCallbackEXT)
+import           Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo              (VkInstanceCreateInfo)
+import           System.IO.Unsafe                                               (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDebugUtilsMessengerCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                                          pNext;
+--   >     VkDebugUtilsMessengerCreateFlagsEXT  flags;
+--   >     VkDebugUtilsMessageSeverityFlagsEXT                  messageSeverity;
+--   >     VkDebugUtilsMessageTypeFlagsEXT                      messageType;
+--   >     PFN_vkDebugUtilsMessengerCallbackEXT                 pfnUserCallback;
+--   >     void*                                pUserData;
+--   > } VkDebugUtilsMessengerCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugUtilsMessengerCreateInfoEXT.html VkDebugUtilsMessengerCreateInfoEXT registry at www.khronos.org>
+data VkDebugUtilsMessengerCreateInfoEXT = VkDebugUtilsMessengerCreateInfoEXT## Addr##
+                                                                              ByteArray##
+
+instance Eq VkDebugUtilsMessengerCreateInfoEXT where
+        (VkDebugUtilsMessengerCreateInfoEXT## a _) ==
+          x@(VkDebugUtilsMessengerCreateInfoEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDebugUtilsMessengerCreateInfoEXT where
+        (VkDebugUtilsMessengerCreateInfoEXT## a _) `compare`
+          x@(VkDebugUtilsMessengerCreateInfoEXT## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDebugUtilsMessengerCreateInfoEXT where
+        unsafeAddr (VkDebugUtilsMessengerCreateInfoEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDebugUtilsMessengerCreateInfoEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDebugUtilsMessengerCreateInfoEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsObjectNameInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsObjectNameInfoEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsObjectNameInfoEXT.hsc
@@ -0,0 +1,267 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectNameInfoEXT
+       (VkDebugUtilsObjectNameInfoEXT(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkObjectType    (VkObjectType)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDebugUtilsObjectNameInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                                            pNext;
+--   >     VkObjectType                                           objectType;
+--   >     uint64_t                                               objectHandle;
+--   >     const char*      pObjectName;
+--   > } VkDebugUtilsObjectNameInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugUtilsObjectNameInfoEXT.html VkDebugUtilsObjectNameInfoEXT registry at www.khronos.org>
+data VkDebugUtilsObjectNameInfoEXT = VkDebugUtilsObjectNameInfoEXT## Addr##
+                                                                    ByteArray##
+
+instance Eq VkDebugUtilsObjectNameInfoEXT where
+        (VkDebugUtilsObjectNameInfoEXT## a _) ==
+          x@(VkDebugUtilsObjectNameInfoEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDebugUtilsObjectNameInfoEXT where
+        (VkDebugUtilsObjectNameInfoEXT## a _) `compare`
+          x@(VkDebugUtilsObjectNameInfoEXT## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDebugUtilsObjectNameInfoEXT where
+        unsafeAddr (VkDebugUtilsObjectNameInfoEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDebugUtilsObjectNameInfoEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDebugUtilsObjectNameInfoEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsObjectTagInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsObjectTagInfoEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDebugUtilsObjectTagInfoEXT.hsc
@@ -0,0 +1,336 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectTagInfoEXT
+       (VkDebugUtilsObjectTagInfoEXT(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkObjectType    (VkObjectType)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDebugUtilsObjectTagInfoEXT.html VkDebugUtilsObjectTagInfoEXT registry at www.khronos.org>
+data VkDebugUtilsObjectTagInfoEXT = VkDebugUtilsObjectTagInfoEXT## Addr##
+                                                                  ByteArray##
+
+instance Eq VkDebugUtilsObjectTagInfoEXT where
+        (VkDebugUtilsObjectTagInfoEXT## a _) ==
+          x@(VkDebugUtilsObjectTagInfoEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDebugUtilsObjectTagInfoEXT where
+        (VkDebugUtilsObjectTagInfoEXT## a _) `compare`
+          x@(VkDebugUtilsObjectTagInfoEXT## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDebugUtilsObjectTagInfoEXT where
+        unsafeAddr (VkDebugUtilsObjectTagInfoEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDebugUtilsObjectTagInfoEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDebugUtilsObjectTagInfoEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationBufferCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationBufferCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationBufferCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationBufferCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDedicatedAllocationBufferCreateInfoNV
        (VkDedicatedAllocationBufferCreateInfoNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.BaseTypes                 (VkBool32)
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo (VkBufferCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDedicatedAllocationBufferCreateInfoNV {
@@ -24,7 +24,7 @@
 --   >     VkBool32                         dedicatedAllocation;
 --   > } VkDedicatedAllocationBufferCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDedicatedAllocationBufferCreateInfoNV.html VkDedicatedAllocationBufferCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDedicatedAllocationBufferCreateInfoNV.html VkDedicatedAllocationBufferCreateInfoNV registry at www.khronos.org>
 data VkDedicatedAllocationBufferCreateInfoNV = VkDedicatedAllocationBufferCreateInfoNV## Addr##
                                                                                         ByteArray##
 
@@ -83,28 +83,6 @@
              '[VkBufferCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDedicatedAllocationBufferCreateInfoNV where
-        type VkSTypeMType VkDedicatedAllocationBufferCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDedicatedAllocationBufferCreateInfoNV where
         type FieldType "sType" VkDedicatedAllocationBufferCreateInfoNV =
              VkStructureType
@@ -122,42 +100,22 @@
         fieldOffset
           = #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkDedicatedAllocationBufferCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkDedicatedAllocationBufferCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDedicatedAllocationBufferCreateInfoNV where
-        type VkPNextMType VkDedicatedAllocationBufferCreateInfoNV =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDedicatedAllocationBufferCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDedicatedAllocationBufferCreateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDedicatedAllocationBufferCreateInfoNV where
@@ -177,44 +135,22 @@
         fieldOffset
           = #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkDedicatedAllocationBufferCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkDedicatedAllocationBufferCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkDedicatedAllocation VkDedicatedAllocationBufferCreateInfoNV
-         where
-        type VkDedicatedAllocationMType
-               VkDedicatedAllocationBufferCreateInfoNV
-             = VkBool32
-
-        {-# NOINLINE vkDedicatedAllocation #-}
-        vkDedicatedAllocation x
+         CanReadField "pNext" VkDedicatedAllocationBufferCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation})
-
-        {-# INLINE vkDedicatedAllocationByteOffset #-}
-        vkDedicatedAllocationByteOffset ~_
-          = #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext})
 
-        {-# INLINE readVkDedicatedAllocation #-}
-        readVkDedicatedAllocation p
-          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
 
-        {-# INLINE writeVkDedicatedAllocation #-}
-        writeVkDedicatedAllocation p
-          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDedicatedAllocationBufferCreateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "dedicatedAllocation"
@@ -241,29 +177,35 @@
         fieldOffset
           = #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
 
-instance CanReadField "dedicatedAllocation"
+instance {-# OVERLAPPING #-}
+         CanReadField "dedicatedAllocation"
            VkDedicatedAllocationBufferCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkDedicatedAllocation
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation})
 
         {-# INLINE readField #-}
-        readField = readVkDedicatedAllocation
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
 
-instance CanWriteField "dedicatedAllocation"
+instance {-# OVERLAPPING #-}
+         CanWriteField "dedicatedAllocation"
            VkDedicatedAllocationBufferCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDedicatedAllocation
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
 
 instance Show VkDedicatedAllocationBufferCreateInfoNV where
         showsPrec d x
           = showString "VkDedicatedAllocationBufferCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDedicatedAllocation = " .
-                            showsPrec d (vkDedicatedAllocation x) . showChar '}'
+                          showString "dedicatedAllocation = " .
+                            showsPrec d (getField @"dedicatedAllocation" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationImageCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationImageCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationImageCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationImageCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDedicatedAllocationImageCreateInfoNV
        (VkDedicatedAllocationImageCreateInfoNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.BaseTypes                (VkBool32)
 import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo (VkImageCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDedicatedAllocationImageCreateInfoNV {
@@ -24,7 +24,7 @@
 --   >     VkBool32                         dedicatedAllocation;
 --   > } VkDedicatedAllocationImageCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDedicatedAllocationImageCreateInfoNV.html VkDedicatedAllocationImageCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDedicatedAllocationImageCreateInfoNV.html VkDedicatedAllocationImageCreateInfoNV registry at www.khronos.org>
 data VkDedicatedAllocationImageCreateInfoNV = VkDedicatedAllocationImageCreateInfoNV## Addr##
                                                                                       ByteArray##
 
@@ -82,28 +82,6 @@
              '[VkImageCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDedicatedAllocationImageCreateInfoNV where
-        type VkSTypeMType VkDedicatedAllocationImageCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDedicatedAllocationImageCreateInfoNV where
         type FieldType "sType" VkDedicatedAllocationImageCreateInfoNV =
              VkStructureType
@@ -121,41 +99,22 @@
         fieldOffset
           = #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkDedicatedAllocationImageCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkDedicatedAllocationImageCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDedicatedAllocationImageCreateInfoNV where
-        type VkPNextMType VkDedicatedAllocationImageCreateInfoNV = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDedicatedAllocationImageCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDedicatedAllocationImageCreateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDedicatedAllocationImageCreateInfoNV where
@@ -175,44 +134,22 @@
         fieldOffset
           = #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkDedicatedAllocationImageCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkDedicatedAllocationImageCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkDedicatedAllocation VkDedicatedAllocationImageCreateInfoNV
-         where
-        type VkDedicatedAllocationMType
-               VkDedicatedAllocationImageCreateInfoNV
-             = VkBool32
-
-        {-# NOINLINE vkDedicatedAllocation #-}
-        vkDedicatedAllocation x
+         CanReadField "pNext" VkDedicatedAllocationImageCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation})
-
-        {-# INLINE vkDedicatedAllocationByteOffset #-}
-        vkDedicatedAllocationByteOffset ~_
-          = #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, pNext})
 
-        {-# INLINE readVkDedicatedAllocation #-}
-        readVkDedicatedAllocation p
-          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
 
-        {-# INLINE writeVkDedicatedAllocation #-}
-        writeVkDedicatedAllocation p
-          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDedicatedAllocationImageCreateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "dedicatedAllocation"
@@ -239,29 +176,35 @@
         fieldOffset
           = #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
 
-instance CanReadField "dedicatedAllocation"
+instance {-# OVERLAPPING #-}
+         CanReadField "dedicatedAllocation"
            VkDedicatedAllocationImageCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkDedicatedAllocation
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation})
 
         {-# INLINE readField #-}
-        readField = readVkDedicatedAllocation
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
 
-instance CanWriteField "dedicatedAllocation"
+instance {-# OVERLAPPING #-}
+         CanWriteField "dedicatedAllocation"
            VkDedicatedAllocationImageCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDedicatedAllocation
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
 
 instance Show VkDedicatedAllocationImageCreateInfoNV where
         showsPrec d x
           = showString "VkDedicatedAllocationImageCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDedicatedAllocation = " .
-                            showsPrec d (vkDedicatedAllocation x) . showChar '}'
+                          showString "dedicatedAllocation = " .
+                            showsPrec d (getField @"dedicatedAllocation" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationMemoryAllocateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationMemoryAllocateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationMemoryAllocateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDedicatedAllocationMemoryAllocateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDedicatedAllocationMemoryAllocateInfoNV
        (VkDedicatedAllocationMemoryAllocateInfoNV(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Handles                     (VkBuffer,
                                                                     VkImage)
 import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
@@ -26,7 +26,7 @@
 --   >     VkBuffer         buffer;
 --   > } VkDedicatedAllocationMemoryAllocateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html VkDedicatedAllocationMemoryAllocateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html VkDedicatedAllocationMemoryAllocateInfoNV registry at www.khronos.org>
 data VkDedicatedAllocationMemoryAllocateInfoNV = VkDedicatedAllocationMemoryAllocateInfoNV## Addr##
                                                                                             ByteArray##
 
@@ -88,28 +88,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDedicatedAllocationMemoryAllocateInfoNV where
-        type VkSTypeMType VkDedicatedAllocationMemoryAllocateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDedicatedAllocationMemoryAllocateInfoNV where
         type FieldType "sType" VkDedicatedAllocationMemoryAllocateInfoNV =
              VkStructureType
@@ -129,42 +107,24 @@
         fieldOffset
           = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDedicatedAllocationMemoryAllocateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
 
-instance CanWriteField "sType"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDedicatedAllocationMemoryAllocateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDedicatedAllocationMemoryAllocateInfoNV where
-        type VkPNextMType VkDedicatedAllocationMemoryAllocateInfoNV =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDedicatedAllocationMemoryAllocateInfoNV where
@@ -186,42 +146,24 @@
         fieldOffset
           = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDedicatedAllocationMemoryAllocateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
 
-instance CanWriteField "pNext"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDedicatedAllocationMemoryAllocateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkImage VkDedicatedAllocationMemoryAllocateInfoNV where
-        type VkImageMType VkDedicatedAllocationMemoryAllocateInfoNV =
-             VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "image" VkDedicatedAllocationMemoryAllocateInfoNV where
@@ -243,42 +185,24 @@
         fieldOffset
           = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
 
-instance CanReadField "image"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "image" VkDedicatedAllocationMemoryAllocateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkImage
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image})
 
         {-# INLINE readField #-}
-        readField = readVkImage
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
 
-instance CanWriteField "image"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "image" VkDedicatedAllocationMemoryAllocateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkImage
-
-instance {-# OVERLAPPING #-}
-         HasVkBuffer VkDedicatedAllocationMemoryAllocateInfoNV where
-        type VkBufferMType VkDedicatedAllocationMemoryAllocateInfoNV =
-             VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
 
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkDedicatedAllocationMemoryAllocateInfoNV where
@@ -301,31 +225,36 @@
         fieldOffset
           = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
 
-instance CanReadField "buffer"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "buffer" VkDedicatedAllocationMemoryAllocateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkBuffer
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer})
 
         {-# INLINE readField #-}
-        readField = readVkBuffer
+        readField p
+          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
 
-instance CanWriteField "buffer"
-           VkDedicatedAllocationMemoryAllocateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkDedicatedAllocationMemoryAllocateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkBuffer
+        writeField p
+          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
 
 instance Show VkDedicatedAllocationMemoryAllocateInfoNV where
         showsPrec d x
           = showString "VkDedicatedAllocationMemoryAllocateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkImage = " .
-                            showsPrec d (vkImage x) .
+                          showString "image = " .
+                            showsPrec d (getField @"image" x) .
                               showString ", " .
-                                showString "vkBuffer = " . showsPrec d (vkBuffer x) . showChar '}'
+                                showString "buffer = " .
+                                  showsPrec d (getField @"buffer" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorBufferInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorBufferInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorBufferInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorBufferInfo.hsc
@@ -5,17 +5,17 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorBufferInfo
        (VkDescriptorBufferInfo(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes     (VkDeviceSize)
-import           Graphics.Vulkan.Types.Handles       (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes  (VkDeviceSize)
+import           Graphics.Vulkan.Types.Handles    (VkBuffer)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorBufferInfo {
 --   >     VkBuffer               buffer;
@@ -23,7 +23,7 @@
 --   >     VkDeviceSize           range;
 --   > } VkDescriptorBufferInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorBufferInfo.html VkDescriptorBufferInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorBufferInfo.html VkDescriptorBufferInfo registry at www.khronos.org>
 data VkDescriptorBufferInfo = VkDescriptorBufferInfo## Addr##
                                                       ByteArray##
 
@@ -72,27 +72,6 @@
         type ReturnedOnly VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDescriptorBufferInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkBuffer VkDescriptorBufferInfo
-         where
-        type VkBufferMType VkDescriptorBufferInfo = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkDescriptorBufferInfo, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkDescriptorBufferInfo, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkDescriptorBufferInfo, buffer}
-
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkDescriptorBufferInfo where
         type FieldType "buffer" VkDescriptorBufferInfo = VkBuffer
@@ -107,37 +86,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDescriptorBufferInfo, buffer}
 
-instance CanReadField "buffer" VkDescriptorBufferInfo where
-        {-# INLINE getField #-}
-        getField = vkBuffer
+instance {-# OVERLAPPING #-}
+         CanReadField "buffer" VkDescriptorBufferInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, buffer})
 
         {-# INLINE readField #-}
-        readField = readVkBuffer
+        readField p
+          = peekByteOff p #{offset VkDescriptorBufferInfo, buffer}
 
-instance CanWriteField "buffer" VkDescriptorBufferInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkDescriptorBufferInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance {-# OVERLAPPING #-} HasVkOffset VkDescriptorBufferInfo
-         where
-        type VkOffsetMType VkDescriptorBufferInfo = VkDeviceSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkDescriptorBufferInfo, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkDescriptorBufferInfo, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkDescriptorBufferInfo, offset}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorBufferInfo, buffer}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkDescriptorBufferInfo where
@@ -153,37 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDescriptorBufferInfo, offset}
 
-instance CanReadField "offset" VkDescriptorBufferInfo where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkDescriptorBufferInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkDescriptorBufferInfo, offset}
 
-instance CanWriteField "offset" VkDescriptorBufferInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkDescriptorBufferInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkRange VkDescriptorBufferInfo
-         where
-        type VkRangeMType VkDescriptorBufferInfo = VkDeviceSize
-
-        {-# NOINLINE vkRange #-}
-        vkRange x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, range})
-
-        {-# INLINE vkRangeByteOffset #-}
-        vkRangeByteOffset ~_
-          = #{offset VkDescriptorBufferInfo, range}
-
-        {-# INLINE readVkRange #-}
-        readVkRange p
-          = peekByteOff p #{offset VkDescriptorBufferInfo, range}
-
-        {-# INLINE writeVkRange #-}
-        writeVkRange p
-          = pokeByteOff p #{offset VkDescriptorBufferInfo, range}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorBufferInfo, offset}
 
 instance {-# OVERLAPPING #-}
          HasField "range" VkDescriptorBufferInfo where
@@ -199,24 +148,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDescriptorBufferInfo, range}
 
-instance CanReadField "range" VkDescriptorBufferInfo where
-        {-# INLINE getField #-}
-        getField = vkRange
+instance {-# OVERLAPPING #-}
+         CanReadField "range" VkDescriptorBufferInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, range})
 
         {-# INLINE readField #-}
-        readField = readVkRange
+        readField p
+          = peekByteOff p #{offset VkDescriptorBufferInfo, range}
 
-instance CanWriteField "range" VkDescriptorBufferInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "range" VkDescriptorBufferInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkRange
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorBufferInfo, range}
 
 instance Show VkDescriptorBufferInfo where
         showsPrec d x
           = showString "VkDescriptorBufferInfo {" .
-              showString "vkBuffer = " .
-                showsPrec d (vkBuffer x) .
+              showString "buffer = " .
+                showsPrec d (getField @"buffer" x) .
                   showString ", " .
-                    showString "vkOffset = " .
-                      showsPrec d (vkOffset x) .
+                    showString "offset = " .
+                      showsPrec d (getField @"offset" x) .
                         showString ", " .
-                          showString "vkRange = " . showsPrec d (vkRange x) . showChar '}'
+                          showString "range = " .
+                            showsPrec d (getField @"range" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorImageInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorImageInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorImageInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorImageInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo
        (VkDescriptorImageInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkImageLayout (VkImageLayout)
 import           Graphics.Vulkan.Types.Handles            (VkImageView,
                                                            VkSampler)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorImageInfo {
@@ -24,7 +24,7 @@
 --   >     VkImageLayout   imageLayout;
 --   > } VkDescriptorImageInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorImageInfo.html VkDescriptorImageInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorImageInfo.html VkDescriptorImageInfo registry at www.khronos.org>
 data VkDescriptorImageInfo = VkDescriptorImageInfo## Addr##
                                                     ByteArray##
 
@@ -73,27 +73,6 @@
         type ReturnedOnly VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDescriptorImageInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSampler VkDescriptorImageInfo
-         where
-        type VkSamplerMType VkDescriptorImageInfo = VkSampler
-
-        {-# NOINLINE vkSampler #-}
-        vkSampler x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, sampler})
-
-        {-# INLINE vkSamplerByteOffset #-}
-        vkSamplerByteOffset ~_
-          = #{offset VkDescriptorImageInfo, sampler}
-
-        {-# INLINE readVkSampler #-}
-        readVkSampler p
-          = peekByteOff p #{offset VkDescriptorImageInfo, sampler}
-
-        {-# INLINE writeVkSampler #-}
-        writeVkSampler p
-          = pokeByteOff p #{offset VkDescriptorImageInfo, sampler}
-
 instance {-# OVERLAPPING #-}
          HasField "sampler" VkDescriptorImageInfo where
         type FieldType "sampler" VkDescriptorImageInfo = VkSampler
@@ -108,37 +87,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDescriptorImageInfo, sampler}
 
-instance CanReadField "sampler" VkDescriptorImageInfo where
-        {-# INLINE getField #-}
-        getField = vkSampler
+instance {-# OVERLAPPING #-}
+         CanReadField "sampler" VkDescriptorImageInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, sampler})
 
         {-# INLINE readField #-}
-        readField = readVkSampler
+        readField p
+          = peekByteOff p #{offset VkDescriptorImageInfo, sampler}
 
-instance CanWriteField "sampler" VkDescriptorImageInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampler" VkDescriptorImageInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSampler
-
-instance {-# OVERLAPPING #-} HasVkImageView VkDescriptorImageInfo
-         where
-        type VkImageViewMType VkDescriptorImageInfo = VkImageView
-
-        {-# NOINLINE vkImageView #-}
-        vkImageView x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, imageView})
-
-        {-# INLINE vkImageViewByteOffset #-}
-        vkImageViewByteOffset ~_
-          = #{offset VkDescriptorImageInfo, imageView}
-
-        {-# INLINE readVkImageView #-}
-        readVkImageView p
-          = peekByteOff p #{offset VkDescriptorImageInfo, imageView}
-
-        {-# INLINE writeVkImageView #-}
-        writeVkImageView p
-          = pokeByteOff p #{offset VkDescriptorImageInfo, imageView}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorImageInfo, sampler}
 
 instance {-# OVERLAPPING #-}
          HasField "imageView" VkDescriptorImageInfo where
@@ -155,37 +119,22 @@
         fieldOffset
           = #{offset VkDescriptorImageInfo, imageView}
 
-instance CanReadField "imageView" VkDescriptorImageInfo where
-        {-# INLINE getField #-}
-        getField = vkImageView
+instance {-# OVERLAPPING #-}
+         CanReadField "imageView" VkDescriptorImageInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, imageView})
 
         {-# INLINE readField #-}
-        readField = readVkImageView
+        readField p
+          = peekByteOff p #{offset VkDescriptorImageInfo, imageView}
 
-instance CanWriteField "imageView" VkDescriptorImageInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageView" VkDescriptorImageInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkImageView
-
-instance {-# OVERLAPPING #-} HasVkImageLayout VkDescriptorImageInfo
-         where
-        type VkImageLayoutMType VkDescriptorImageInfo = VkImageLayout
-
-        {-# NOINLINE vkImageLayout #-}
-        vkImageLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, imageLayout})
-
-        {-# INLINE vkImageLayoutByteOffset #-}
-        vkImageLayoutByteOffset ~_
-          = #{offset VkDescriptorImageInfo, imageLayout}
-
-        {-# INLINE readVkImageLayout #-}
-        readVkImageLayout p
-          = peekByteOff p #{offset VkDescriptorImageInfo, imageLayout}
-
-        {-# INLINE writeVkImageLayout #-}
-        writeVkImageLayout p
-          = pokeByteOff p #{offset VkDescriptorImageInfo, imageLayout}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorImageInfo, imageView}
 
 instance {-# OVERLAPPING #-}
          HasField "imageLayout" VkDescriptorImageInfo where
@@ -202,25 +151,31 @@
         fieldOffset
           = #{offset VkDescriptorImageInfo, imageLayout}
 
-instance CanReadField "imageLayout" VkDescriptorImageInfo where
-        {-# INLINE getField #-}
-        getField = vkImageLayout
+instance {-# OVERLAPPING #-}
+         CanReadField "imageLayout" VkDescriptorImageInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, imageLayout})
 
         {-# INLINE readField #-}
-        readField = readVkImageLayout
+        readField p
+          = peekByteOff p #{offset VkDescriptorImageInfo, imageLayout}
 
-instance CanWriteField "imageLayout" VkDescriptorImageInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageLayout" VkDescriptorImageInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkImageLayout
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorImageInfo, imageLayout}
 
 instance Show VkDescriptorImageInfo where
         showsPrec d x
           = showString "VkDescriptorImageInfo {" .
-              showString "vkSampler = " .
-                showsPrec d (vkSampler x) .
+              showString "sampler = " .
+                showsPrec d (getField @"sampler" x) .
                   showString ", " .
-                    showString "vkImageView = " .
-                      showsPrec d (vkImageView x) .
+                    showString "imageView = " .
+                      showsPrec d (getField @"imageView" x) .
                         showString ", " .
-                          showString "vkImageLayout = " .
-                            showsPrec d (vkImageLayout x) . showChar '}'
+                          showString "imageLayout = " .
+                            showsPrec d (getField @"imageLayout" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorPoolCreateInfo
        (VkDescriptorPoolCreateInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkDescriptorPoolCreateFlags (VkDescriptorPoolCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkDescriptorPoolSize      (VkDescriptorPoolSize)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorPoolCreateInfo {
@@ -27,7 +27,7 @@
 --   >     const VkDescriptorPoolSize* pPoolSizes;
 --   > } VkDescriptorPoolCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorPoolCreateInfo.html VkDescriptorPoolCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorPoolCreateInfo.html VkDescriptorPoolCreateInfo registry at www.khronos.org>
 data VkDescriptorPoolCreateInfo = VkDescriptorPoolCreateInfo## Addr##
                                                               ByteArray##
 
@@ -80,27 +80,6 @@
         type ReturnedOnly VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDescriptorPoolCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDescriptorPoolCreateInfo
-         where
-        type VkSTypeMType VkDescriptorPoolCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDescriptorPoolCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkDescriptorPoolCreateInfo where
         type FieldType "sType" VkDescriptorPoolCreateInfo = VkStructureType
@@ -116,37 +95,22 @@
         fieldOffset
           = #{offset VkDescriptorPoolCreateInfo, sType}
 
-instance CanReadField "sType" VkDescriptorPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDescriptorPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, sType}
 
-instance CanWriteField "sType" VkDescriptorPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDescriptorPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDescriptorPoolCreateInfo
-         where
-        type VkPNextMType VkDescriptorPoolCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDescriptorPoolCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDescriptorPoolCreateInfo where
@@ -163,38 +127,22 @@
         fieldOffset
           = #{offset VkDescriptorPoolCreateInfo, pNext}
 
-instance CanReadField "pNext" VkDescriptorPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDescriptorPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkDescriptorPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDescriptorPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkDescriptorPoolCreateInfo
-         where
-        type VkFlagsMType VkDescriptorPoolCreateInfo =
-             VkDescriptorPoolCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDescriptorPoolCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkDescriptorPoolCreateInfo where
@@ -212,37 +160,22 @@
         fieldOffset
           = #{offset VkDescriptorPoolCreateInfo, flags}
 
-instance CanReadField "flags" VkDescriptorPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxSets VkDescriptorPoolCreateInfo where
-        type VkMaxSetsMType VkDescriptorPoolCreateInfo = Word32
-
-        {-# NOINLINE vkMaxSets #-}
-        vkMaxSets x
+         CanReadField "flags" VkDescriptorPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, maxSets})
-
-        {-# INLINE vkMaxSetsByteOffset #-}
-        vkMaxSetsByteOffset ~_
-          = #{offset VkDescriptorPoolCreateInfo, maxSets}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, flags})
 
-        {-# INLINE readVkMaxSets #-}
-        readVkMaxSets p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, maxSets}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, flags}
 
-        {-# INLINE writeVkMaxSets #-}
-        writeVkMaxSets p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, maxSets}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDescriptorPoolCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSets" VkDescriptorPoolCreateInfo where
@@ -259,37 +192,22 @@
         fieldOffset
           = #{offset VkDescriptorPoolCreateInfo, maxSets}
 
-instance CanReadField "maxSets" VkDescriptorPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMaxSets
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSets
-
-instance CanWriteField "maxSets" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkMaxSets
-
 instance {-# OVERLAPPING #-}
-         HasVkPoolSizeCount VkDescriptorPoolCreateInfo where
-        type VkPoolSizeCountMType VkDescriptorPoolCreateInfo = Word32
-
-        {-# NOINLINE vkPoolSizeCount #-}
-        vkPoolSizeCount x
+         CanReadField "maxSets" VkDescriptorPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, poolSizeCount})
-
-        {-# INLINE vkPoolSizeCountByteOffset #-}
-        vkPoolSizeCountByteOffset ~_
-          = #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, maxSets})
 
-        {-# INLINE readVkPoolSizeCount #-}
-        readVkPoolSizeCount p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, maxSets}
 
-        {-# INLINE writeVkPoolSizeCount #-}
-        writeVkPoolSizeCount p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxSets" VkDescriptorPoolCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, maxSets}
 
 instance {-# OVERLAPPING #-}
          HasField "poolSizeCount" VkDescriptorPoolCreateInfo where
@@ -308,40 +226,22 @@
         fieldOffset
           = #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
 
-instance CanReadField "poolSizeCount" VkDescriptorPoolCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPoolSizeCount
-
-        {-# INLINE readField #-}
-        readField = readVkPoolSizeCount
-
-instance CanWriteField "poolSizeCount" VkDescriptorPoolCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPoolSizeCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPPoolSizes VkDescriptorPoolCreateInfo where
-        type VkPPoolSizesMType VkDescriptorPoolCreateInfo =
-             Ptr VkDescriptorPoolSize
-
-        {-# NOINLINE vkPPoolSizes #-}
-        vkPPoolSizes x
+         CanReadField "poolSizeCount" VkDescriptorPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, pPoolSizes})
-
-        {-# INLINE vkPPoolSizesByteOffset #-}
-        vkPPoolSizesByteOffset ~_
-          = #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, poolSizeCount})
 
-        {-# INLINE readVkPPoolSizes #-}
-        readVkPPoolSizes p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
 
-        {-# INLINE writeVkPPoolSizes #-}
-        writeVkPPoolSizes p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "poolSizeCount" VkDescriptorPoolCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pPoolSizes" VkDescriptorPoolCreateInfo where
@@ -359,35 +259,40 @@
         fieldOffset
           = #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
 
-instance CanReadField "pPoolSizes" VkDescriptorPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPPoolSizes
+instance {-# OVERLAPPING #-}
+         CanReadField "pPoolSizes" VkDescriptorPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, pPoolSizes})
 
         {-# INLINE readField #-}
-        readField = readVkPPoolSizes
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
 
-instance CanWriteField "pPoolSizes" VkDescriptorPoolCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pPoolSizes" VkDescriptorPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPPoolSizes
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
 
 instance Show VkDescriptorPoolCreateInfo where
         showsPrec d x
           = showString "VkDescriptorPoolCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkMaxSets = " .
-                                  showsPrec d (vkMaxSets x) .
+                                showString "maxSets = " .
+                                  showsPrec d (getField @"maxSets" x) .
                                     showString ", " .
-                                      showString "vkPoolSizeCount = " .
-                                        showsPrec d (vkPoolSizeCount x) .
+                                      showString "poolSizeCount = " .
+                                        showsPrec d (getField @"poolSizeCount" x) .
                                           showString ", " .
-                                            showString "vkPPoolSizes = " .
-                                              showsPrec d (vkPPoolSizes x) . showChar '}'
+                                            showString "pPoolSizes = " .
+                                              showsPrec d (getField @"pPoolSizes" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolSize.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolSize.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolSize.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorPoolSize.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorPoolSize
        (VkDescriptorPoolSize(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkDescriptorType (VkDescriptorType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorPoolSize {
@@ -21,7 +21,7 @@
 --   >     uint32_t               descriptorCount;
 --   > } VkDescriptorPoolSize;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorPoolSize.html VkDescriptorPoolSize registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorPoolSize.html VkDescriptorPoolSize registry at www.khronos.org>
 data VkDescriptorPoolSize = VkDescriptorPoolSize## Addr## ByteArray##
 
 instance Eq VkDescriptorPoolSize where
@@ -69,26 +69,6 @@
         type ReturnedOnly VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDescriptorPoolSize = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkType VkDescriptorPoolSize where
-        type VkTypeMType VkDescriptorPoolSize = VkDescriptorType
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolSize, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkDescriptorPoolSize, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkDescriptorPoolSize, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkDescriptorPoolSize, type}
-
 instance {-# OVERLAPPING #-} HasField "type" VkDescriptorPoolSize
          where
         type FieldType "type" VkDescriptorPoolSize = VkDescriptorType
@@ -103,37 +83,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDescriptorPoolSize, type}
 
-instance CanReadField "type" VkDescriptorPoolSize where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkDescriptorPoolSize where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorCount VkDescriptorPoolSize where
-        type VkDescriptorCountMType VkDescriptorPoolSize = Word32
-
-        {-# NOINLINE vkDescriptorCount #-}
-        vkDescriptorCount x
+         CanReadField "type" VkDescriptorPoolSize where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolSize, descriptorCount})
-
-        {-# INLINE vkDescriptorCountByteOffset #-}
-        vkDescriptorCountByteOffset ~_
-          = #{offset VkDescriptorPoolSize, descriptorCount}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolSize, type})
 
-        {-# INLINE readVkDescriptorCount #-}
-        readVkDescriptorCount p
-          = peekByteOff p #{offset VkDescriptorPoolSize, descriptorCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolSize, type}
 
-        {-# INLINE writeVkDescriptorCount #-}
-        writeVkDescriptorCount p
-          = pokeByteOff p #{offset VkDescriptorPoolSize, descriptorCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkDescriptorPoolSize where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolSize, type}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorCount" VkDescriptorPoolSize where
@@ -150,22 +115,28 @@
         fieldOffset
           = #{offset VkDescriptorPoolSize, descriptorCount}
 
-instance CanReadField "descriptorCount" VkDescriptorPoolSize where
-        {-# INLINE getField #-}
-        getField = vkDescriptorCount
+instance {-# OVERLAPPING #-}
+         CanReadField "descriptorCount" VkDescriptorPoolSize where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolSize, descriptorCount})
 
         {-# INLINE readField #-}
-        readField = readVkDescriptorCount
+        readField p
+          = peekByteOff p #{offset VkDescriptorPoolSize, descriptorCount}
 
-instance CanWriteField "descriptorCount" VkDescriptorPoolSize where
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorCount" VkDescriptorPoolSize where
         {-# INLINE writeField #-}
-        writeField = writeVkDescriptorCount
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorPoolSize, descriptorCount}
 
 instance Show VkDescriptorPoolSize where
         showsPrec d x
           = showString "VkDescriptorPoolSize {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkDescriptorCount = " .
-                      showsPrec d (vkDescriptorCount x) . showChar '}'
+                    showString "descriptorCount = " .
+                      showsPrec d (getField @"descriptorCount" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetAllocateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetAllocateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetAllocateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetAllocateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorSetAllocateInfo
        (VkDescriptorSetAllocateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkDescriptorPool, VkDescriptorSetLayout)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorSetAllocateInfo {
@@ -25,7 +25,7 @@
 --   >     const VkDescriptorSetLayout* pSetLayouts;
 --   > } VkDescriptorSetAllocateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorSetAllocateInfo.html VkDescriptorSetAllocateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorSetAllocateInfo.html VkDescriptorSetAllocateInfo registry at www.khronos.org>
 data VkDescriptorSetAllocateInfo = VkDescriptorSetAllocateInfo## Addr##
                                                                 ByteArray##
 
@@ -78,27 +78,6 @@
         type ReturnedOnly VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDescriptorSetAllocateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDescriptorSetAllocateInfo
-         where
-        type VkSTypeMType VkDescriptorSetAllocateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDescriptorSetAllocateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkDescriptorSetAllocateInfo where
         type FieldType "sType" VkDescriptorSetAllocateInfo =
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkDescriptorSetAllocateInfo, sType}
 
-instance CanReadField "sType" VkDescriptorSetAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDescriptorSetAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, sType}
 
-instance CanWriteField "sType" VkDescriptorSetAllocateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDescriptorSetAllocateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDescriptorSetAllocateInfo
-         where
-        type VkPNextMType VkDescriptorSetAllocateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDescriptorSetAllocateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDescriptorSetAllocateInfo where
@@ -162,38 +126,22 @@
         fieldOffset
           = #{offset VkDescriptorSetAllocateInfo, pNext}
 
-instance CanReadField "pNext" VkDescriptorSetAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDescriptorSetAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorPool VkDescriptorSetAllocateInfo where
-        type VkDescriptorPoolMType VkDescriptorSetAllocateInfo =
-             VkDescriptorPool
-
-        {-# NOINLINE vkDescriptorPool #-}
-        vkDescriptorPool x
+         CanReadField "pNext" VkDescriptorSetAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, descriptorPool})
-
-        {-# INLINE vkDescriptorPoolByteOffset #-}
-        vkDescriptorPoolByteOffset ~_
-          = #{offset VkDescriptorSetAllocateInfo, descriptorPool}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, pNext})
 
-        {-# INLINE readVkDescriptorPool #-}
-        readVkDescriptorPool p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorPool}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, pNext}
 
-        {-# INLINE writeVkDescriptorPool #-}
-        writeVkDescriptorPool p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorPool}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDescriptorSetAllocateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorPool" VkDescriptorSetAllocateInfo where
@@ -213,39 +161,22 @@
         fieldOffset
           = #{offset VkDescriptorSetAllocateInfo, descriptorPool}
 
-instance CanReadField "descriptorPool" VkDescriptorSetAllocateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorPool
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorPool
-
-instance CanWriteField "descriptorPool" VkDescriptorSetAllocateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorPool
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorSetCount VkDescriptorSetAllocateInfo where
-        type VkDescriptorSetCountMType VkDescriptorSetAllocateInfo = Word32
-
-        {-# NOINLINE vkDescriptorSetCount #-}
-        vkDescriptorSetCount x
+         CanReadField "descriptorPool" VkDescriptorSetAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, descriptorSetCount})
-
-        {-# INLINE vkDescriptorSetCountByteOffset #-}
-        vkDescriptorSetCountByteOffset ~_
-          = #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, descriptorPool})
 
-        {-# INLINE readVkDescriptorSetCount #-}
-        readVkDescriptorSetCount p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorPool}
 
-        {-# INLINE writeVkDescriptorSetCount #-}
-        writeVkDescriptorSetCount p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorPool" VkDescriptorSetAllocateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorPool}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorSetCount" VkDescriptorSetAllocateInfo where
@@ -265,42 +196,23 @@
         fieldOffset
           = #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
 
-instance CanReadField "descriptorSetCount"
-           VkDescriptorSetAllocateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorSetCount
+instance {-# OVERLAPPING #-}
+         CanReadField "descriptorSetCount" VkDescriptorSetAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, descriptorSetCount})
 
         {-# INLINE readField #-}
-        readField = readVkDescriptorSetCount
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
 
-instance CanWriteField "descriptorSetCount"
-           VkDescriptorSetAllocateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorSetCount" VkDescriptorSetAllocateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDescriptorSetCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPSetLayouts VkDescriptorSetAllocateInfo where
-        type VkPSetLayoutsMType VkDescriptorSetAllocateInfo =
-             Ptr VkDescriptorSetLayout
-
-        {-# NOINLINE vkPSetLayouts #-}
-        vkPSetLayouts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, pSetLayouts})
-
-        {-# INLINE vkPSetLayoutsByteOffset #-}
-        vkPSetLayoutsByteOffset ~_
-          = #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
-
-        {-# INLINE readVkPSetLayouts #-}
-        readVkPSetLayouts p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
-
-        {-# INLINE writeVkPSetLayouts #-}
-        writeVkPSetLayouts p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSetLayouts" VkDescriptorSetAllocateInfo where
@@ -320,33 +232,37 @@
         fieldOffset
           = #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
 
-instance CanReadField "pSetLayouts" VkDescriptorSetAllocateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPSetLayouts
+instance {-# OVERLAPPING #-}
+         CanReadField "pSetLayouts" VkDescriptorSetAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, pSetLayouts})
 
         {-# INLINE readField #-}
-        readField = readVkPSetLayouts
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
 
-instance CanWriteField "pSetLayouts" VkDescriptorSetAllocateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSetLayouts" VkDescriptorSetAllocateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPSetLayouts
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
 
 instance Show VkDescriptorSetAllocateInfo where
         showsPrec d x
           = showString "VkDescriptorSetAllocateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDescriptorPool = " .
-                            showsPrec d (vkDescriptorPool x) .
+                          showString "descriptorPool = " .
+                            showsPrec d (getField @"descriptorPool" x) .
                               showString ", " .
-                                showString "vkDescriptorSetCount = " .
-                                  showsPrec d (vkDescriptorSetCount x) .
+                                showString "descriptorSetCount = " .
+                                  showsPrec d (getField @"descriptorSetCount" x) .
                                     showString ", " .
-                                      showString "vkPSetLayouts = " .
-                                        showsPrec d (vkPSetLayouts x) . showChar '}'
+                                      showString "pSetLayouts = " .
+                                        showsPrec d (getField @"pSetLayouts" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutBinding.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutBinding.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutBinding.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutBinding.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding
        (VkDescriptorSetLayoutBinding(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkDescriptorType   (VkDescriptorType)
 import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags (VkShaderStageFlags)
 import           Graphics.Vulkan.Types.Handles                 (VkSampler)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorSetLayoutBinding {
@@ -26,7 +26,7 @@
 --   >     const VkSampler*       pImmutableSamplers;
 --   > } VkDescriptorSetLayoutBinding;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorSetLayoutBinding.html VkDescriptorSetLayoutBinding registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorSetLayoutBinding.html VkDescriptorSetLayoutBinding registry at www.khronos.org>
 data VkDescriptorSetLayoutBinding = VkDescriptorSetLayoutBinding## Addr##
                                                                   ByteArray##
 
@@ -81,27 +81,6 @@
         type StructExtends VkDescriptorSetLayoutBinding = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkBinding VkDescriptorSetLayoutBinding where
-        type VkBindingMType VkDescriptorSetLayoutBinding = Word32
-
-        {-# NOINLINE vkBinding #-}
-        vkBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, binding})
-
-        {-# INLINE vkBindingByteOffset #-}
-        vkBindingByteOffset ~_
-          = #{offset VkDescriptorSetLayoutBinding, binding}
-
-        {-# INLINE readVkBinding #-}
-        readVkBinding p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, binding}
-
-        {-# INLINE writeVkBinding #-}
-        writeVkBinding p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, binding}
-
-instance {-# OVERLAPPING #-}
          HasField "binding" VkDescriptorSetLayoutBinding where
         type FieldType "binding" VkDescriptorSetLayoutBinding = Word32
         type FieldOptional "binding" VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
@@ -116,38 +95,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutBinding, binding}
 
-instance CanReadField "binding" VkDescriptorSetLayoutBinding where
-        {-# INLINE getField #-}
-        getField = vkBinding
-
-        {-# INLINE readField #-}
-        readField = readVkBinding
-
-instance CanWriteField "binding" VkDescriptorSetLayoutBinding where
-        {-# INLINE writeField #-}
-        writeField = writeVkBinding
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorType VkDescriptorSetLayoutBinding where
-        type VkDescriptorTypeMType VkDescriptorSetLayoutBinding =
-             VkDescriptorType
-
-        {-# NOINLINE vkDescriptorType #-}
-        vkDescriptorType x
+         CanReadField "binding" VkDescriptorSetLayoutBinding where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, descriptorType})
-
-        {-# INLINE vkDescriptorTypeByteOffset #-}
-        vkDescriptorTypeByteOffset ~_
-          = #{offset VkDescriptorSetLayoutBinding, descriptorType}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, binding})
 
-        {-# INLINE readVkDescriptorType #-}
-        readVkDescriptorType p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, binding}
 
-        {-# INLINE writeVkDescriptorType #-}
-        writeVkDescriptorType p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "binding" VkDescriptorSetLayoutBinding where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, binding}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorType" VkDescriptorSetLayoutBinding where
@@ -167,40 +130,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutBinding, descriptorType}
 
-instance CanReadField "descriptorType" VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorType
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorType
-
-instance CanWriteField "descriptorType"
-           VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorType
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorCount VkDescriptorSetLayoutBinding where
-        type VkDescriptorCountMType VkDescriptorSetLayoutBinding = Word32
-
-        {-# NOINLINE vkDescriptorCount #-}
-        vkDescriptorCount x
+         CanReadField "descriptorType" VkDescriptorSetLayoutBinding where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, descriptorCount})
-
-        {-# INLINE vkDescriptorCountByteOffset #-}
-        vkDescriptorCountByteOffset ~_
-          = #{offset VkDescriptorSetLayoutBinding, descriptorCount}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, descriptorType})
 
-        {-# INLINE readVkDescriptorCount #-}
-        readVkDescriptorCount p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorType}
 
-        {-# INLINE writeVkDescriptorCount #-}
-        writeVkDescriptorCount p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorType" VkDescriptorSetLayoutBinding where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorType}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorCount" VkDescriptorSetLayoutBinding where
@@ -220,42 +165,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutBinding, descriptorCount}
 
-instance CanReadField "descriptorCount"
-           VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorCount
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorCount
-
-instance CanWriteField "descriptorCount"
-           VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorCount
-
 instance {-# OVERLAPPING #-}
-         HasVkStageFlags VkDescriptorSetLayoutBinding where
-        type VkStageFlagsMType VkDescriptorSetLayoutBinding =
-             VkShaderStageFlags
-
-        {-# NOINLINE vkStageFlags #-}
-        vkStageFlags x
+         CanReadField "descriptorCount" VkDescriptorSetLayoutBinding where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, stageFlags})
-
-        {-# INLINE vkStageFlagsByteOffset #-}
-        vkStageFlagsByteOffset ~_
-          = #{offset VkDescriptorSetLayoutBinding, stageFlags}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, descriptorCount})
 
-        {-# INLINE readVkStageFlags #-}
-        readVkStageFlags p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, stageFlags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorCount}
 
-        {-# INLINE writeVkStageFlags #-}
-        writeVkStageFlags p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, stageFlags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorCount" VkDescriptorSetLayoutBinding where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorCount}
 
 instance {-# OVERLAPPING #-}
          HasField "stageFlags" VkDescriptorSetLayoutBinding where
@@ -275,40 +200,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutBinding, stageFlags}
 
-instance CanReadField "stageFlags" VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE getField #-}
-        getField = vkStageFlags
-
-        {-# INLINE readField #-}
-        readField = readVkStageFlags
-
-instance CanWriteField "stageFlags" VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStageFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPImmutableSamplers VkDescriptorSetLayoutBinding where
-        type VkPImmutableSamplersMType VkDescriptorSetLayoutBinding =
-             Ptr VkSampler
-
-        {-# NOINLINE vkPImmutableSamplers #-}
-        vkPImmutableSamplers x
+         CanReadField "stageFlags" VkDescriptorSetLayoutBinding where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers})
-
-        {-# INLINE vkPImmutableSamplersByteOffset #-}
-        vkPImmutableSamplersByteOffset ~_
-          = #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, stageFlags})
 
-        {-# INLINE readVkPImmutableSamplers #-}
-        readVkPImmutableSamplers p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, stageFlags}
 
-        {-# INLINE writeVkPImmutableSamplers #-}
-        writeVkPImmutableSamplers p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stageFlags" VkDescriptorSetLayoutBinding where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, stageFlags}
 
 instance {-# OVERLAPPING #-}
          HasField "pImmutableSamplers" VkDescriptorSetLayoutBinding where
@@ -330,35 +237,40 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
 
-instance CanReadField "pImmutableSamplers"
-           VkDescriptorSetLayoutBinding
+instance {-# OVERLAPPING #-}
+         CanReadField "pImmutableSamplers" VkDescriptorSetLayoutBinding
          where
-        {-# INLINE getField #-}
-        getField = vkPImmutableSamplers
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers})
 
         {-# INLINE readField #-}
-        readField = readVkPImmutableSamplers
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
 
-instance CanWriteField "pImmutableSamplers"
-           VkDescriptorSetLayoutBinding
+instance {-# OVERLAPPING #-}
+         CanWriteField "pImmutableSamplers" VkDescriptorSetLayoutBinding
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPImmutableSamplers
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
 
 instance Show VkDescriptorSetLayoutBinding where
         showsPrec d x
           = showString "VkDescriptorSetLayoutBinding {" .
-              showString "vkBinding = " .
-                showsPrec d (vkBinding x) .
+              showString "binding = " .
+                showsPrec d (getField @"binding" x) .
                   showString ", " .
-                    showString "vkDescriptorType = " .
-                      showsPrec d (vkDescriptorType x) .
+                    showString "descriptorType = " .
+                      showsPrec d (getField @"descriptorType" x) .
                         showString ", " .
-                          showString "vkDescriptorCount = " .
-                            showsPrec d (vkDescriptorCount x) .
+                          showString "descriptorCount = " .
+                            showsPrec d (getField @"descriptorCount" x) .
                               showString ", " .
-                                showString "vkStageFlags = " .
-                                  showsPrec d (vkStageFlags x) .
+                                showString "stageFlags = " .
+                                  showsPrec d (getField @"stageFlags" x) .
                                     showString ", " .
-                                      showString "vkPImmutableSamplers = " .
-                                        showsPrec d (vkPImmutableSamplers x) . showChar '}'
+                                      showString "pImmutableSamplers = " .
+                                        showsPrec d (getField @"pImmutableSamplers" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo
        (VkDescriptorSetLayoutCreateInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags (VkDescriptorSetLayoutCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding   (VkDescriptorSetLayoutBinding)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDescriptorSetLayoutCreateInfo {
@@ -26,7 +26,7 @@
 --   >     const VkDescriptorSetLayoutBinding* pBindings;
 --   > } VkDescriptorSetLayoutCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html VkDescriptorSetLayoutCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html VkDescriptorSetLayoutCreateInfo registry at www.khronos.org>
 data VkDescriptorSetLayoutCreateInfo = VkDescriptorSetLayoutCreateInfo## Addr##
                                                                         ByteArray##
 
@@ -80,27 +80,6 @@
         type StructExtends VkDescriptorSetLayoutCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDescriptorSetLayoutCreateInfo where
-        type VkSTypeMType VkDescriptorSetLayoutCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDescriptorSetLayoutCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDescriptorSetLayoutCreateInfo where
         type FieldType "sType" VkDescriptorSetLayoutCreateInfo =
              VkStructureType
@@ -116,38 +95,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutCreateInfo, sType}
 
-instance CanReadField "sType" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDescriptorSetLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDescriptorSetLayoutCreateInfo where
-        type VkPNextMType VkDescriptorSetLayoutCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDescriptorSetLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDescriptorSetLayoutCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDescriptorSetLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDescriptorSetLayoutCreateInfo where
@@ -164,39 +127,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutCreateInfo, pNext}
 
-instance CanReadField "pNext" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDescriptorSetLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkDescriptorSetLayoutCreateInfo where
-        type VkFlagsMType VkDescriptorSetLayoutCreateInfo =
-             VkDescriptorSetLayoutCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkDescriptorSetLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDescriptorSetLayoutCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDescriptorSetLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkDescriptorSetLayoutCreateInfo where
@@ -214,38 +160,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutCreateInfo, flags}
 
-instance CanReadField "flags" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDescriptorSetLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkBindingCount VkDescriptorSetLayoutCreateInfo where
-        type VkBindingCountMType VkDescriptorSetLayoutCreateInfo = Word32
-
-        {-# NOINLINE vkBindingCount #-}
-        vkBindingCount x
+         CanReadField "flags" VkDescriptorSetLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, bindingCount})
-
-        {-# INLINE vkBindingCountByteOffset #-}
-        vkBindingCountByteOffset ~_
-          = #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, flags})
 
-        {-# INLINE readVkBindingCount #-}
-        readVkBindingCount p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, flags}
 
-        {-# INLINE writeVkBindingCount #-}
-        writeVkBindingCount p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDescriptorSetLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "bindingCount" VkDescriptorSetLayoutCreateInfo where
@@ -265,42 +195,22 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
 
-instance CanReadField "bindingCount"
-           VkDescriptorSetLayoutCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBindingCount
-
-        {-# INLINE readField #-}
-        readField = readVkBindingCount
-
-instance CanWriteField "bindingCount"
-           VkDescriptorSetLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBindingCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPBindings VkDescriptorSetLayoutCreateInfo where
-        type VkPBindingsMType VkDescriptorSetLayoutCreateInfo =
-             Ptr VkDescriptorSetLayoutBinding
-
-        {-# NOINLINE vkPBindings #-}
-        vkPBindings x
+         CanReadField "bindingCount" VkDescriptorSetLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, pBindings})
-
-        {-# INLINE vkPBindingsByteOffset #-}
-        vkPBindingsByteOffset ~_
-          = #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, bindingCount})
 
-        {-# INLINE readVkPBindings #-}
-        readVkPBindings p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
 
-        {-# INLINE writeVkPBindings #-}
-        writeVkPBindings p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bindingCount" VkDescriptorSetLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pBindings" VkDescriptorSetLayoutCreateInfo where
@@ -320,33 +230,37 @@
         fieldOffset
           = #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
 
-instance CanReadField "pBindings" VkDescriptorSetLayoutCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPBindings
+instance {-# OVERLAPPING #-}
+         CanReadField "pBindings" VkDescriptorSetLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, pBindings})
 
         {-# INLINE readField #-}
-        readField = readVkPBindings
+        readField p
+          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
 
-instance CanWriteField "pBindings" VkDescriptorSetLayoutCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pBindings" VkDescriptorSetLayoutCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPBindings
+        writeField p
+          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
 
 instance Show VkDescriptorSetLayoutCreateInfo where
         showsPrec d x
           = showString "VkDescriptorSetLayoutCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkBindingCount = " .
-                                  showsPrec d (vkBindingCount x) .
+                                showString "bindingCount = " .
+                                  showsPrec d (getField @"bindingCount" x) .
                                     showString ", " .
-                                      showString "vkPBindings = " .
-                                        showsPrec d (vkPBindings x) . showChar '}'
+                                      showString "pBindings = " .
+                                        showsPrec d (getField @"pBindings" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutSupport.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutSupport.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutSupport.hsc
@@ -0,0 +1,187 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport
+       (VkDescriptorSetLayoutSupport(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes            (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDescriptorSetLayoutSupport {
+--   >     VkStructureType sType;
+--   >     void*            pNext;
+--   >     VkBool32         supported;
+--   > } VkDescriptorSetLayoutSupport;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDescriptorSetLayoutSupport.html VkDescriptorSetLayoutSupport registry at www.khronos.org>
+data VkDescriptorSetLayoutSupport = VkDescriptorSetLayoutSupport## Addr##
+                                                                  ByteArray##
+
+instance Eq VkDescriptorSetLayoutSupport where
+        (VkDescriptorSetLayoutSupport## a _) ==
+          x@(VkDescriptorSetLayoutSupport## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDescriptorSetLayoutSupport where
+        (VkDescriptorSetLayoutSupport## a _) `compare`
+          x@(VkDescriptorSetLayoutSupport## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDescriptorSetLayoutSupport where
+        unsafeAddr (VkDescriptorSetLayoutSupport## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDescriptorSetLayoutSupport## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDescriptorSetLayoutSupport##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutSupportKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutSupportKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorSetLayoutSupportKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupportKHR
+       (VkDescriptorSetLayoutSupport(..), VkDescriptorSetLayoutSupportKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport (VkDescriptorSetLayoutSupport (..))
+
+-- | Alias for `VkDescriptorSetLayoutSupport`
+type VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfo.hsc
@@ -0,0 +1,539 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo
+       (VkDescriptorUpdateTemplateCreateInfo(..)) where
+import           Foreign.Storable                                             (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Bitmasks                               (VkDescriptorUpdateTemplateCreateFlags)
+import           Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType    (VkDescriptorUpdateTemplateType)
+import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint               (VkPipelineBindPoint)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                                (VkDescriptorSetLayout,
+                                                                               VkPipelineLayout)
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry (VkDescriptorUpdateTemplateEntry)
+import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDescriptorUpdateTemplateCreateInfo.html VkDescriptorUpdateTemplateCreateInfo registry at www.khronos.org>
+data VkDescriptorUpdateTemplateCreateInfo = VkDescriptorUpdateTemplateCreateInfo## Addr##
+                                                                                  ByteArray##
+
+instance Eq VkDescriptorUpdateTemplateCreateInfo where
+        (VkDescriptorUpdateTemplateCreateInfo## a _) ==
+          x@(VkDescriptorUpdateTemplateCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDescriptorUpdateTemplateCreateInfo where
+        (VkDescriptorUpdateTemplateCreateInfo## a _) `compare`
+          x@(VkDescriptorUpdateTemplateCreateInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDescriptorUpdateTemplateCreateInfo
+         where
+        unsafeAddr (VkDescriptorUpdateTemplateCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDescriptorUpdateTemplateCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDescriptorUpdateTemplateCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfoKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfoKHR
+       (VkDescriptorUpdateTemplateCreateInfo(..),
+        VkDescriptorUpdateTemplateCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo
+                                                                                    (VkDescriptorUpdateTemplateCreateInfo (..))
+
+-- | Alias for `VkDescriptorUpdateTemplateCreateInfo`
+type VkDescriptorUpdateTemplateCreateInfoKHR =
+     VkDescriptorUpdateTemplateCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateCreateInfoKHR.hsc
+++ /dev/null
@@ -1,727 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfoKHR
-       (VkDescriptorUpdateTemplateCreateInfoKHR(..)) where
-import           Foreign.Storable                                                (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Bitmasks                                  (VkDescriptorUpdateTemplateCreateFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateTypeKHR    (VkDescriptorUpdateTemplateTypeKHR)
-import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint                  (VkPipelineBindPoint)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                      (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                   (VkDescriptorSetLayout,
-                                                                                  VkPipelineLayout)
-import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntryKHR (VkDescriptorUpdateTemplateEntryKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                                (unsafeDupablePerformIO)
-
--- | > typedef struct VkDescriptorUpdateTemplateCreateInfoKHR {
---   >     VkStructureType sType;
---   >     void*                                   pNext;
---   >     VkDescriptorUpdateTemplateCreateFlagsKHR    flags;
---   >     uint32_t                 descriptorUpdateEntryCount;
---   >     const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
---   >     VkDescriptorUpdateTemplateTypeKHR templateType;
---   >     VkDescriptorSetLayout descriptorSetLayout;
---   >     VkPipelineBindPoint pipelineBindPoint;
---   >     VkPipelineLayoutpipelineLayout;
---   >     uint32_t set;
---   > } VkDescriptorUpdateTemplateCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html VkDescriptorUpdateTemplateCreateInfoKHR registry at www.khronos.org>
-data VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfoKHR## Addr##
-                                                                                        ByteArray##
-
-instance Eq VkDescriptorUpdateTemplateCreateInfoKHR where
-        (VkDescriptorUpdateTemplateCreateInfoKHR## a _) ==
-          x@(VkDescriptorUpdateTemplateCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorUpdateTemplateCreateInfoKHR where
-        (VkDescriptorUpdateTemplateCreateInfoKHR## a _) `compare`
-          x@(VkDescriptorUpdateTemplateCreateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorUpdateTemplateCreateInfoKHR where
-        sizeOf ~_
-          = #{size VkDescriptorUpdateTemplateCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorUpdateTemplateCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        unsafeAddr (VkDescriptorUpdateTemplateCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDescriptorUpdateTemplateCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDescriptorUpdateTemplateCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type StructFields VkDescriptorUpdateTemplateCreateInfoKHR =
-             '["sType", "pNext", "flags", "descriptorUpdateEntryCount", -- ' closing tick for hsc2hs
-               "pDescriptorUpdateEntries", "templateType", "descriptorSetLayout",
-               "pipelineBindPoint", "pipelineLayout", "set"]
-        type CUnionType VkDescriptorUpdateTemplateCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorUpdateTemplateCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorUpdateTemplateCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDescriptorUpdateTemplateCreateInfoKHR where
-        type VkSTypeMType VkDescriptorUpdateTemplateCreateInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorUpdateTemplateCreateInfoKHR where
-        type FieldType "sType" VkDescriptorUpdateTemplateCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDescriptorUpdateTemplateCreateInfoKHR =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkDescriptorUpdateTemplateCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, sType}
-
-instance CanReadField "sType"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDescriptorUpdateTemplateCreateInfoKHR where
-        type VkPNextMType VkDescriptorUpdateTemplateCreateInfoKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorUpdateTemplateCreateInfoKHR where
-        type FieldType "pNext" VkDescriptorUpdateTemplateCreateInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDescriptorUpdateTemplateCreateInfoKHR =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkDescriptorUpdateTemplateCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pNext}
-
-instance CanReadField "pNext"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkDescriptorUpdateTemplateCreateInfoKHR where
-        type VkFlagsMType VkDescriptorUpdateTemplateCreateInfoKHR =
-             VkDescriptorUpdateTemplateCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDescriptorUpdateTemplateCreateInfoKHR where
-        type FieldType "flags" VkDescriptorUpdateTemplateCreateInfoKHR =
-             VkDescriptorUpdateTemplateCreateFlagsKHR
-        type FieldOptional "flags" VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDescriptorUpdateTemplateCreateInfoKHR =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkDescriptorUpdateTemplateCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, flags}
-
-instance CanReadField "flags"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-}
-         HasVkDescriptorUpdateEntryCount
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type VkDescriptorUpdateEntryCountMType
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = Word32
-
-        {-# NOINLINE vkDescriptorUpdateEntryCount #-}
-        vkDescriptorUpdateEntryCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorUpdateEntryCount})
-
-        {-# INLINE vkDescriptorUpdateEntryCountByteOffset #-}
-        vkDescriptorUpdateEntryCountByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorUpdateEntryCount}
-
-        {-# INLINE readVkDescriptorUpdateEntryCount #-}
-        readVkDescriptorUpdateEntryCount p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorUpdateEntryCount}
-
-        {-# INLINE writeVkDescriptorUpdateEntryCount #-}
-        writeVkDescriptorUpdateEntryCount p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorUpdateEntryCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorUpdateEntryCount"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type FieldType "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = Word32
-        type FieldOptional "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorUpdateEntryCount}
-        type FieldIsArray "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorUpdateEntryCount}
-
-instance CanReadField "descriptorUpdateEntryCount"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorUpdateEntryCount
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorUpdateEntryCount
-
-instance CanWriteField "descriptorUpdateEntryCount"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorUpdateEntryCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDescriptorUpdateEntries
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type VkPDescriptorUpdateEntriesMType
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = Ptr VkDescriptorUpdateTemplateEntryKHR
-
-        {-# NOINLINE vkPDescriptorUpdateEntries #-}
-        vkPDescriptorUpdateEntries x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pDescriptorUpdateEntries})
-
-        {-# INLINE vkPDescriptorUpdateEntriesByteOffset #-}
-        vkPDescriptorUpdateEntriesByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pDescriptorUpdateEntries}
-
-        {-# INLINE readVkPDescriptorUpdateEntries #-}
-        readVkPDescriptorUpdateEntries p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pDescriptorUpdateEntries}
-
-        {-# INLINE writeVkPDescriptorUpdateEntries #-}
-        writeVkPDescriptorUpdateEntries p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pDescriptorUpdateEntries}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDescriptorUpdateEntries"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type FieldType "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = Ptr VkDescriptorUpdateTemplateEntryKHR
-        type FieldOptional "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pDescriptorUpdateEntries}
-        type FieldIsArray "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pDescriptorUpdateEntries}
-
-instance CanReadField "pDescriptorUpdateEntries"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPDescriptorUpdateEntries
-
-        {-# INLINE readField #-}
-        readField = readVkPDescriptorUpdateEntries
-
-instance CanWriteField "pDescriptorUpdateEntries"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDescriptorUpdateEntries
-
-instance {-# OVERLAPPING #-}
-         HasVkTemplateType VkDescriptorUpdateTemplateCreateInfoKHR where
-        type VkTemplateTypeMType VkDescriptorUpdateTemplateCreateInfoKHR =
-             VkDescriptorUpdateTemplateTypeKHR
-
-        {-# NOINLINE vkTemplateType #-}
-        vkTemplateType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, templateType})
-
-        {-# INLINE vkTemplateTypeByteOffset #-}
-        vkTemplateTypeByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, templateType}
-
-        {-# INLINE readVkTemplateType #-}
-        readVkTemplateType p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, templateType}
-
-        {-# INLINE writeVkTemplateType #-}
-        writeVkTemplateType p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, templateType}
-
-instance {-# OVERLAPPING #-}
-         HasField "templateType" VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type FieldType "templateType"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkDescriptorUpdateTemplateTypeKHR
-        type FieldOptional "templateType"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "templateType"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, templateType}
-        type FieldIsArray "templateType"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, templateType}
-
-instance CanReadField "templateType"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkTemplateType
-
-        {-# INLINE readField #-}
-        readField = readVkTemplateType
-
-instance CanWriteField "templateType"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTemplateType
-
-instance {-# OVERLAPPING #-}
-         HasVkDescriptorSetLayout VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type VkDescriptorSetLayoutMType
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkDescriptorSetLayout
-
-        {-# NOINLINE vkDescriptorSetLayout #-}
-        vkDescriptorSetLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorSetLayout})
-
-        {-# INLINE vkDescriptorSetLayoutByteOffset #-}
-        vkDescriptorSetLayoutByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorSetLayout}
-
-        {-# INLINE readVkDescriptorSetLayout #-}
-        readVkDescriptorSetLayout p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorSetLayout}
-
-        {-# INLINE writeVkDescriptorSetLayout #-}
-        writeVkDescriptorSetLayout p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorSetLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorSetLayout"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type FieldType "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkDescriptorSetLayout
-        type FieldOptional "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorSetLayout}
-        type FieldIsArray "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, descriptorSetLayout}
-
-instance CanReadField "descriptorSetLayout"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorSetLayout
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorSetLayout
-
-instance CanWriteField "descriptorSetLayout"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorSetLayout
-
-instance {-# OVERLAPPING #-}
-         HasVkPipelineBindPoint VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type VkPipelineBindPointMType
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkPipelineBindPoint
-
-        {-# NOINLINE vkPipelineBindPoint #-}
-        vkPipelineBindPoint x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineBindPoint})
-
-        {-# INLINE vkPipelineBindPointByteOffset #-}
-        vkPipelineBindPointByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineBindPoint}
-
-        {-# INLINE readVkPipelineBindPoint #-}
-        readVkPipelineBindPoint p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineBindPoint}
-
-        {-# INLINE writeVkPipelineBindPoint #-}
-        writeVkPipelineBindPoint p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineBindPoint"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type FieldType "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkPipelineBindPoint
-        type FieldOptional "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineBindPoint}
-        type FieldIsArray "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineBindPoint}
-
-instance CanReadField "pipelineBindPoint"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPipelineBindPoint
-
-        {-# INLINE readField #-}
-        readField = readVkPipelineBindPoint
-
-instance CanWriteField "pipelineBindPoint"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPipelineBindPoint
-
-instance {-# OVERLAPPING #-}
-         HasVkPipelineLayout VkDescriptorUpdateTemplateCreateInfoKHR where
-        type VkPipelineLayoutMType VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkPipelineLayout
-
-        {-# NOINLINE vkPipelineLayout #-}
-        vkPipelineLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineLayout})
-
-        {-# INLINE vkPipelineLayoutByteOffset #-}
-        vkPipelineLayoutByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineLayout}
-
-        {-# INLINE readVkPipelineLayout #-}
-        readVkPipelineLayout p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineLayout}
-
-        {-# INLINE writeVkPipelineLayout #-}
-        writeVkPipelineLayout p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        type FieldType "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = VkPipelineLayout
-        type FieldOptional "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineLayout}
-        type FieldIsArray "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, pipelineLayout}
-
-instance CanReadField "pipelineLayout"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPipelineLayout
-
-        {-# INLINE readField #-}
-        readField = readVkPipelineLayout
-
-instance CanWriteField "pipelineLayout"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPipelineLayout
-
-instance {-# OVERLAPPING #-}
-         HasVkSet VkDescriptorUpdateTemplateCreateInfoKHR where
-        type VkSetMType VkDescriptorUpdateTemplateCreateInfoKHR = Word32
-
-        {-# NOINLINE vkSet #-}
-        vkSet x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfoKHR, set})
-
-        {-# INLINE vkSetByteOffset #-}
-        vkSetByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, set}
-
-        {-# INLINE readVkSet #-}
-        readVkSet p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, set}
-
-        {-# INLINE writeVkSet #-}
-        writeVkSet p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfoKHR, set}
-
-instance {-# OVERLAPPING #-}
-         HasField "set" VkDescriptorUpdateTemplateCreateInfoKHR where
-        type FieldType "set" VkDescriptorUpdateTemplateCreateInfoKHR =
-             Word32
-        type FieldOptional "set" VkDescriptorUpdateTemplateCreateInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "set" VkDescriptorUpdateTemplateCreateInfoKHR =
-             #{offset VkDescriptorUpdateTemplateCreateInfoKHR, set}
-        type FieldIsArray "set" VkDescriptorUpdateTemplateCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfoKHR, set}
-
-instance CanReadField "set" VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSet
-
-        {-# INLINE readField #-}
-        readField = readVkSet
-
-instance CanWriteField "set"
-           VkDescriptorUpdateTemplateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSet
-
-instance Show VkDescriptorUpdateTemplateCreateInfoKHR where
-        showsPrec d x
-          = showString "VkDescriptorUpdateTemplateCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
-                              showString ", " .
-                                showString "vkDescriptorUpdateEntryCount = " .
-                                  showsPrec d (vkDescriptorUpdateEntryCount x) .
-                                    showString ", " .
-                                      showString "vkPDescriptorUpdateEntries = " .
-                                        showsPrec d (vkPDescriptorUpdateEntries x) .
-                                          showString ", " .
-                                            showString "vkTemplateType = " .
-                                              showsPrec d (vkTemplateType x) .
-                                                showString ", " .
-                                                  showString "vkDescriptorSetLayout = " .
-                                                    showsPrec d (vkDescriptorSetLayout x) .
-                                                      showString ", " .
-                                                        showString "vkPipelineBindPoint = " .
-                                                          showsPrec d (vkPipelineBindPoint x) .
-                                                            showString ", " .
-                                                              showString "vkPipelineLayout = " .
-                                                                showsPrec d (vkPipelineLayout x) .
-                                                                  showString ", " .
-                                                                    showString "vkSet = " .
-                                                                      showsPrec d (vkSet x) .
-                                                                        showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntry.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntry.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntry.hsc
@@ -0,0 +1,316 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry
+       (VkDescriptorUpdateTemplateEntry(..)) where
+import           Foreign.Storable                            (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkDescriptorType (VkDescriptorType)
+import           System.IO.Unsafe                            (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDescriptorUpdateTemplateEntry.html VkDescriptorUpdateTemplateEntry registry at www.khronos.org>
+data VkDescriptorUpdateTemplateEntry = VkDescriptorUpdateTemplateEntry## Addr##
+                                                                        ByteArray##
+
+instance Eq VkDescriptorUpdateTemplateEntry where
+        (VkDescriptorUpdateTemplateEntry## a _) ==
+          x@(VkDescriptorUpdateTemplateEntry## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDescriptorUpdateTemplateEntry where
+        (VkDescriptorUpdateTemplateEntry## a _) `compare`
+          x@(VkDescriptorUpdateTemplateEntry## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDescriptorUpdateTemplateEntry where
+        unsafeAddr (VkDescriptorUpdateTemplateEntry## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDescriptorUpdateTemplateEntry## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDescriptorUpdateTemplateEntry##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntryKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntryKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntryKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntryKHR
+       (VkDescriptorUpdateTemplateEntry(..),
+        VkDescriptorUpdateTemplateEntryKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry (VkDescriptorUpdateTemplateEntry (..))
+
+-- | Alias for `VkDescriptorUpdateTemplateEntry`
+type VkDescriptorUpdateTemplateEntryKHR =
+     VkDescriptorUpdateTemplateEntry
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntryKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntryKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDescriptorUpdateTemplateEntryKHR.hsc
+++ /dev/null
@@ -1,435 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntryKHR
-       (VkDescriptorUpdateTemplateEntryKHR(..)) where
-import           Foreign.Storable                            (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkDescriptorType (VkDescriptorType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkDescriptorUpdateTemplateEntryKHR {
---   >     uint32_t                         dstBinding;
---   >     uint32_t                         dstArrayElement;
---   >     uint32_t                         descriptorCount;
---   >     VkDescriptorType                 descriptorType;
---   >     size_t                           offset;
---   >     size_t                           stride;
---   > } VkDescriptorUpdateTemplateEntryKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDescriptorUpdateTemplateEntryKHR.html VkDescriptorUpdateTemplateEntryKHR registry at www.khronos.org>
-data VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntryKHR## Addr##
-                                                                              ByteArray##
-
-instance Eq VkDescriptorUpdateTemplateEntryKHR where
-        (VkDescriptorUpdateTemplateEntryKHR## a _) ==
-          x@(VkDescriptorUpdateTemplateEntryKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorUpdateTemplateEntryKHR where
-        (VkDescriptorUpdateTemplateEntryKHR## a _) `compare`
-          x@(VkDescriptorUpdateTemplateEntryKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorUpdateTemplateEntryKHR where
-        sizeOf ~_ = #{size VkDescriptorUpdateTemplateEntryKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorUpdateTemplateEntryKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDescriptorUpdateTemplateEntryKHR where
-        unsafeAddr (VkDescriptorUpdateTemplateEntryKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDescriptorUpdateTemplateEntryKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDescriptorUpdateTemplateEntryKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDescriptorUpdateTemplateEntryKHR where
-        type StructFields VkDescriptorUpdateTemplateEntryKHR =
-             '["dstBinding", "dstArrayElement", "descriptorCount", -- ' closing tick for hsc2hs
-               "descriptorType", "offset", "stride"]
-        type CUnionType VkDescriptorUpdateTemplateEntryKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorUpdateTemplateEntryKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorUpdateTemplateEntryKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkDstBinding VkDescriptorUpdateTemplateEntryKHR where
-        type VkDstBindingMType VkDescriptorUpdateTemplateEntryKHR = Word32
-
-        {-# NOINLINE vkDstBinding #-}
-        vkDstBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntryKHR, dstBinding})
-
-        {-# INLINE vkDstBindingByteOffset #-}
-        vkDstBindingByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, dstBinding}
-
-        {-# INLINE readVkDstBinding #-}
-        readVkDstBinding p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, dstBinding}
-
-        {-# INLINE writeVkDstBinding #-}
-        writeVkDstBinding p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstBinding" VkDescriptorUpdateTemplateEntryKHR where
-        type FieldType "dstBinding" VkDescriptorUpdateTemplateEntryKHR =
-             Word32
-        type FieldOptional "dstBinding" VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstBinding" VkDescriptorUpdateTemplateEntryKHR =
-             #{offset VkDescriptorUpdateTemplateEntryKHR, dstBinding}
-        type FieldIsArray "dstBinding" VkDescriptorUpdateTemplateEntryKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, dstBinding}
-
-instance CanReadField "dstBinding"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDstBinding
-
-        {-# INLINE readField #-}
-        readField = readVkDstBinding
-
-instance CanWriteField "dstBinding"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstBinding
-
-instance {-# OVERLAPPING #-}
-         HasVkDstArrayElement VkDescriptorUpdateTemplateEntryKHR where
-        type VkDstArrayElementMType VkDescriptorUpdateTemplateEntryKHR =
-             Word32
-
-        {-# NOINLINE vkDstArrayElement #-}
-        vkDstArrayElement x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntryKHR, dstArrayElement})
-
-        {-# INLINE vkDstArrayElementByteOffset #-}
-        vkDstArrayElementByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, dstArrayElement}
-
-        {-# INLINE readVkDstArrayElement #-}
-        readVkDstArrayElement p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, dstArrayElement}
-
-        {-# INLINE writeVkDstArrayElement #-}
-        writeVkDstArrayElement p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstArrayElement" VkDescriptorUpdateTemplateEntryKHR where
-        type FieldType "dstArrayElement" VkDescriptorUpdateTemplateEntryKHR
-             = Word32
-        type FieldOptional "dstArrayElement"
-               VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstArrayElement"
-               VkDescriptorUpdateTemplateEntryKHR
-             =
-             #{offset VkDescriptorUpdateTemplateEntryKHR, dstArrayElement}
-        type FieldIsArray "dstArrayElement"
-               VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, dstArrayElement}
-
-instance CanReadField "dstArrayElement"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDstArrayElement
-
-        {-# INLINE readField #-}
-        readField = readVkDstArrayElement
-
-instance CanWriteField "dstArrayElement"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstArrayElement
-
-instance {-# OVERLAPPING #-}
-         HasVkDescriptorCount VkDescriptorUpdateTemplateEntryKHR where
-        type VkDescriptorCountMType VkDescriptorUpdateTemplateEntryKHR =
-             Word32
-
-        {-# NOINLINE vkDescriptorCount #-}
-        vkDescriptorCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorCount})
-
-        {-# INLINE vkDescriptorCountByteOffset #-}
-        vkDescriptorCountByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorCount}
-
-        {-# INLINE readVkDescriptorCount #-}
-        readVkDescriptorCount p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorCount}
-
-        {-# INLINE writeVkDescriptorCount #-}
-        writeVkDescriptorCount p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorCount" VkDescriptorUpdateTemplateEntryKHR where
-        type FieldType "descriptorCount" VkDescriptorUpdateTemplateEntryKHR
-             = Word32
-        type FieldOptional "descriptorCount"
-               VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorCount"
-               VkDescriptorUpdateTemplateEntryKHR
-             =
-             #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorCount}
-        type FieldIsArray "descriptorCount"
-               VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorCount}
-
-instance CanReadField "descriptorCount"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorCount
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorCount
-
-instance CanWriteField "descriptorCount"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorCount
-
-instance {-# OVERLAPPING #-}
-         HasVkDescriptorType VkDescriptorUpdateTemplateEntryKHR where
-        type VkDescriptorTypeMType VkDescriptorUpdateTemplateEntryKHR =
-             VkDescriptorType
-
-        {-# NOINLINE vkDescriptorType #-}
-        vkDescriptorType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorType})
-
-        {-# INLINE vkDescriptorTypeByteOffset #-}
-        vkDescriptorTypeByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorType}
-
-        {-# INLINE readVkDescriptorType #-}
-        readVkDescriptorType p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorType}
-
-        {-# INLINE writeVkDescriptorType #-}
-        writeVkDescriptorType p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorType" VkDescriptorUpdateTemplateEntryKHR where
-        type FieldType "descriptorType" VkDescriptorUpdateTemplateEntryKHR
-             = VkDescriptorType
-        type FieldOptional "descriptorType"
-               VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorType"
-               VkDescriptorUpdateTemplateEntryKHR
-             =
-             #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorType}
-        type FieldIsArray "descriptorType"
-               VkDescriptorUpdateTemplateEntryKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, descriptorType}
-
-instance CanReadField "descriptorType"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDescriptorType
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorType
-
-instance CanWriteField "descriptorType"
-           VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorType
-
-instance {-# OVERLAPPING #-}
-         HasVkOffset VkDescriptorUpdateTemplateEntryKHR where
-        type VkOffsetMType VkDescriptorUpdateTemplateEntryKHR = CSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntryKHR, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, offset}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkDescriptorUpdateTemplateEntryKHR where
-        type FieldType "offset" VkDescriptorUpdateTemplateEntryKHR = CSize
-        type FieldOptional "offset" VkDescriptorUpdateTemplateEntryKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkDescriptorUpdateTemplateEntryKHR =
-             #{offset VkDescriptorUpdateTemplateEntryKHR, offset}
-        type FieldIsArray "offset" VkDescriptorUpdateTemplateEntryKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, offset}
-
-instance CanReadField "offset" VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkOffset
-
-        {-# INLINE readField #-}
-        readField = readVkOffset
-
-instance CanWriteField "offset" VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkStride VkDescriptorUpdateTemplateEntryKHR where
-        type VkStrideMType VkDescriptorUpdateTemplateEntryKHR = CSize
-
-        {-# NOINLINE vkStride #-}
-        vkStride x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntryKHR, stride})
-
-        {-# INLINE vkStrideByteOffset #-}
-        vkStrideByteOffset ~_
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, stride}
-
-        {-# INLINE readVkStride #-}
-        readVkStride p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, stride}
-
-        {-# INLINE writeVkStride #-}
-        writeVkStride p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntryKHR, stride}
-
-instance {-# OVERLAPPING #-}
-         HasField "stride" VkDescriptorUpdateTemplateEntryKHR where
-        type FieldType "stride" VkDescriptorUpdateTemplateEntryKHR = CSize
-        type FieldOptional "stride" VkDescriptorUpdateTemplateEntryKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stride" VkDescriptorUpdateTemplateEntryKHR =
-             #{offset VkDescriptorUpdateTemplateEntryKHR, stride}
-        type FieldIsArray "stride" VkDescriptorUpdateTemplateEntryKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntryKHR, stride}
-
-instance CanReadField "stride" VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkStride
-
-        {-# INLINE readField #-}
-        readField = readVkStride
-
-instance CanWriteField "stride" VkDescriptorUpdateTemplateEntryKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStride
-
-instance Show VkDescriptorUpdateTemplateEntryKHR where
-        showsPrec d x
-          = showString "VkDescriptorUpdateTemplateEntryKHR {" .
-              showString "vkDstBinding = " .
-                showsPrec d (vkDstBinding x) .
-                  showString ", " .
-                    showString "vkDstArrayElement = " .
-                      showsPrec d (vkDstArrayElement x) .
-                        showString ", " .
-                          showString "vkDescriptorCount = " .
-                            showsPrec d (vkDescriptorCount x) .
-                              showString ", " .
-                                showString "vkDescriptorType = " .
-                                  showsPrec d (vkDescriptorType x) .
-                                    showString ", " .
-                                      showString "vkOffset = " .
-                                        showsPrec d (vkOffset x) .
-                                          showString ", " .
-                                            showString "vkStride = " .
-                                              showsPrec d (vkStride x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
        (VkDeviceCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo  (VkDeviceQueueCreateInfo)
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDeviceCreateInfo {
@@ -32,7 +32,7 @@
 --   >     const VkPhysicalDeviceFeatures* pEnabledFeatures;
 --   > } VkDeviceCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceCreateInfo.html VkDeviceCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceCreateInfo.html VkDeviceCreateInfo registry at www.khronos.org>
 data VkDeviceCreateInfo = VkDeviceCreateInfo## Addr## ByteArray##
 
 instance Eq VkDeviceCreateInfo where
@@ -83,26 +83,6 @@
         type ReturnedOnly VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDeviceCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDeviceCreateInfo where
-        type VkSTypeMType VkDeviceCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkDeviceCreateInfo
          where
         type FieldType "sType" VkDeviceCreateInfo = VkStructureType
@@ -117,36 +97,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceCreateInfo, sType}
 
-instance CanReadField "sType" VkDeviceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, sType}
 
-instance CanWriteField "sType" VkDeviceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDeviceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDeviceCreateInfo where
-        type VkPNextMType VkDeviceCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceCreateInfo
          where
@@ -162,36 +128,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceCreateInfo, pNext}
 
-instance CanReadField "pNext" VkDeviceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkDeviceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDeviceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkDeviceCreateInfo where
-        type VkFlagsMType VkDeviceCreateInfo = VkDeviceCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDeviceCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDeviceCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkDeviceCreateInfo
          where
@@ -207,37 +159,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceCreateInfo, flags}
 
-instance CanReadField "flags" VkDeviceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueCreateInfoCount VkDeviceCreateInfo where
-        type VkQueueCreateInfoCountMType VkDeviceCreateInfo = Word32
-
-        {-# NOINLINE vkQueueCreateInfoCount #-}
-        vkQueueCreateInfoCount x
+         CanReadField "flags" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, queueCreateInfoCount})
-
-        {-# INLINE vkQueueCreateInfoCountByteOffset #-}
-        vkQueueCreateInfoCountByteOffset ~_
-          = #{offset VkDeviceCreateInfo, queueCreateInfoCount}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, flags})
 
-        {-# INLINE readVkQueueCreateInfoCount #-}
-        readVkQueueCreateInfoCount p
-          = peekByteOff p #{offset VkDeviceCreateInfo, queueCreateInfoCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, flags}
 
-        {-# INLINE writeVkQueueCreateInfoCount #-}
-        writeVkQueueCreateInfoCount p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, queueCreateInfoCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "queueCreateInfoCount" VkDeviceCreateInfo where
@@ -256,40 +193,22 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, queueCreateInfoCount}
 
-instance CanReadField "queueCreateInfoCount" VkDeviceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueCreateInfoCount
-
-        {-# INLINE readField #-}
-        readField = readVkQueueCreateInfoCount
-
-instance CanWriteField "queueCreateInfoCount" VkDeviceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueueCreateInfoCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPQueueCreateInfos VkDeviceCreateInfo where
-        type VkPQueueCreateInfosMType VkDeviceCreateInfo =
-             Ptr VkDeviceQueueCreateInfo
-
-        {-# NOINLINE vkPQueueCreateInfos #-}
-        vkPQueueCreateInfos x
+         CanReadField "queueCreateInfoCount" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pQueueCreateInfos})
-
-        {-# INLINE vkPQueueCreateInfosByteOffset #-}
-        vkPQueueCreateInfosByteOffset ~_
-          = #{offset VkDeviceCreateInfo, pQueueCreateInfos}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, queueCreateInfoCount})
 
-        {-# INLINE readVkPQueueCreateInfos #-}
-        readVkPQueueCreateInfos p
-          = peekByteOff p #{offset VkDeviceCreateInfo, pQueueCreateInfos}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, queueCreateInfoCount}
 
-        {-# INLINE writeVkPQueueCreateInfos #-}
-        writeVkPQueueCreateInfos p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, pQueueCreateInfos}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueCreateInfoCount" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, queueCreateInfoCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pQueueCreateInfos" VkDeviceCreateInfo where
@@ -307,37 +226,22 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, pQueueCreateInfos}
 
-instance CanReadField "pQueueCreateInfos" VkDeviceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPQueueCreateInfos
-
-        {-# INLINE readField #-}
-        readField = readVkPQueueCreateInfos
-
-instance CanWriteField "pQueueCreateInfos" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPQueueCreateInfos
-
 instance {-# OVERLAPPING #-}
-         HasVkEnabledLayerCount VkDeviceCreateInfo where
-        type VkEnabledLayerCountMType VkDeviceCreateInfo = Word32
-
-        {-# NOINLINE vkEnabledLayerCount #-}
-        vkEnabledLayerCount x
+         CanReadField "pQueueCreateInfos" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, enabledLayerCount})
-
-        {-# INLINE vkEnabledLayerCountByteOffset #-}
-        vkEnabledLayerCountByteOffset ~_
-          = #{offset VkDeviceCreateInfo, enabledLayerCount}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pQueueCreateInfos})
 
-        {-# INLINE readVkEnabledLayerCount #-}
-        readVkEnabledLayerCount p
-          = peekByteOff p #{offset VkDeviceCreateInfo, enabledLayerCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, pQueueCreateInfos}
 
-        {-# INLINE writeVkEnabledLayerCount #-}
-        writeVkEnabledLayerCount p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, enabledLayerCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pQueueCreateInfos" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, pQueueCreateInfos}
 
 instance {-# OVERLAPPING #-}
          HasField "enabledLayerCount" VkDeviceCreateInfo where
@@ -354,37 +258,22 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, enabledLayerCount}
 
-instance CanReadField "enabledLayerCount" VkDeviceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkEnabledLayerCount
-
-        {-# INLINE readField #-}
-        readField = readVkEnabledLayerCount
-
-instance CanWriteField "enabledLayerCount" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkEnabledLayerCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPpEnabledLayerNames VkDeviceCreateInfo where
-        type VkPpEnabledLayerNamesMType VkDeviceCreateInfo = Ptr CString
-
-        {-# NOINLINE vkPpEnabledLayerNames #-}
-        vkPpEnabledLayerNames x
+         CanReadField "enabledLayerCount" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, ppEnabledLayerNames})
-
-        {-# INLINE vkPpEnabledLayerNamesByteOffset #-}
-        vkPpEnabledLayerNamesByteOffset ~_
-          = #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, enabledLayerCount})
 
-        {-# INLINE readVkPpEnabledLayerNames #-}
-        readVkPpEnabledLayerNames p
-          = peekByteOff p #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, enabledLayerCount}
 
-        {-# INLINE writeVkPpEnabledLayerNames #-}
-        writeVkPpEnabledLayerNames p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
+instance {-# OVERLAPPING #-}
+         CanWriteField "enabledLayerCount" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, enabledLayerCount}
 
 instance {-# OVERLAPPING #-}
          HasField "ppEnabledLayerNames" VkDeviceCreateInfo where
@@ -403,39 +292,22 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
 
-instance CanReadField "ppEnabledLayerNames" VkDeviceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPpEnabledLayerNames
-
-        {-# INLINE readField #-}
-        readField = readVkPpEnabledLayerNames
-
-instance CanWriteField "ppEnabledLayerNames" VkDeviceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPpEnabledLayerNames
-
 instance {-# OVERLAPPING #-}
-         HasVkEnabledExtensionCount VkDeviceCreateInfo where
-        type VkEnabledExtensionCountMType VkDeviceCreateInfo = Word32
-
-        {-# NOINLINE vkEnabledExtensionCount #-}
-        vkEnabledExtensionCount x
+         CanReadField "ppEnabledLayerNames" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, enabledExtensionCount})
-
-        {-# INLINE vkEnabledExtensionCountByteOffset #-}
-        vkEnabledExtensionCountByteOffset ~_
-          = #{offset VkDeviceCreateInfo, enabledExtensionCount}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, ppEnabledLayerNames})
 
-        {-# INLINE readVkEnabledExtensionCount #-}
-        readVkEnabledExtensionCount p
-          = peekByteOff p #{offset VkDeviceCreateInfo, enabledExtensionCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
 
-        {-# INLINE writeVkEnabledExtensionCount #-}
-        writeVkEnabledExtensionCount p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, enabledExtensionCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "ppEnabledLayerNames" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
 
 instance {-# OVERLAPPING #-}
          HasField "enabledExtensionCount" VkDeviceCreateInfo where
@@ -454,40 +326,22 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, enabledExtensionCount}
 
-instance CanReadField "enabledExtensionCount" VkDeviceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkEnabledExtensionCount
-
-        {-# INLINE readField #-}
-        readField = readVkEnabledExtensionCount
-
-instance CanWriteField "enabledExtensionCount" VkDeviceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkEnabledExtensionCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPpEnabledExtensionNames VkDeviceCreateInfo where
-        type VkPpEnabledExtensionNamesMType VkDeviceCreateInfo =
-             Ptr CString
-
-        {-# NOINLINE vkPpEnabledExtensionNames #-}
-        vkPpEnabledExtensionNames x
+         CanReadField "enabledExtensionCount" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, ppEnabledExtensionNames})
-
-        {-# INLINE vkPpEnabledExtensionNamesByteOffset #-}
-        vkPpEnabledExtensionNamesByteOffset ~_
-          = #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, enabledExtensionCount})
 
-        {-# INLINE readVkPpEnabledExtensionNames #-}
-        readVkPpEnabledExtensionNames p
-          = peekByteOff p #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, enabledExtensionCount}
 
-        {-# INLINE writeVkPpEnabledExtensionNames #-}
-        writeVkPpEnabledExtensionNames p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
+instance {-# OVERLAPPING #-}
+         CanWriteField "enabledExtensionCount" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, enabledExtensionCount}
 
 instance {-# OVERLAPPING #-}
          HasField "ppEnabledExtensionNames" VkDeviceCreateInfo where
@@ -507,40 +361,22 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
 
-instance CanReadField "ppEnabledExtensionNames" VkDeviceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPpEnabledExtensionNames
-
-        {-# INLINE readField #-}
-        readField = readVkPpEnabledExtensionNames
-
-instance CanWriteField "ppEnabledExtensionNames" VkDeviceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPpEnabledExtensionNames
-
 instance {-# OVERLAPPING #-}
-         HasVkPEnabledFeatures VkDeviceCreateInfo where
-        type VkPEnabledFeaturesMType VkDeviceCreateInfo =
-             Ptr VkPhysicalDeviceFeatures
-
-        {-# NOINLINE vkPEnabledFeatures #-}
-        vkPEnabledFeatures x
+         CanReadField "ppEnabledExtensionNames" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pEnabledFeatures})
-
-        {-# INLINE vkPEnabledFeaturesByteOffset #-}
-        vkPEnabledFeaturesByteOffset ~_
-          = #{offset VkDeviceCreateInfo, pEnabledFeatures}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, ppEnabledExtensionNames})
 
-        {-# INLINE readVkPEnabledFeatures #-}
-        readVkPEnabledFeatures p
-          = peekByteOff p #{offset VkDeviceCreateInfo, pEnabledFeatures}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
 
-        {-# INLINE writeVkPEnabledFeatures #-}
-        writeVkPEnabledFeatures p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, pEnabledFeatures}
+instance {-# OVERLAPPING #-}
+         CanWriteField "ppEnabledExtensionNames" VkDeviceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
 
 instance {-# OVERLAPPING #-}
          HasField "pEnabledFeatures" VkDeviceCreateInfo where
@@ -558,54 +394,66 @@
         fieldOffset
           = #{offset VkDeviceCreateInfo, pEnabledFeatures}
 
-instance CanReadField "pEnabledFeatures" VkDeviceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPEnabledFeatures
+instance {-# OVERLAPPING #-}
+         CanReadField "pEnabledFeatures" VkDeviceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pEnabledFeatures})
 
         {-# INLINE readField #-}
-        readField = readVkPEnabledFeatures
+        readField p
+          = peekByteOff p #{offset VkDeviceCreateInfo, pEnabledFeatures}
 
-instance CanWriteField "pEnabledFeatures" VkDeviceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pEnabledFeatures" VkDeviceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPEnabledFeatures
+        writeField p
+          = pokeByteOff p #{offset VkDeviceCreateInfo, pEnabledFeatures}
 
 instance Show VkDeviceCreateInfo where
         showsPrec d x
           = showString "VkDeviceCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkQueueCreateInfoCount = " .
-                                  showsPrec d (vkQueueCreateInfoCount x) .
+                                showString "queueCreateInfoCount = " .
+                                  showsPrec d (getField @"queueCreateInfoCount" x) .
                                     showString ", " .
-                                      showString "vkPQueueCreateInfos = " .
-                                        showsPrec d (vkPQueueCreateInfos x) .
+                                      showString "pQueueCreateInfos = " .
+                                        showsPrec d (getField @"pQueueCreateInfos" x) .
                                           showString ", " .
-                                            showString "vkEnabledLayerCount = " .
-                                              showsPrec d (vkEnabledLayerCount x) .
+                                            showString "enabledLayerCount = " .
+                                              showsPrec d (getField @"enabledLayerCount" x) .
                                                 showString ", " .
-                                                  showString "vkPpEnabledLayerNames = " .
-                                                    showsPrec d (vkPpEnabledLayerNames x) .
+                                                  showString "ppEnabledLayerNames = " .
+                                                    showsPrec d (getField @"ppEnabledLayerNames" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkEnabledExtensionCount = " .
-                                                          showsPrec d (vkEnabledExtensionCount x) .
+                                                        showString "enabledExtensionCount = " .
+                                                          showsPrec d
+                                                            (getField @"enabledExtensionCount" x)
+                                                            .
                                                             showString ", " .
                                                               showString
-                                                                "vkPpEnabledExtensionNames = "
+                                                                "ppEnabledExtensionNames = "
                                                                 .
                                                                 showsPrec d
-                                                                  (vkPpEnabledExtensionNames x)
+                                                                  (getField
+                                                                     @"ppEnabledExtensionNames"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
-                                                                    showString
-                                                                      "vkPEnabledFeatures = "
+                                                                    showString "pEnabledFeatures = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkPEnabledFeatures x)
+                                                                        (getField
+                                                                           @"pEnabledFeatures"
+                                                                           x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceEventInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceEventInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceEventInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceEventInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDeviceEventInfoEXT
        (VkDeviceEventInfoEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkDeviceEventTypeEXT (VkDeviceEventTypeEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDeviceEventInfoEXT {
@@ -23,7 +23,7 @@
 --   >     VkDeviceEventTypeEXT             deviceEvent;
 --   > } VkDeviceEventInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceEventInfoEXT.html VkDeviceEventInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceEventInfoEXT.html VkDeviceEventInfoEXT registry at www.khronos.org>
 data VkDeviceEventInfoEXT = VkDeviceEventInfoEXT## Addr## ByteArray##
 
 instance Eq VkDeviceEventInfoEXT where
@@ -71,26 +71,6 @@
         type ReturnedOnly VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDeviceEventInfoEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDeviceEventInfoEXT where
-        type VkSTypeMType VkDeviceEventInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceEventInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceEventInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceEventInfoEXT, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkDeviceEventInfoEXT
          where
         type FieldType "sType" VkDeviceEventInfoEXT = VkStructureType
@@ -105,36 +85,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceEventInfoEXT, sType}
 
-instance CanReadField "sType" VkDeviceEventInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDeviceEventInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDeviceEventInfoEXT, sType}
 
-instance CanWriteField "sType" VkDeviceEventInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDeviceEventInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDeviceEventInfoEXT where
-        type VkPNextMType VkDeviceEventInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceEventInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceEventInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceEventInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceEventInfoEXT, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceEventInfoEXT
          where
@@ -150,37 +116,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceEventInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDeviceEventInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDeviceEventInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDeviceEventInfoEXT, pNext}
 
-instance CanWriteField "pNext" VkDeviceEventInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDeviceEventInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkDeviceEvent VkDeviceEventInfoEXT
-         where
-        type VkDeviceEventMType VkDeviceEventInfoEXT = VkDeviceEventTypeEXT
-
-        {-# NOINLINE vkDeviceEvent #-}
-        vkDeviceEvent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, deviceEvent})
-
-        {-# INLINE vkDeviceEventByteOffset #-}
-        vkDeviceEventByteOffset ~_
-          = #{offset VkDeviceEventInfoEXT, deviceEvent}
-
-        {-# INLINE readVkDeviceEvent #-}
-        readVkDeviceEvent p
-          = peekByteOff p #{offset VkDeviceEventInfoEXT, deviceEvent}
-
-        {-# INLINE writeVkDeviceEvent #-}
-        writeVkDeviceEvent p
-          = pokeByteOff p #{offset VkDeviceEventInfoEXT, deviceEvent}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceEventInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "deviceEvent" VkDeviceEventInfoEXT where
@@ -198,25 +149,31 @@
         fieldOffset
           = #{offset VkDeviceEventInfoEXT, deviceEvent}
 
-instance CanReadField "deviceEvent" VkDeviceEventInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkDeviceEvent
+instance {-# OVERLAPPING #-}
+         CanReadField "deviceEvent" VkDeviceEventInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, deviceEvent})
 
         {-# INLINE readField #-}
-        readField = readVkDeviceEvent
+        readField p
+          = peekByteOff p #{offset VkDeviceEventInfoEXT, deviceEvent}
 
-instance CanWriteField "deviceEvent" VkDeviceEventInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "deviceEvent" VkDeviceEventInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkDeviceEvent
+        writeField p
+          = pokeByteOff p #{offset VkDeviceEventInfoEXT, deviceEvent}
 
 instance Show VkDeviceEventInfoEXT where
         showsPrec d x
           = showString "VkDeviceEventInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDeviceEvent = " .
-                            showsPrec d (vkDeviceEvent x) . showChar '}'
+                          showString "deviceEvent = " .
+                            showsPrec d (getField @"deviceEvent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsFeaturesNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsFeaturesNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsFeaturesNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsFeaturesNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsFeaturesNVX
        (VkDeviceGeneratedCommandsFeaturesNVX(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.BaseTypes            (VkBool32)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
@@ -23,7 +23,7 @@
 --   >     VkBool32                         computeBindingPointSupport;
 --   > } VkDeviceGeneratedCommandsFeaturesNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGeneratedCommandsFeaturesNVX.html VkDeviceGeneratedCommandsFeaturesNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceGeneratedCommandsFeaturesNVX.html VkDeviceGeneratedCommandsFeaturesNVX registry at www.khronos.org>
 data VkDeviceGeneratedCommandsFeaturesNVX = VkDeviceGeneratedCommandsFeaturesNVX## Addr##
                                                                                   ByteArray##
 
@@ -80,28 +80,6 @@
         type StructExtends VkDeviceGeneratedCommandsFeaturesNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGeneratedCommandsFeaturesNVX where
-        type VkSTypeMType VkDeviceGeneratedCommandsFeaturesNVX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
         type FieldType "sType" VkDeviceGeneratedCommandsFeaturesNVX =
              VkStructureType
@@ -119,39 +97,22 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
 
-instance CanReadField "sType" VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGeneratedCommandsFeaturesNVX where
-        type VkPNextMType VkDeviceGeneratedCommandsFeaturesNVX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
@@ -171,43 +132,22 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
 
-instance CanReadField "pNext" VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkComputeBindingPointSupport
-           VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        type VkComputeBindingPointSupportMType
-               VkDeviceGeneratedCommandsFeaturesNVX
-             = VkBool32
-
-        {-# NOINLINE vkComputeBindingPointSupport #-}
-        vkComputeBindingPointSupport x
+         CanReadField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport})
-
-        {-# INLINE vkComputeBindingPointSupportByteOffset #-}
-        vkComputeBindingPointSupportByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext})
 
-        {-# INLINE readVkComputeBindingPointSupport #-}
-        readVkComputeBindingPointSupport p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
 
-        {-# INLINE writeVkComputeBindingPointSupport #-}
-        writeVkComputeBindingPointSupport p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "computeBindingPointSupport"
@@ -234,29 +174,36 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
 
-instance CanReadField "computeBindingPointSupport"
+instance {-# OVERLAPPING #-}
+         CanReadField "computeBindingPointSupport"
            VkDeviceGeneratedCommandsFeaturesNVX
          where
-        {-# INLINE getField #-}
-        getField = vkComputeBindingPointSupport
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport})
 
         {-# INLINE readField #-}
-        readField = readVkComputeBindingPointSupport
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
 
-instance CanWriteField "computeBindingPointSupport"
+instance {-# OVERLAPPING #-}
+         CanWriteField "computeBindingPointSupport"
            VkDeviceGeneratedCommandsFeaturesNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkComputeBindingPointSupport
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
 
 instance Show VkDeviceGeneratedCommandsFeaturesNVX where
         showsPrec d x
           = showString "VkDeviceGeneratedCommandsFeaturesNVX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkComputeBindingPointSupport = " .
-                            showsPrec d (vkComputeBindingPointSupport x) . showChar '}'
+                          showString "computeBindingPointSupport = " .
+                            showsPrec d (getField @"computeBindingPointSupport" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsLimitsNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsLimitsNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsLimitsNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGeneratedCommandsLimitsNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsLimitsNVX
        (VkDeviceGeneratedCommandsLimitsNVX(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDeviceGeneratedCommandsLimitsNVX {
@@ -26,7 +26,7 @@
 --   >     uint32_t                         minCommandsTokenBufferOffsetAlignment;
 --   > } VkDeviceGeneratedCommandsLimitsNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGeneratedCommandsLimitsNVX.html VkDeviceGeneratedCommandsLimitsNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceGeneratedCommandsLimitsNVX.html VkDeviceGeneratedCommandsLimitsNVX registry at www.khronos.org>
 data VkDeviceGeneratedCommandsLimitsNVX = VkDeviceGeneratedCommandsLimitsNVX## Addr##
                                                                               ByteArray##
 
@@ -84,28 +84,6 @@
         type StructExtends VkDeviceGeneratedCommandsLimitsNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGeneratedCommandsLimitsNVX where
-        type VkSTypeMType VkDeviceGeneratedCommandsLimitsNVX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDeviceGeneratedCommandsLimitsNVX where
         type FieldType "sType" VkDeviceGeneratedCommandsLimitsNVX =
              VkStructureType
@@ -123,39 +101,22 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
 
-instance CanReadField "sType" VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGeneratedCommandsLimitsNVX where
-        type VkPNextMType VkDeviceGeneratedCommandsLimitsNVX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDeviceGeneratedCommandsLimitsNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDeviceGeneratedCommandsLimitsNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
@@ -175,43 +136,22 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
 
-instance CanReadField "pNext" VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxIndirectCommandsLayoutTokenCount
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        type VkMaxIndirectCommandsLayoutTokenCountMType
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-
-        {-# NOINLINE vkMaxIndirectCommandsLayoutTokenCount #-}
-        vkMaxIndirectCommandsLayoutTokenCount x
+         CanReadField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount})
-
-        {-# INLINE vkMaxIndirectCommandsLayoutTokenCountByteOffset #-}
-        vkMaxIndirectCommandsLayoutTokenCountByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext})
 
-        {-# INLINE readVkMaxIndirectCommandsLayoutTokenCount #-}
-        readVkMaxIndirectCommandsLayoutTokenCount p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
 
-        {-# INLINE writeVkMaxIndirectCommandsLayoutTokenCount #-}
-        writeVkMaxIndirectCommandsLayoutTokenCount p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "maxIndirectCommandsLayoutTokenCount"
@@ -238,42 +178,26 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
 
-instance CanReadField "maxIndirectCommandsLayoutTokenCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxIndirectCommandsLayoutTokenCount"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxIndirectCommandsLayoutTokenCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount})
 
         {-# INLINE readField #-}
-        readField = readVkMaxIndirectCommandsLayoutTokenCount
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
 
-instance CanWriteField "maxIndirectCommandsLayoutTokenCount"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxIndirectCommandsLayoutTokenCount"
            VkDeviceGeneratedCommandsLimitsNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxIndirectCommandsLayoutTokenCount
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxObjectEntryCounts VkDeviceGeneratedCommandsLimitsNVX where
-        type VkMaxObjectEntryCountsMType VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-
-        {-# NOINLINE vkMaxObjectEntryCounts #-}
-        vkMaxObjectEntryCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts})
-
-        {-# INLINE vkMaxObjectEntryCountsByteOffset #-}
-        vkMaxObjectEntryCountsByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
-
-        {-# INLINE readVkMaxObjectEntryCounts #-}
-        readVkMaxObjectEntryCounts p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
-
-        {-# INLINE writeVkMaxObjectEntryCounts #-}
-        writeVkMaxObjectEntryCounts p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
 
 instance {-# OVERLAPPING #-}
          HasField "maxObjectEntryCounts" VkDeviceGeneratedCommandsLimitsNVX
@@ -299,45 +223,26 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
 
-instance CanReadField "maxObjectEntryCounts"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxObjectEntryCounts"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxObjectEntryCounts
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts})
 
         {-# INLINE readField #-}
-        readField = readVkMaxObjectEntryCounts
-
-instance CanWriteField "maxObjectEntryCounts"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMaxObjectEntryCounts
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
 
 instance {-# OVERLAPPING #-}
-         HasVkMinSequenceCountBufferOffsetAlignment
+         CanWriteField "maxObjectEntryCounts"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        type VkMinSequenceCountBufferOffsetAlignmentMType
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-
-        {-# NOINLINE vkMinSequenceCountBufferOffsetAlignment #-}
-        vkMinSequenceCountBufferOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment})
-
-        {-# INLINE vkMinSequenceCountBufferOffsetAlignmentByteOffset #-}
-        vkMinSequenceCountBufferOffsetAlignmentByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
-
-        {-# INLINE readVkMinSequenceCountBufferOffsetAlignment #-}
-        readVkMinSequenceCountBufferOffsetAlignment p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
-
-        {-# INLINE writeVkMinSequenceCountBufferOffsetAlignment #-}
-        writeVkMinSequenceCountBufferOffsetAlignment p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
 
 instance {-# OVERLAPPING #-}
          HasField "minSequenceCountBufferOffsetAlignment"
@@ -364,45 +269,26 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
 
-instance CanReadField "minSequenceCountBufferOffsetAlignment"
+instance {-# OVERLAPPING #-}
+         CanReadField "minSequenceCountBufferOffsetAlignment"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMinSequenceCountBufferOffsetAlignment
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment})
 
         {-# INLINE readField #-}
-        readField = readVkMinSequenceCountBufferOffsetAlignment
-
-instance CanWriteField "minSequenceCountBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMinSequenceCountBufferOffsetAlignment
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
 
 instance {-# OVERLAPPING #-}
-         HasVkMinSequenceIndexBufferOffsetAlignment
+         CanWriteField "minSequenceCountBufferOffsetAlignment"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        type VkMinSequenceIndexBufferOffsetAlignmentMType
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-
-        {-# NOINLINE vkMinSequenceIndexBufferOffsetAlignment #-}
-        vkMinSequenceIndexBufferOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment})
-
-        {-# INLINE vkMinSequenceIndexBufferOffsetAlignmentByteOffset #-}
-        vkMinSequenceIndexBufferOffsetAlignmentByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
-
-        {-# INLINE readVkMinSequenceIndexBufferOffsetAlignment #-}
-        readVkMinSequenceIndexBufferOffsetAlignment p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
-
-        {-# INLINE writeVkMinSequenceIndexBufferOffsetAlignment #-}
-        writeVkMinSequenceIndexBufferOffsetAlignment p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
 
 instance {-# OVERLAPPING #-}
          HasField "minSequenceIndexBufferOffsetAlignment"
@@ -429,45 +315,26 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
 
-instance CanReadField "minSequenceIndexBufferOffsetAlignment"
+instance {-# OVERLAPPING #-}
+         CanReadField "minSequenceIndexBufferOffsetAlignment"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMinSequenceIndexBufferOffsetAlignment
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment})
 
         {-# INLINE readField #-}
-        readField = readVkMinSequenceIndexBufferOffsetAlignment
-
-instance CanWriteField "minSequenceIndexBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMinSequenceIndexBufferOffsetAlignment
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
 
 instance {-# OVERLAPPING #-}
-         HasVkMinCommandsTokenBufferOffsetAlignment
+         CanWriteField "minSequenceIndexBufferOffsetAlignment"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        type VkMinCommandsTokenBufferOffsetAlignmentMType
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-
-        {-# NOINLINE vkMinCommandsTokenBufferOffsetAlignment #-}
-        vkMinCommandsTokenBufferOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment})
-
-        {-# INLINE vkMinCommandsTokenBufferOffsetAlignmentByteOffset #-}
-        vkMinCommandsTokenBufferOffsetAlignmentByteOffset ~_
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
-
-        {-# INLINE readVkMinCommandsTokenBufferOffsetAlignment #-}
-        readVkMinCommandsTokenBufferOffsetAlignment p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
-
-        {-# INLINE writeVkMinCommandsTokenBufferOffsetAlignment #-}
-        writeVkMinCommandsTokenBufferOffsetAlignment p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
 
 instance {-# OVERLAPPING #-}
          HasField "minCommandsTokenBufferOffsetAlignment"
@@ -494,48 +361,58 @@
         fieldOffset
           = #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
 
-instance CanReadField "minCommandsTokenBufferOffsetAlignment"
+instance {-# OVERLAPPING #-}
+         CanReadField "minCommandsTokenBufferOffsetAlignment"
            VkDeviceGeneratedCommandsLimitsNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMinCommandsTokenBufferOffsetAlignment
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment})
 
         {-# INLINE readField #-}
-        readField = readVkMinCommandsTokenBufferOffsetAlignment
+        readField p
+          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
 
-instance CanWriteField "minCommandsTokenBufferOffsetAlignment"
+instance {-# OVERLAPPING #-}
+         CanWriteField "minCommandsTokenBufferOffsetAlignment"
            VkDeviceGeneratedCommandsLimitsNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMinCommandsTokenBufferOffsetAlignment
+        writeField p
+          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
 
 instance Show VkDeviceGeneratedCommandsLimitsNVX where
         showsPrec d x
           = showString "VkDeviceGeneratedCommandsLimitsNVX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMaxIndirectCommandsLayoutTokenCount = " .
-                            showsPrec d (vkMaxIndirectCommandsLayoutTokenCount x) .
+                          showString "maxIndirectCommandsLayoutTokenCount = " .
+                            showsPrec d (getField @"maxIndirectCommandsLayoutTokenCount" x) .
                               showString ", " .
-                                showString "vkMaxObjectEntryCounts = " .
-                                  showsPrec d (vkMaxObjectEntryCounts x) .
+                                showString "maxObjectEntryCounts = " .
+                                  showsPrec d (getField @"maxObjectEntryCounts" x) .
                                     showString ", " .
-                                      showString "vkMinSequenceCountBufferOffsetAlignment = " .
-                                        showsPrec d (vkMinSequenceCountBufferOffsetAlignment x) .
+                                      showString "minSequenceCountBufferOffsetAlignment = " .
+                                        showsPrec d
+                                          (getField @"minSequenceCountBufferOffsetAlignment" x)
+                                          .
                                           showString ", " .
-                                            showString "vkMinSequenceIndexBufferOffsetAlignment = "
-                                              .
+                                            showString "minSequenceIndexBufferOffsetAlignment = " .
                                               showsPrec d
-                                                (vkMinSequenceIndexBufferOffsetAlignment x)
+                                                (getField @"minSequenceIndexBufferOffsetAlignment"
+                                                   x)
                                                 .
                                                 showString ", " .
                                                   showString
-                                                    "vkMinCommandsTokenBufferOffsetAlignment = "
+                                                    "minCommandsTokenBufferOffsetAlignment = "
                                                     .
                                                     showsPrec d
-                                                      (vkMinCommandsTokenBufferOffsetAlignment x)
+                                                      (getField
+                                                         @"minCommandsTokenBufferOffsetAlignment"
+                                                         x)
                                                       . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfo.hsc
@@ -0,0 +1,232 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfo
+       (VkDeviceGroupBindSparseInfo(..)) where
+import           Foreign.Storable                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkBindSparseInfo (VkBindSparseInfo)
+import           System.IO.Unsafe                              (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceGroupBindSparseInfo.html VkDeviceGroupBindSparseInfo registry at www.khronos.org>
+data VkDeviceGroupBindSparseInfo = VkDeviceGroupBindSparseInfo## Addr##
+                                                                ByteArray##
+
+instance Eq VkDeviceGroupBindSparseInfo where
+        (VkDeviceGroupBindSparseInfo## a _) ==
+          x@(VkDeviceGroupBindSparseInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupBindSparseInfo where
+        (VkDeviceGroupBindSparseInfo## a _) `compare`
+          x@(VkDeviceGroupBindSparseInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupBindSparseInfo where
+        unsafeAddr (VkDeviceGroupBindSparseInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupBindSparseInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupBindSparseInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfoKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHR
+       (VkDeviceGroupBindSparseInfo(..), VkDeviceGroupBindSparseInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfo (VkDeviceGroupBindSparseInfo (..))
+
+-- | Alias for `VkDeviceGroupBindSparseInfo`
+type VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupBindSparseInfoKHX.hsc
+++ /dev/null
@@ -1,306 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHX
-       (VkDeviceGroupBindSparseInfoKHX(..)) where
-import           Foreign.Storable                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkBindSparseInfo (VkBindSparseInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupBindSparseInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         resourceDeviceIndex;
---   >     uint32_t                         memoryDeviceIndex;
---   > } VkDeviceGroupBindSparseInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupBindSparseInfoKHX.html VkDeviceGroupBindSparseInfoKHX registry at www.khronos.org>
-data VkDeviceGroupBindSparseInfoKHX = VkDeviceGroupBindSparseInfoKHX## Addr##
-                                                                      ByteArray##
-
-instance Eq VkDeviceGroupBindSparseInfoKHX where
-        (VkDeviceGroupBindSparseInfoKHX## a _) ==
-          x@(VkDeviceGroupBindSparseInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupBindSparseInfoKHX where
-        (VkDeviceGroupBindSparseInfoKHX## a _) `compare`
-          x@(VkDeviceGroupBindSparseInfoKHX## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupBindSparseInfoKHX where
-        sizeOf ~_ = #{size VkDeviceGroupBindSparseInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupBindSparseInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupBindSparseInfoKHX where
-        unsafeAddr (VkDeviceGroupBindSparseInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupBindSparseInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupBindSparseInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupBindSparseInfoKHX where
-        type StructFields VkDeviceGroupBindSparseInfoKHX =
-             '["sType", "pNext", "resourceDeviceIndex", "memoryDeviceIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupBindSparseInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupBindSparseInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupBindSparseInfoKHX =
-             '[VkBindSparseInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGroupBindSparseInfoKHX where
-        type VkSTypeMType VkDeviceGroupBindSparseInfoKHX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupBindSparseInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupBindSparseInfoKHX where
-        type FieldType "sType" VkDeviceGroupBindSparseInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupBindSparseInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupBindSparseInfoKHX =
-             #{offset VkDeviceGroupBindSparseInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupBindSparseInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfoKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupBindSparseInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGroupBindSparseInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGroupBindSparseInfoKHX where
-        type VkPNextMType VkDeviceGroupBindSparseInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupBindSparseInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupBindSparseInfoKHX where
-        type FieldType "pNext" VkDeviceGroupBindSparseInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupBindSparseInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupBindSparseInfoKHX =
-             #{offset VkDeviceGroupBindSparseInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupBindSparseInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfoKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupBindSparseInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGroupBindSparseInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkResourceDeviceIndex VkDeviceGroupBindSparseInfoKHX where
-        type VkResourceDeviceIndexMType VkDeviceGroupBindSparseInfoKHX =
-             Word32
-
-        {-# NOINLINE vkResourceDeviceIndex #-}
-        vkResourceDeviceIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfoKHX, resourceDeviceIndex})
-
-        {-# INLINE vkResourceDeviceIndexByteOffset #-}
-        vkResourceDeviceIndexByteOffset ~_
-          = #{offset VkDeviceGroupBindSparseInfoKHX, resourceDeviceIndex}
-
-        {-# INLINE readVkResourceDeviceIndex #-}
-        readVkResourceDeviceIndex p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, resourceDeviceIndex}
-
-        {-# INLINE writeVkResourceDeviceIndex #-}
-        writeVkResourceDeviceIndex p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, resourceDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "resourceDeviceIndex" VkDeviceGroupBindSparseInfoKHX where
-        type FieldType "resourceDeviceIndex" VkDeviceGroupBindSparseInfoKHX
-             = Word32
-        type FieldOptional "resourceDeviceIndex"
-               VkDeviceGroupBindSparseInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "resourceDeviceIndex"
-               VkDeviceGroupBindSparseInfoKHX
-             =
-             #{offset VkDeviceGroupBindSparseInfoKHX, resourceDeviceIndex}
-        type FieldIsArray "resourceDeviceIndex"
-               VkDeviceGroupBindSparseInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfoKHX, resourceDeviceIndex}
-
-instance CanReadField "resourceDeviceIndex"
-           VkDeviceGroupBindSparseInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkResourceDeviceIndex
-
-        {-# INLINE readField #-}
-        readField = readVkResourceDeviceIndex
-
-instance CanWriteField "resourceDeviceIndex"
-           VkDeviceGroupBindSparseInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkResourceDeviceIndex
-
-instance {-# OVERLAPPING #-}
-         HasVkMemoryDeviceIndex VkDeviceGroupBindSparseInfoKHX where
-        type VkMemoryDeviceIndexMType VkDeviceGroupBindSparseInfoKHX =
-             Word32
-
-        {-# NOINLINE vkMemoryDeviceIndex #-}
-        vkMemoryDeviceIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfoKHX, memoryDeviceIndex})
-
-        {-# INLINE vkMemoryDeviceIndexByteOffset #-}
-        vkMemoryDeviceIndexByteOffset ~_
-          = #{offset VkDeviceGroupBindSparseInfoKHX, memoryDeviceIndex}
-
-        {-# INLINE readVkMemoryDeviceIndex #-}
-        readVkMemoryDeviceIndex p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, memoryDeviceIndex}
-
-        {-# INLINE writeVkMemoryDeviceIndex #-}
-        writeVkMemoryDeviceIndex p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfoKHX, memoryDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryDeviceIndex" VkDeviceGroupBindSparseInfoKHX where
-        type FieldType "memoryDeviceIndex" VkDeviceGroupBindSparseInfoKHX =
-             Word32
-        type FieldOptional "memoryDeviceIndex"
-               VkDeviceGroupBindSparseInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryDeviceIndex" VkDeviceGroupBindSparseInfoKHX
-             =
-             #{offset VkDeviceGroupBindSparseInfoKHX, memoryDeviceIndex}
-        type FieldIsArray "memoryDeviceIndex"
-               VkDeviceGroupBindSparseInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfoKHX, memoryDeviceIndex}
-
-instance CanReadField "memoryDeviceIndex"
-           VkDeviceGroupBindSparseInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkMemoryDeviceIndex
-
-        {-# INLINE readField #-}
-        readField = readVkMemoryDeviceIndex
-
-instance CanWriteField "memoryDeviceIndex"
-           VkDeviceGroupBindSparseInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemoryDeviceIndex
-
-instance Show VkDeviceGroupBindSparseInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupBindSparseInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkResourceDeviceIndex = " .
-                            showsPrec d (vkResourceDeviceIndex x) .
-                              showString ", " .
-                                showString "vkMemoryDeviceIndex = " .
-                                  showsPrec d (vkMemoryDeviceIndex x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfo.hsc
@@ -0,0 +1,198 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfo
+       (VkDeviceGroupCommandBufferBeginInfo(..)) where
+import           Foreign.Storable                                      (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo (VkCommandBufferBeginInfo)
+import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDeviceGroupCommandBufferBeginInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         deviceMask;
+--   > } VkDeviceGroupCommandBufferBeginInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceGroupCommandBufferBeginInfo.html VkDeviceGroupCommandBufferBeginInfo registry at www.khronos.org>
+data VkDeviceGroupCommandBufferBeginInfo = VkDeviceGroupCommandBufferBeginInfo## Addr##
+                                                                                ByteArray##
+
+instance Eq VkDeviceGroupCommandBufferBeginInfo where
+        (VkDeviceGroupCommandBufferBeginInfo## a _) ==
+          x@(VkDeviceGroupCommandBufferBeginInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupCommandBufferBeginInfo where
+        (VkDeviceGroupCommandBufferBeginInfo## a _) `compare`
+          x@(VkDeviceGroupCommandBufferBeginInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupCommandBufferBeginInfo
+         where
+        unsafeAddr (VkDeviceGroupCommandBufferBeginInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupCommandBufferBeginInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupCommandBufferBeginInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfoKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHR
+       (VkDeviceGroupCommandBufferBeginInfo(..),
+        VkDeviceGroupCommandBufferBeginInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfo
+                                                                                   (VkDeviceGroupCommandBufferBeginInfo (..))
+
+-- | Alias for `VkDeviceGroupCommandBufferBeginInfo`
+type VkDeviceGroupCommandBufferBeginInfoKHR =
+     VkDeviceGroupCommandBufferBeginInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupCommandBufferBeginInfoKHX.hsc
+++ /dev/null
@@ -1,261 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHX
-       (VkDeviceGroupCommandBufferBeginInfoKHX(..)) where
-import           Foreign.Storable                                      (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkCommandBufferBeginInfo (VkCommandBufferBeginInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupCommandBufferBeginInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         deviceMask;
---   > } VkDeviceGroupCommandBufferBeginInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupCommandBufferBeginInfoKHX.html VkDeviceGroupCommandBufferBeginInfoKHX registry at www.khronos.org>
-data VkDeviceGroupCommandBufferBeginInfoKHX = VkDeviceGroupCommandBufferBeginInfoKHX## Addr##
-                                                                                      ByteArray##
-
-instance Eq VkDeviceGroupCommandBufferBeginInfoKHX where
-        (VkDeviceGroupCommandBufferBeginInfoKHX## a _) ==
-          x@(VkDeviceGroupCommandBufferBeginInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupCommandBufferBeginInfoKHX where
-        (VkDeviceGroupCommandBufferBeginInfoKHX## a _) `compare`
-          x@(VkDeviceGroupCommandBufferBeginInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupCommandBufferBeginInfoKHX where
-        sizeOf ~_
-          = #{size VkDeviceGroupCommandBufferBeginInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupCommandBufferBeginInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        unsafeAddr (VkDeviceGroupCommandBufferBeginInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupCommandBufferBeginInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupCommandBufferBeginInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupCommandBufferBeginInfoKHX where
-        type StructFields VkDeviceGroupCommandBufferBeginInfoKHX =
-             '["sType", "pNext", "deviceMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupCommandBufferBeginInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupCommandBufferBeginInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupCommandBufferBeginInfoKHX =
-             '[VkCommandBufferBeginInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGroupCommandBufferBeginInfoKHX where
-        type VkSTypeMType VkDeviceGroupCommandBufferBeginInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupCommandBufferBeginInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupCommandBufferBeginInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupCommandBufferBeginInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupCommandBufferBeginInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupCommandBufferBeginInfoKHX where
-        type FieldType "sType" VkDeviceGroupCommandBufferBeginInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupCommandBufferBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupCommandBufferBeginInfoKHX =
-             #{offset VkDeviceGroupCommandBufferBeginInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupCommandBufferBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupCommandBufferBeginInfoKHX, sType}
-
-instance CanReadField "sType"
-           VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGroupCommandBufferBeginInfoKHX where
-        type VkPNextMType VkDeviceGroupCommandBufferBeginInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupCommandBufferBeginInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupCommandBufferBeginInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupCommandBufferBeginInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupCommandBufferBeginInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupCommandBufferBeginInfoKHX where
-        type FieldType "pNext" VkDeviceGroupCommandBufferBeginInfoKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupCommandBufferBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupCommandBufferBeginInfoKHX =
-             #{offset VkDeviceGroupCommandBufferBeginInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupCommandBufferBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupCommandBufferBeginInfoKHX, pNext}
-
-instance CanReadField "pNext"
-           VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceMask VkDeviceGroupCommandBufferBeginInfoKHX where
-        type VkDeviceMaskMType VkDeviceGroupCommandBufferBeginInfoKHX =
-             Word32
-
-        {-# NOINLINE vkDeviceMask #-}
-        vkDeviceMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupCommandBufferBeginInfoKHX, deviceMask})
-
-        {-# INLINE vkDeviceMaskByteOffset #-}
-        vkDeviceMaskByteOffset ~_
-          = #{offset VkDeviceGroupCommandBufferBeginInfoKHX, deviceMask}
-
-        {-# INLINE readVkDeviceMask #-}
-        readVkDeviceMask p
-          = peekByteOff p #{offset VkDeviceGroupCommandBufferBeginInfoKHX, deviceMask}
-
-        {-# INLINE writeVkDeviceMask #-}
-        writeVkDeviceMask p
-          = pokeByteOff p #{offset VkDeviceGroupCommandBufferBeginInfoKHX, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkDeviceGroupCommandBufferBeginInfoKHX where
-        type FieldType "deviceMask" VkDeviceGroupCommandBufferBeginInfoKHX
-             = Word32
-        type FieldOptional "deviceMask"
-               VkDeviceGroupCommandBufferBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask"
-               VkDeviceGroupCommandBufferBeginInfoKHX
-             =
-             #{offset VkDeviceGroupCommandBufferBeginInfoKHX, deviceMask}
-        type FieldIsArray "deviceMask"
-               VkDeviceGroupCommandBufferBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupCommandBufferBeginInfoKHX, deviceMask}
-
-instance CanReadField "deviceMask"
-           VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceMask
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceMask
-
-instance CanWriteField "deviceMask"
-           VkDeviceGroupCommandBufferBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceMask
-
-instance Show VkDeviceGroupCommandBufferBeginInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupCommandBufferBeginInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkDeviceMask = " .
-                            showsPrec d (vkDeviceMask x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfo.hsc
@@ -0,0 +1,237 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfo
+       (VkDeviceGroupDeviceCreateInfo(..)) where
+import           Foreign.Storable                                (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                   (VkPhysicalDevice)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo (VkDeviceCreateInfo)
+import           System.IO.Unsafe                                (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceGroupDeviceCreateInfo.html VkDeviceGroupDeviceCreateInfo registry at www.khronos.org>
+data VkDeviceGroupDeviceCreateInfo = VkDeviceGroupDeviceCreateInfo## Addr##
+                                                                    ByteArray##
+
+instance Eq VkDeviceGroupDeviceCreateInfo where
+        (VkDeviceGroupDeviceCreateInfo## a _) ==
+          x@(VkDeviceGroupDeviceCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupDeviceCreateInfo where
+        (VkDeviceGroupDeviceCreateInfo## a _) `compare`
+          x@(VkDeviceGroupDeviceCreateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupDeviceCreateInfo where
+        unsafeAddr (VkDeviceGroupDeviceCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupDeviceCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupDeviceCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHR
+       (VkDeviceGroupDeviceCreateInfo(..),
+        VkDeviceGroupDeviceCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfo (VkDeviceGroupDeviceCreateInfo (..))
+
+-- | Alias for `VkDeviceGroupDeviceCreateInfo`
+type VkDeviceGroupDeviceCreateInfoKHR =
+     VkDeviceGroupDeviceCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupDeviceCreateInfoKHX.hsc
+++ /dev/null
@@ -1,318 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHX
-       (VkDeviceGroupDeviceCreateInfoKHX(..)) where
-import           Foreign.Storable                                (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                   (VkPhysicalDevice)
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo (VkDeviceCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupDeviceCreateInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         physicalDeviceCount;
---   >     const VkPhysicalDevice*  pPhysicalDevices;
---   > } VkDeviceGroupDeviceCreateInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupDeviceCreateInfoKHX.html VkDeviceGroupDeviceCreateInfoKHX registry at www.khronos.org>
-data VkDeviceGroupDeviceCreateInfoKHX = VkDeviceGroupDeviceCreateInfoKHX## Addr##
-                                                                          ByteArray##
-
-instance Eq VkDeviceGroupDeviceCreateInfoKHX where
-        (VkDeviceGroupDeviceCreateInfoKHX## a _) ==
-          x@(VkDeviceGroupDeviceCreateInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupDeviceCreateInfoKHX where
-        (VkDeviceGroupDeviceCreateInfoKHX## a _) `compare`
-          x@(VkDeviceGroupDeviceCreateInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupDeviceCreateInfoKHX where
-        sizeOf ~_ = #{size VkDeviceGroupDeviceCreateInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupDeviceCreateInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupDeviceCreateInfoKHX where
-        unsafeAddr (VkDeviceGroupDeviceCreateInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupDeviceCreateInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupDeviceCreateInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupDeviceCreateInfoKHX where
-        type StructFields VkDeviceGroupDeviceCreateInfoKHX =
-             '["sType", "pNext", "physicalDeviceCount", "pPhysicalDevices"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupDeviceCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupDeviceCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupDeviceCreateInfoKHX =
-             '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGroupDeviceCreateInfoKHX where
-        type VkSTypeMType VkDeviceGroupDeviceCreateInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupDeviceCreateInfoKHX where
-        type FieldType "sType" VkDeviceGroupDeviceCreateInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupDeviceCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupDeviceCreateInfoKHX =
-             #{offset VkDeviceGroupDeviceCreateInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupDeviceCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGroupDeviceCreateInfoKHX where
-        type VkPNextMType VkDeviceGroupDeviceCreateInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupDeviceCreateInfoKHX where
-        type FieldType "pNext" VkDeviceGroupDeviceCreateInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupDeviceCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupDeviceCreateInfoKHX =
-             #{offset VkDeviceGroupDeviceCreateInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupDeviceCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPhysicalDeviceCount VkDeviceGroupDeviceCreateInfoKHX where
-        type VkPhysicalDeviceCountMType VkDeviceGroupDeviceCreateInfoKHX =
-             Word32
-
-        {-# NOINLINE vkPhysicalDeviceCount #-}
-        vkPhysicalDeviceCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfoKHX, physicalDeviceCount})
-
-        {-# INLINE vkPhysicalDeviceCountByteOffset #-}
-        vkPhysicalDeviceCountByteOffset ~_
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, physicalDeviceCount}
-
-        {-# INLINE readVkPhysicalDeviceCount #-}
-        readVkPhysicalDeviceCount p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, physicalDeviceCount}
-
-        {-# INLINE writeVkPhysicalDeviceCount #-}
-        writeVkPhysicalDeviceCount p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfoKHX
-         where
-        type FieldType "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfoKHX
-             = Word32
-        type FieldOptional "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfoKHX
-             =
-             #{offset VkDeviceGroupDeviceCreateInfoKHX, physicalDeviceCount}
-        type FieldIsArray "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, physicalDeviceCount}
-
-instance CanReadField "physicalDeviceCount"
-           VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPhysicalDeviceCount
-
-        {-# INLINE readField #-}
-        readField = readVkPhysicalDeviceCount
-
-instance CanWriteField "physicalDeviceCount"
-           VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPhysicalDeviceCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPPhysicalDevices VkDeviceGroupDeviceCreateInfoKHX where
-        type VkPPhysicalDevicesMType VkDeviceGroupDeviceCreateInfoKHX =
-             Ptr VkPhysicalDevice
-
-        {-# NOINLINE vkPPhysicalDevices #-}
-        vkPPhysicalDevices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfoKHX, pPhysicalDevices})
-
-        {-# INLINE vkPPhysicalDevicesByteOffset #-}
-        vkPPhysicalDevicesByteOffset ~_
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, pPhysicalDevices}
-
-        {-# INLINE readVkPPhysicalDevices #-}
-        readVkPPhysicalDevices p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, pPhysicalDevices}
-
-        {-# INLINE writeVkPPhysicalDevices #-}
-        writeVkPPhysicalDevices p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfoKHX, pPhysicalDevices}
-
-instance {-# OVERLAPPING #-}
-         HasField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfoKHX where
-        type FieldType "pPhysicalDevices" VkDeviceGroupDeviceCreateInfoKHX
-             = Ptr VkPhysicalDevice
-        type FieldOptional "pPhysicalDevices"
-               VkDeviceGroupDeviceCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pPhysicalDevices"
-               VkDeviceGroupDeviceCreateInfoKHX
-             =
-             #{offset VkDeviceGroupDeviceCreateInfoKHX, pPhysicalDevices}
-        type FieldIsArray "pPhysicalDevices"
-               VkDeviceGroupDeviceCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfoKHX, pPhysicalDevices}
-
-instance CanReadField "pPhysicalDevices"
-           VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPPhysicalDevices
-
-        {-# INLINE readField #-}
-        readField = readVkPPhysicalDevices
-
-instance CanWriteField "pPhysicalDevices"
-           VkDeviceGroupDeviceCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPPhysicalDevices
-
-instance Show VkDeviceGroupDeviceCreateInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupDeviceCreateInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPhysicalDeviceCount = " .
-                            showsPrec d (vkPhysicalDeviceCount x) .
-                              showString ", " .
-                                showString "vkPPhysicalDevices = " .
-                                  showsPrec d (vkPPhysicalDevices x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentCapabilitiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentCapabilitiesKHR.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentCapabilitiesKHR.hsc
@@ -0,0 +1,330 @@
+#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.VkDeviceGroupPresentCapabilitiesKHR
+       (VkDeviceGroupPresentCapabilitiesKHR(..)) where
+import           Foreign.Storable                                            (Storable (..))
+import           GHC.Prim
+import           GHC.TypeLits                                                (KnownNat,
+                                                                              natVal') -- ' closing tick for hsc2hs
+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.Enum.VkDeviceGroupPresentModeFlagsKHR (VkDeviceGroupPresentModeFlagsKHR)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
+import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceGroupPresentCapabilitiesKHR.html VkDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
+data VkDeviceGroupPresentCapabilitiesKHR = VkDeviceGroupPresentCapabilitiesKHR## Addr##
+                                                                                ByteArray##
+
+instance Eq VkDeviceGroupPresentCapabilitiesKHR where
+        (VkDeviceGroupPresentCapabilitiesKHR## a _) ==
+          x@(VkDeviceGroupPresentCapabilitiesKHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupPresentCapabilitiesKHR where
+        (VkDeviceGroupPresentCapabilitiesKHR## a _) `compare`
+          x@(VkDeviceGroupPresentCapabilitiesKHR## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupPresentCapabilitiesKHR
+         where
+        unsafeAddr (VkDeviceGroupPresentCapabilitiesKHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupPresentCapabilitiesKHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupPresentCapabilitiesKHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "presentMask" idx
+            VkDeviceGroupPresentCapabilitiesKHR) =>
+         CanReadFieldArray "presentMask" idx
+           VkDeviceGroupPresentCapabilitiesKHR
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "presentMask" 0
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "presentMask" 1
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "presentMask" 2
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "presentMask" 3
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+        type FieldArrayLength "presentMask"
+               VkDeviceGroupPresentCapabilitiesKHR
+             = VK_MAX_DEVICE_GROUP_SIZE
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
+                      +
+                      sizeOf (undefined :: Word32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "presentMask" idx
+            VkDeviceGroupPresentCapabilitiesKHR) =>
+         CanWriteFieldArray "presentMask" idx
+           VkDeviceGroupPresentCapabilitiesKHR
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "presentMask" 0
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "presentMask" 1
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "presentMask" 2
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "presentMask" 3
+                         VkDeviceGroupPresentCapabilitiesKHR
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentCapabilitiesKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentCapabilitiesKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentCapabilitiesKHX.hsc
+++ /dev/null
@@ -1,338 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHX
-       (VkDeviceGroupPresentCapabilitiesKHX(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           GHC.TypeLits                                                (KnownNat,
-                                                                              natVal') -- ' closing tick for hsc2hs
-import           Graphics.Vulkan.Constants                                   (VK_MAX_DEVICE_GROUP_SIZE_KHX,
-                                                                              pattern VK_MAX_DEVICE_GROUP_SIZE_KHX)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHX (VkDeviceGroupPresentModeFlagsKHX)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupPresentCapabilitiesKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
---   >     VkDeviceGroupPresentModeFlagsKHX modes;
---   > } VkDeviceGroupPresentCapabilitiesKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupPresentCapabilitiesKHX.html VkDeviceGroupPresentCapabilitiesKHX registry at www.khronos.org>
-data VkDeviceGroupPresentCapabilitiesKHX = VkDeviceGroupPresentCapabilitiesKHX## Addr##
-                                                                                ByteArray##
-
-instance Eq VkDeviceGroupPresentCapabilitiesKHX where
-        (VkDeviceGroupPresentCapabilitiesKHX## a _) ==
-          x@(VkDeviceGroupPresentCapabilitiesKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupPresentCapabilitiesKHX where
-        (VkDeviceGroupPresentCapabilitiesKHX## a _) `compare`
-          x@(VkDeviceGroupPresentCapabilitiesKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupPresentCapabilitiesKHX where
-        sizeOf ~_ = #{size VkDeviceGroupPresentCapabilitiesKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupPresentCapabilitiesKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupPresentCapabilitiesKHX
-         where
-        unsafeAddr (VkDeviceGroupPresentCapabilitiesKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupPresentCapabilitiesKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupPresentCapabilitiesKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupPresentCapabilitiesKHX where
-        type StructFields VkDeviceGroupPresentCapabilitiesKHX =
-             '["sType", "pNext", "presentMask", "modes"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupPresentCapabilitiesKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupPresentCapabilitiesKHX = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupPresentCapabilitiesKHX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGroupPresentCapabilitiesKHX where
-        type VkSTypeMType VkDeviceGroupPresentCapabilitiesKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentCapabilitiesKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupPresentCapabilitiesKHX where
-        type FieldType "sType" VkDeviceGroupPresentCapabilitiesKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupPresentCapabilitiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupPresentCapabilitiesKHX =
-             #{offset VkDeviceGroupPresentCapabilitiesKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupPresentCapabilitiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupPresentCapabilitiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGroupPresentCapabilitiesKHX where
-        type VkPNextMType VkDeviceGroupPresentCapabilitiesKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentCapabilitiesKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupPresentCapabilitiesKHX where
-        type FieldType "pNext" VkDeviceGroupPresentCapabilitiesKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupPresentCapabilitiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupPresentCapabilitiesKHX =
-             #{offset VkDeviceGroupPresentCapabilitiesKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupPresentCapabilitiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupPresentCapabilitiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPresentMaskArray VkDeviceGroupPresentCapabilitiesKHX where
-        type VkPresentMaskArrayMType VkDeviceGroupPresentCapabilitiesKHX =
-             Word32
-
-        {-# NOINLINE vkPresentMaskArray #-}
-        vkPresentMaskArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word32) +
-                    #{offset VkDeviceGroupPresentCapabilitiesKHX, presentMask}))
-
-        {-# INLINE vkPresentMaskArrayByteOffset #-}
-        vkPresentMaskArrayByteOffset ~_
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, presentMask}
-
-        {-# INLINE readVkPresentMaskArray #-}
-        readVkPresentMaskArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkDeviceGroupPresentCapabilitiesKHX, presentMask})
-
-        {-# INLINE writeVkPresentMaskArray #-}
-        writeVkPresentMaskArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkDeviceGroupPresentCapabilitiesKHX, presentMask})
-
-instance {-# OVERLAPPING #-}
-         HasField "presentMask" VkDeviceGroupPresentCapabilitiesKHX where
-        type FieldType "presentMask" VkDeviceGroupPresentCapabilitiesKHX =
-             Word32
-        type FieldOptional "presentMask"
-               VkDeviceGroupPresentCapabilitiesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "presentMask" VkDeviceGroupPresentCapabilitiesKHX
-             =
-             #{offset VkDeviceGroupPresentCapabilitiesKHX, presentMask}
-        type FieldIsArray "presentMask" VkDeviceGroupPresentCapabilitiesKHX
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, presentMask}
-
-instance (KnownNat idx,
-          IndexInBounds "presentMask" idx
-            VkDeviceGroupPresentCapabilitiesKHX) =>
-         CanReadFieldArray "presentMask" idx
-           VkDeviceGroupPresentCapabilitiesKHX
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "presentMask" 0
-                         VkDeviceGroupPresentCapabilitiesKHX
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "presentMask" 1
-                         VkDeviceGroupPresentCapabilitiesKHX
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "presentMask" 2
-                         VkDeviceGroupPresentCapabilitiesKHX
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "presentMask" 3
-                         VkDeviceGroupPresentCapabilitiesKHX
-                       #-}
-        type FieldArrayLength "presentMask"
-               VkDeviceGroupPresentCapabilitiesKHX
-             = VK_MAX_DEVICE_GROUP_SIZE_KHX
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE_KHX
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkPresentMaskArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkPresentMaskArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkModes VkDeviceGroupPresentCapabilitiesKHX where
-        type VkModesMType VkDeviceGroupPresentCapabilitiesKHX =
-             VkDeviceGroupPresentModeFlagsKHX
-
-        {-# NOINLINE vkModes #-}
-        vkModes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentCapabilitiesKHX, modes})
-
-        {-# INLINE vkModesByteOffset #-}
-        vkModesByteOffset ~_
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, modes}
-
-        {-# INLINE readVkModes #-}
-        readVkModes p
-          = peekByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHX, modes}
-
-        {-# INLINE writeVkModes #-}
-        writeVkModes p
-          = pokeByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHX, modes}
-
-instance {-# OVERLAPPING #-}
-         HasField "modes" VkDeviceGroupPresentCapabilitiesKHX where
-        type FieldType "modes" VkDeviceGroupPresentCapabilitiesKHX =
-             VkDeviceGroupPresentModeFlagsKHX
-        type FieldOptional "modes" VkDeviceGroupPresentCapabilitiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "modes" VkDeviceGroupPresentCapabilitiesKHX =
-             #{offset VkDeviceGroupPresentCapabilitiesKHX, modes}
-        type FieldIsArray "modes" VkDeviceGroupPresentCapabilitiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHX, modes}
-
-instance CanReadField "modes" VkDeviceGroupPresentCapabilitiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkModes
-
-        {-# INLINE readField #-}
-        readField = readVkModes
-
-instance Show VkDeviceGroupPresentCapabilitiesKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupPresentCapabilitiesKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPresentMaskArray = [" .
-                            showsPrec d
-                              (map (vkPresentMaskArray x) [1 .. VK_MAX_DEVICE_GROUP_SIZE_KHX])
-                              .
-                              showChar ']' .
-                                showString ", " .
-                                  showString "vkModes = " . showsPrec d (vkModes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentInfoKHR.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentInfoKHR.hsc
@@ -0,0 +1,266 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHR
+       (VkDeviceGroupPresentInfoKHR(..)) where
+import           Foreign.Storable                                            (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR (VkDeviceGroupPresentModeFlagBitsKHR)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR               (VkPresentInfoKHR)
+import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceGroupPresentInfoKHR.html VkDeviceGroupPresentInfoKHR registry at www.khronos.org>
+data VkDeviceGroupPresentInfoKHR = VkDeviceGroupPresentInfoKHR## Addr##
+                                                                ByteArray##
+
+instance Eq VkDeviceGroupPresentInfoKHR where
+        (VkDeviceGroupPresentInfoKHR## a _) ==
+          x@(VkDeviceGroupPresentInfoKHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupPresentInfoKHR where
+        (VkDeviceGroupPresentInfoKHR## a _) `compare`
+          x@(VkDeviceGroupPresentInfoKHR## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupPresentInfoKHR where
+        unsafeAddr (VkDeviceGroupPresentInfoKHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupPresentInfoKHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupPresentInfoKHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupPresentInfoKHX.hsc
+++ /dev/null
@@ -1,345 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHX
-       (VkDeviceGroupPresentInfoKHX(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHX (VkDeviceGroupPresentModeFlagBitsKHX)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR               (VkPresentInfoKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupPresentInfoKHX {
---   >     VkStructureType sType;
---   >     const void*  pNext;
---   >     uint32_t         swapchainCount;
---   >     const uint32_t* pDeviceMasks;
---   >     VkDeviceGroupPresentModeFlagBitsKHX mode;
---   > } VkDeviceGroupPresentInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupPresentInfoKHX.html VkDeviceGroupPresentInfoKHX registry at www.khronos.org>
-data VkDeviceGroupPresentInfoKHX = VkDeviceGroupPresentInfoKHX## Addr##
-                                                                ByteArray##
-
-instance Eq VkDeviceGroupPresentInfoKHX where
-        (VkDeviceGroupPresentInfoKHX## a _) ==
-          x@(VkDeviceGroupPresentInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupPresentInfoKHX where
-        (VkDeviceGroupPresentInfoKHX## a _) `compare`
-          x@(VkDeviceGroupPresentInfoKHX## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupPresentInfoKHX where
-        sizeOf ~_ = #{size VkDeviceGroupPresentInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceGroupPresentInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupPresentInfoKHX where
-        unsafeAddr (VkDeviceGroupPresentInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupPresentInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupPresentInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupPresentInfoKHX where
-        type StructFields VkDeviceGroupPresentInfoKHX =
-             '["sType", "pNext", "swapchainCount", "pDeviceMasks", "mode"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupPresentInfoKHX =
-             '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkDeviceGroupPresentInfoKHX
-         where
-        type VkSTypeMType VkDeviceGroupPresentInfoKHX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupPresentInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupPresentInfoKHX where
-        type FieldType "sType" VkDeviceGroupPresentInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupPresentInfoKHX =
-             #{offset VkDeviceGroupPresentInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupPresentInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGroupPresentInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDeviceGroupPresentInfoKHX
-         where
-        type VkPNextMType VkDeviceGroupPresentInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupPresentInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupPresentInfoKHX where
-        type FieldType "pNext" VkDeviceGroupPresentInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupPresentInfoKHX =
-             #{offset VkDeviceGroupPresentInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupPresentInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGroupPresentInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkSwapchainCount VkDeviceGroupPresentInfoKHX where
-        type VkSwapchainCountMType VkDeviceGroupPresentInfoKHX = Word32
-
-        {-# NOINLINE vkSwapchainCount #-}
-        vkSwapchainCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHX, swapchainCount})
-
-        {-# INLINE vkSwapchainCountByteOffset #-}
-        vkSwapchainCountByteOffset ~_
-          = #{offset VkDeviceGroupPresentInfoKHX, swapchainCount}
-
-        {-# INLINE readVkSwapchainCount #-}
-        readVkSwapchainCount p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHX, swapchainCount}
-
-        {-# INLINE writeVkSwapchainCount #-}
-        writeVkSwapchainCount p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHX, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchainCount" VkDeviceGroupPresentInfoKHX where
-        type FieldType "swapchainCount" VkDeviceGroupPresentInfoKHX =
-             Word32
-        type FieldOptional "swapchainCount" VkDeviceGroupPresentInfoKHX =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "swapchainCount" VkDeviceGroupPresentInfoKHX =
-             #{offset VkDeviceGroupPresentInfoKHX, swapchainCount}
-        type FieldIsArray "swapchainCount" VkDeviceGroupPresentInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHX, swapchainCount}
-
-instance CanReadField "swapchainCount" VkDeviceGroupPresentInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSwapchainCount
-
-        {-# INLINE readField #-}
-        readField = readVkSwapchainCount
-
-instance CanWriteField "swapchainCount" VkDeviceGroupPresentInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSwapchainCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDeviceMasks VkDeviceGroupPresentInfoKHX where
-        type VkPDeviceMasksMType VkDeviceGroupPresentInfoKHX = Ptr Word32
-
-        {-# NOINLINE vkPDeviceMasks #-}
-        vkPDeviceMasks x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHX, pDeviceMasks})
-
-        {-# INLINE vkPDeviceMasksByteOffset #-}
-        vkPDeviceMasksByteOffset ~_
-          = #{offset VkDeviceGroupPresentInfoKHX, pDeviceMasks}
-
-        {-# INLINE readVkPDeviceMasks #-}
-        readVkPDeviceMasks p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHX, pDeviceMasks}
-
-        {-# INLINE writeVkPDeviceMasks #-}
-        writeVkPDeviceMasks p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHX, pDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceMasks" VkDeviceGroupPresentInfoKHX where
-        type FieldType "pDeviceMasks" VkDeviceGroupPresentInfoKHX =
-             Ptr Word32
-        type FieldOptional "pDeviceMasks" VkDeviceGroupPresentInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceMasks" VkDeviceGroupPresentInfoKHX =
-             #{offset VkDeviceGroupPresentInfoKHX, pDeviceMasks}
-        type FieldIsArray "pDeviceMasks" VkDeviceGroupPresentInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHX, pDeviceMasks}
-
-instance CanReadField "pDeviceMasks" VkDeviceGroupPresentInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPDeviceMasks
-
-        {-# INLINE readField #-}
-        readField = readVkPDeviceMasks
-
-instance CanWriteField "pDeviceMasks" VkDeviceGroupPresentInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDeviceMasks
-
-instance {-# OVERLAPPING #-} HasVkMode VkDeviceGroupPresentInfoKHX
-         where
-        type VkModeMType VkDeviceGroupPresentInfoKHX =
-             VkDeviceGroupPresentModeFlagBitsKHX
-
-        {-# NOINLINE vkMode #-}
-        vkMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHX, mode})
-
-        {-# INLINE vkModeByteOffset #-}
-        vkModeByteOffset ~_
-          = #{offset VkDeviceGroupPresentInfoKHX, mode}
-
-        {-# INLINE readVkMode #-}
-        readVkMode p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHX, mode}
-
-        {-# INLINE writeVkMode #-}
-        writeVkMode p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHX, mode}
-
-instance {-# OVERLAPPING #-}
-         HasField "mode" VkDeviceGroupPresentInfoKHX where
-        type FieldType "mode" VkDeviceGroupPresentInfoKHX =
-             VkDeviceGroupPresentModeFlagBitsKHX
-        type FieldOptional "mode" VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mode" VkDeviceGroupPresentInfoKHX =
-             #{offset VkDeviceGroupPresentInfoKHX, mode}
-        type FieldIsArray "mode" VkDeviceGroupPresentInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHX, mode}
-
-instance CanReadField "mode" VkDeviceGroupPresentInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkMode
-
-        {-# INLINE readField #-}
-        readField = readVkMode
-
-instance CanWriteField "mode" VkDeviceGroupPresentInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkMode
-
-instance Show VkDeviceGroupPresentInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupPresentInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkSwapchainCount = " .
-                            showsPrec d (vkSwapchainCount x) .
-                              showString ", " .
-                                showString "vkPDeviceMasks = " .
-                                  showsPrec d (vkPDeviceMasks x) .
-                                    showString ", " .
-                                      showString "vkMode = " . showsPrec d (vkMode x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfo.hsc
@@ -0,0 +1,292 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfo
+       (VkDeviceGroupRenderPassBeginInfo(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkRect2D              (VkRect2D)
+import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo (VkRenderPassBeginInfo)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceGroupRenderPassBeginInfo.html VkDeviceGroupRenderPassBeginInfo registry at www.khronos.org>
+data VkDeviceGroupRenderPassBeginInfo = VkDeviceGroupRenderPassBeginInfo## Addr##
+                                                                          ByteArray##
+
+instance Eq VkDeviceGroupRenderPassBeginInfo where
+        (VkDeviceGroupRenderPassBeginInfo## a _) ==
+          x@(VkDeviceGroupRenderPassBeginInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupRenderPassBeginInfo where
+        (VkDeviceGroupRenderPassBeginInfo## a _) `compare`
+          x@(VkDeviceGroupRenderPassBeginInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupRenderPassBeginInfo where
+        unsafeAddr (VkDeviceGroupRenderPassBeginInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupRenderPassBeginInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupRenderPassBeginInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHR
+       (VkDeviceGroupRenderPassBeginInfo(..),
+        VkDeviceGroupRenderPassBeginInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfo (VkDeviceGroupRenderPassBeginInfo (..))
+
+-- | Alias for `VkDeviceGroupRenderPassBeginInfo`
+type VkDeviceGroupRenderPassBeginInfoKHR =
+     VkDeviceGroupRenderPassBeginInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupRenderPassBeginInfoKHX.hsc
+++ /dev/null
@@ -1,386 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHX
-       (VkDeviceGroupRenderPassBeginInfoKHX(..)) where
-import           Foreign.Storable                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkRect2D              (VkRect2D)
-import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo (VkRenderPassBeginInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupRenderPassBeginInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         deviceMask;
---   >     uint32_t         deviceRenderAreaCount;
---   >     const VkRect2D*  pDeviceRenderAreas;
---   > } VkDeviceGroupRenderPassBeginInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupRenderPassBeginInfoKHX.html VkDeviceGroupRenderPassBeginInfoKHX registry at www.khronos.org>
-data VkDeviceGroupRenderPassBeginInfoKHX = VkDeviceGroupRenderPassBeginInfoKHX## Addr##
-                                                                                ByteArray##
-
-instance Eq VkDeviceGroupRenderPassBeginInfoKHX where
-        (VkDeviceGroupRenderPassBeginInfoKHX## a _) ==
-          x@(VkDeviceGroupRenderPassBeginInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupRenderPassBeginInfoKHX where
-        (VkDeviceGroupRenderPassBeginInfoKHX## a _) `compare`
-          x@(VkDeviceGroupRenderPassBeginInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupRenderPassBeginInfoKHX where
-        sizeOf ~_ = #{size VkDeviceGroupRenderPassBeginInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupRenderPassBeginInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        unsafeAddr (VkDeviceGroupRenderPassBeginInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupRenderPassBeginInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupRenderPassBeginInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupRenderPassBeginInfoKHX where
-        type StructFields VkDeviceGroupRenderPassBeginInfoKHX =
-             '["sType", "pNext", "deviceMask", "deviceRenderAreaCount", -- ' closing tick for hsc2hs
-               "pDeviceRenderAreas"]
-        type CUnionType VkDeviceGroupRenderPassBeginInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupRenderPassBeginInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupRenderPassBeginInfoKHX =
-             '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGroupRenderPassBeginInfoKHX where
-        type VkSTypeMType VkDeviceGroupRenderPassBeginInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupRenderPassBeginInfoKHX where
-        type FieldType "sType" VkDeviceGroupRenderPassBeginInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupRenderPassBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupRenderPassBeginInfoKHX =
-             #{offset VkDeviceGroupRenderPassBeginInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupRenderPassBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGroupRenderPassBeginInfoKHX where
-        type VkPNextMType VkDeviceGroupRenderPassBeginInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupRenderPassBeginInfoKHX where
-        type FieldType "pNext" VkDeviceGroupRenderPassBeginInfoKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupRenderPassBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupRenderPassBeginInfoKHX =
-             #{offset VkDeviceGroupRenderPassBeginInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupRenderPassBeginInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceMask VkDeviceGroupRenderPassBeginInfoKHX where
-        type VkDeviceMaskMType VkDeviceGroupRenderPassBeginInfoKHX = Word32
-
-        {-# NOINLINE vkDeviceMask #-}
-        vkDeviceMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceMask})
-
-        {-# INLINE vkDeviceMaskByteOffset #-}
-        vkDeviceMaskByteOffset ~_
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceMask}
-
-        {-# INLINE readVkDeviceMask #-}
-        readVkDeviceMask p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceMask}
-
-        {-# INLINE writeVkDeviceMask #-}
-        writeVkDeviceMask p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkDeviceGroupRenderPassBeginInfoKHX where
-        type FieldType "deviceMask" VkDeviceGroupRenderPassBeginInfoKHX =
-             Word32
-        type FieldOptional "deviceMask" VkDeviceGroupRenderPassBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkDeviceGroupRenderPassBeginInfoKHX =
-             #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceMask}
-        type FieldIsArray "deviceMask" VkDeviceGroupRenderPassBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceMask}
-
-instance CanReadField "deviceMask"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceMask
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceMask
-
-instance CanWriteField "deviceMask"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceMask
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceRenderAreaCount VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        type VkDeviceRenderAreaCountMType
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = Word32
-
-        {-# NOINLINE vkDeviceRenderAreaCount #-}
-        vkDeviceRenderAreaCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceRenderAreaCount})
-
-        {-# INLINE vkDeviceRenderAreaCountByteOffset #-}
-        vkDeviceRenderAreaCountByteOffset ~_
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceRenderAreaCount}
-
-        {-# INLINE readVkDeviceRenderAreaCount #-}
-        readVkDeviceRenderAreaCount p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceRenderAreaCount}
-
-        {-# INLINE writeVkDeviceRenderAreaCount #-}
-        writeVkDeviceRenderAreaCount p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceRenderAreaCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceRenderAreaCount"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        type FieldType "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = Word32
-        type FieldOptional "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             =
-             #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceRenderAreaCount}
-        type FieldIsArray "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, deviceRenderAreaCount}
-
-instance CanReadField "deviceRenderAreaCount"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceRenderAreaCount
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceRenderAreaCount
-
-instance CanWriteField "deviceRenderAreaCount"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceRenderAreaCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDeviceRenderAreas VkDeviceGroupRenderPassBeginInfoKHX where
-        type VkPDeviceRenderAreasMType VkDeviceGroupRenderPassBeginInfoKHX
-             = Ptr VkRect2D
-
-        {-# NOINLINE vkPDeviceRenderAreas #-}
-        vkPDeviceRenderAreas x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfoKHX, pDeviceRenderAreas})
-
-        {-# INLINE vkPDeviceRenderAreasByteOffset #-}
-        vkPDeviceRenderAreasByteOffset ~_
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, pDeviceRenderAreas}
-
-        {-# INLINE readVkPDeviceRenderAreas #-}
-        readVkPDeviceRenderAreas p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, pDeviceRenderAreas}
-
-        {-# INLINE writeVkPDeviceRenderAreas #-}
-        writeVkPDeviceRenderAreas p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfoKHX, pDeviceRenderAreas}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        type FieldType "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = Ptr VkRect2D
-        type FieldOptional "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             =
-             #{offset VkDeviceGroupRenderPassBeginInfoKHX, pDeviceRenderAreas}
-        type FieldIsArray "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfoKHX, pDeviceRenderAreas}
-
-instance CanReadField "pDeviceRenderAreas"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPDeviceRenderAreas
-
-        {-# INLINE readField #-}
-        readField = readVkPDeviceRenderAreas
-
-instance CanWriteField "pDeviceRenderAreas"
-           VkDeviceGroupRenderPassBeginInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDeviceRenderAreas
-
-instance Show VkDeviceGroupRenderPassBeginInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupRenderPassBeginInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkDeviceMask = " .
-                            showsPrec d (vkDeviceMask x) .
-                              showString ", " .
-                                showString "vkDeviceRenderAreaCount = " .
-                                  showsPrec d (vkDeviceRenderAreaCount x) .
-                                    showString ", " .
-                                      showString "vkPDeviceRenderAreas = " .
-                                        showsPrec d (vkPDeviceRenderAreas x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfo.hsc
@@ -0,0 +1,412 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfo
+       (VkDeviceGroupSubmitInfo(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkSubmitInfo  (VkSubmitInfo)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceGroupSubmitInfo.html VkDeviceGroupSubmitInfo registry at www.khronos.org>
+data VkDeviceGroupSubmitInfo = VkDeviceGroupSubmitInfo## Addr##
+                                                        ByteArray##
+
+instance Eq VkDeviceGroupSubmitInfo where
+        (VkDeviceGroupSubmitInfo## a _) == x@(VkDeviceGroupSubmitInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupSubmitInfo where
+        (VkDeviceGroupSubmitInfo## a _) `compare`
+          x@(VkDeviceGroupSubmitInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupSubmitInfo where
+        unsafeAddr (VkDeviceGroupSubmitInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupSubmitInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupSubmitInfo## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfoKHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHR
+       (VkDeviceGroupSubmitInfo(..), VkDeviceGroupSubmitInfoKHR) where
+import           Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfo (VkDeviceGroupSubmitInfo (..))
+
+-- | Alias for `VkDeviceGroupSubmitInfo`
+type VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSubmitInfoKHX.hsc
+++ /dev/null
@@ -1,558 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHX
-       (VkDeviceGroupSubmitInfoKHX(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkSubmitInfo  (VkSubmitInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupSubmitInfoKHX {
---   >     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;
---   > } VkDeviceGroupSubmitInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupSubmitInfoKHX.html VkDeviceGroupSubmitInfoKHX registry at www.khronos.org>
-data VkDeviceGroupSubmitInfoKHX = VkDeviceGroupSubmitInfoKHX## Addr##
-                                                              ByteArray##
-
-instance Eq VkDeviceGroupSubmitInfoKHX where
-        (VkDeviceGroupSubmitInfoKHX## a _) ==
-          x@(VkDeviceGroupSubmitInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupSubmitInfoKHX where
-        (VkDeviceGroupSubmitInfoKHX## a _) `compare`
-          x@(VkDeviceGroupSubmitInfoKHX## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupSubmitInfoKHX where
-        sizeOf ~_ = #{size VkDeviceGroupSubmitInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceGroupSubmitInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupSubmitInfoKHX where
-        unsafeAddr (VkDeviceGroupSubmitInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupSubmitInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupSubmitInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupSubmitInfoKHX where
-        type StructFields VkDeviceGroupSubmitInfoKHX =
-             '["sType", "pNext", "waitSemaphoreCount", -- ' closing tick for hsc2hs
-               "pWaitSemaphoreDeviceIndices", "commandBufferCount",
-               "pCommandBufferDeviceMasks", "signalSemaphoreCount",
-               "pSignalSemaphoreDeviceIndices"]
-        type CUnionType VkDeviceGroupSubmitInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupSubmitInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupSubmitInfoKHX = '[VkSubmitInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkDeviceGroupSubmitInfoKHX
-         where
-        type VkSTypeMType VkDeviceGroupSubmitInfoKHX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupSubmitInfoKHX where
-        type FieldType "sType" VkDeviceGroupSubmitInfoKHX = VkStructureType
-        type FieldOptional "sType" VkDeviceGroupSubmitInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupSubmitInfoKHX =
-             #{offset VkDeviceGroupSubmitInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupSubmitInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupSubmitInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGroupSubmitInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDeviceGroupSubmitInfoKHX
-         where
-        type VkPNextMType VkDeviceGroupSubmitInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupSubmitInfoKHX where
-        type FieldType "pNext" VkDeviceGroupSubmitInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupSubmitInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupSubmitInfoKHX =
-             #{offset VkDeviceGroupSubmitInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupSubmitInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupSubmitInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGroupSubmitInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkWaitSemaphoreCount VkDeviceGroupSubmitInfoKHX where
-        type VkWaitSemaphoreCountMType VkDeviceGroupSubmitInfoKHX = Word32
-
-        {-# NOINLINE vkWaitSemaphoreCount #-}
-        vkWaitSemaphoreCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, waitSemaphoreCount})
-
-        {-# INLINE vkWaitSemaphoreCountByteOffset #-}
-        vkWaitSemaphoreCountByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, waitSemaphoreCount}
-
-        {-# INLINE readVkWaitSemaphoreCount #-}
-        readVkWaitSemaphoreCount p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, waitSemaphoreCount}
-
-        {-# INLINE writeVkWaitSemaphoreCount #-}
-        writeVkWaitSemaphoreCount p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "waitSemaphoreCount" VkDeviceGroupSubmitInfoKHX where
-        type FieldType "waitSemaphoreCount" VkDeviceGroupSubmitInfoKHX =
-             Word32
-        type FieldOptional "waitSemaphoreCount" VkDeviceGroupSubmitInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "waitSemaphoreCount" VkDeviceGroupSubmitInfoKHX =
-             #{offset VkDeviceGroupSubmitInfoKHX, waitSemaphoreCount}
-        type FieldIsArray "waitSemaphoreCount" VkDeviceGroupSubmitInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, waitSemaphoreCount}
-
-instance CanReadField "waitSemaphoreCount"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkWaitSemaphoreCount
-
-        {-# INLINE readField #-}
-        readField = readVkWaitSemaphoreCount
-
-instance CanWriteField "waitSemaphoreCount"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkWaitSemaphoreCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPWaitSemaphoreDeviceIndices VkDeviceGroupSubmitInfoKHX where
-        type VkPWaitSemaphoreDeviceIndicesMType VkDeviceGroupSubmitInfoKHX
-             = Ptr Word32
-
-        {-# NOINLINE vkPWaitSemaphoreDeviceIndices #-}
-        vkPWaitSemaphoreDeviceIndices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, pWaitSemaphoreDeviceIndices})
-
-        {-# INLINE vkPWaitSemaphoreDeviceIndicesByteOffset #-}
-        vkPWaitSemaphoreDeviceIndicesByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, pWaitSemaphoreDeviceIndices}
-
-        {-# INLINE readVkPWaitSemaphoreDeviceIndices #-}
-        readVkPWaitSemaphoreDeviceIndices p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pWaitSemaphoreDeviceIndices}
-
-        {-# INLINE writeVkPWaitSemaphoreDeviceIndices #-}
-        writeVkPWaitSemaphoreDeviceIndices p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pWaitSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfoKHX
-         where
-        type FieldType "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             = Ptr Word32
-        type FieldOptional "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             =
-             #{offset VkDeviceGroupSubmitInfoKHX, pWaitSemaphoreDeviceIndices}
-        type FieldIsArray "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, pWaitSemaphoreDeviceIndices}
-
-instance CanReadField "pWaitSemaphoreDeviceIndices"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPWaitSemaphoreDeviceIndices
-
-        {-# INLINE readField #-}
-        readField = readVkPWaitSemaphoreDeviceIndices
-
-instance CanWriteField "pWaitSemaphoreDeviceIndices"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPWaitSemaphoreDeviceIndices
-
-instance {-# OVERLAPPING #-}
-         HasVkCommandBufferCount VkDeviceGroupSubmitInfoKHX where
-        type VkCommandBufferCountMType VkDeviceGroupSubmitInfoKHX = Word32
-
-        {-# NOINLINE vkCommandBufferCount #-}
-        vkCommandBufferCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, commandBufferCount})
-
-        {-# INLINE vkCommandBufferCountByteOffset #-}
-        vkCommandBufferCountByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, commandBufferCount}
-
-        {-# INLINE readVkCommandBufferCount #-}
-        readVkCommandBufferCount p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, commandBufferCount}
-
-        {-# INLINE writeVkCommandBufferCount #-}
-        writeVkCommandBufferCount p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "commandBufferCount" VkDeviceGroupSubmitInfoKHX where
-        type FieldType "commandBufferCount" VkDeviceGroupSubmitInfoKHX =
-             Word32
-        type FieldOptional "commandBufferCount" VkDeviceGroupSubmitInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "commandBufferCount" VkDeviceGroupSubmitInfoKHX =
-             #{offset VkDeviceGroupSubmitInfoKHX, commandBufferCount}
-        type FieldIsArray "commandBufferCount" VkDeviceGroupSubmitInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, commandBufferCount}
-
-instance CanReadField "commandBufferCount"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkCommandBufferCount
-
-        {-# INLINE readField #-}
-        readField = readVkCommandBufferCount
-
-instance CanWriteField "commandBufferCount"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCommandBufferCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPCommandBufferDeviceMasks VkDeviceGroupSubmitInfoKHX where
-        type VkPCommandBufferDeviceMasksMType VkDeviceGroupSubmitInfoKHX =
-             Ptr Word32
-
-        {-# NOINLINE vkPCommandBufferDeviceMasks #-}
-        vkPCommandBufferDeviceMasks x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, pCommandBufferDeviceMasks})
-
-        {-# INLINE vkPCommandBufferDeviceMasksByteOffset #-}
-        vkPCommandBufferDeviceMasksByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, pCommandBufferDeviceMasks}
-
-        {-# INLINE readVkPCommandBufferDeviceMasks #-}
-        readVkPCommandBufferDeviceMasks p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pCommandBufferDeviceMasks}
-
-        {-# INLINE writeVkPCommandBufferDeviceMasks #-}
-        writeVkPCommandBufferDeviceMasks p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pCommandBufferDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfoKHX
-         where
-        type FieldType "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfoKHX
-             = Ptr Word32
-        type FieldOptional "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfoKHX
-             =
-             #{offset VkDeviceGroupSubmitInfoKHX, pCommandBufferDeviceMasks}
-        type FieldIsArray "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, pCommandBufferDeviceMasks}
-
-instance CanReadField "pCommandBufferDeviceMasks"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPCommandBufferDeviceMasks
-
-        {-# INLINE readField #-}
-        readField = readVkPCommandBufferDeviceMasks
-
-instance CanWriteField "pCommandBufferDeviceMasks"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPCommandBufferDeviceMasks
-
-instance {-# OVERLAPPING #-}
-         HasVkSignalSemaphoreCount VkDeviceGroupSubmitInfoKHX where
-        type VkSignalSemaphoreCountMType VkDeviceGroupSubmitInfoKHX =
-             Word32
-
-        {-# NOINLINE vkSignalSemaphoreCount #-}
-        vkSignalSemaphoreCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, signalSemaphoreCount})
-
-        {-# INLINE vkSignalSemaphoreCountByteOffset #-}
-        vkSignalSemaphoreCountByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, signalSemaphoreCount}
-
-        {-# INLINE readVkSignalSemaphoreCount #-}
-        readVkSignalSemaphoreCount p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, signalSemaphoreCount}
-
-        {-# INLINE writeVkSignalSemaphoreCount #-}
-        writeVkSignalSemaphoreCount p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "signalSemaphoreCount" VkDeviceGroupSubmitInfoKHX where
-        type FieldType "signalSemaphoreCount" VkDeviceGroupSubmitInfoKHX =
-             Word32
-        type FieldOptional "signalSemaphoreCount"
-               VkDeviceGroupSubmitInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "signalSemaphoreCount" VkDeviceGroupSubmitInfoKHX
-             =
-             #{offset VkDeviceGroupSubmitInfoKHX, signalSemaphoreCount}
-        type FieldIsArray "signalSemaphoreCount" VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, signalSemaphoreCount}
-
-instance CanReadField "signalSemaphoreCount"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSignalSemaphoreCount
-
-        {-# INLINE readField #-}
-        readField = readVkSignalSemaphoreCount
-
-instance CanWriteField "signalSemaphoreCount"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSignalSemaphoreCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPSignalSemaphoreDeviceIndices VkDeviceGroupSubmitInfoKHX where
-        type VkPSignalSemaphoreDeviceIndicesMType
-               VkDeviceGroupSubmitInfoKHX
-             = Ptr Word32
-
-        {-# NOINLINE vkPSignalSemaphoreDeviceIndices #-}
-        vkPSignalSemaphoreDeviceIndices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfoKHX, pSignalSemaphoreDeviceIndices})
-
-        {-# INLINE vkPSignalSemaphoreDeviceIndicesByteOffset #-}
-        vkPSignalSemaphoreDeviceIndicesByteOffset ~_
-          = #{offset VkDeviceGroupSubmitInfoKHX, pSignalSemaphoreDeviceIndices}
-
-        {-# INLINE readVkPSignalSemaphoreDeviceIndices #-}
-        readVkPSignalSemaphoreDeviceIndices p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pSignalSemaphoreDeviceIndices}
-
-        {-# INLINE writeVkPSignalSemaphoreDeviceIndices #-}
-        writeVkPSignalSemaphoreDeviceIndices p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfoKHX, pSignalSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSignalSemaphoreDeviceIndices" VkDeviceGroupSubmitInfoKHX
-         where
-        type FieldType "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             = Ptr Word32
-        type FieldOptional "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             =
-             #{offset VkDeviceGroupSubmitInfoKHX, pSignalSemaphoreDeviceIndices}
-        type FieldIsArray "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfoKHX, pSignalSemaphoreDeviceIndices}
-
-instance CanReadField "pSignalSemaphoreDeviceIndices"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPSignalSemaphoreDeviceIndices
-
-        {-# INLINE readField #-}
-        readField = readVkPSignalSemaphoreDeviceIndices
-
-instance CanWriteField "pSignalSemaphoreDeviceIndices"
-           VkDeviceGroupSubmitInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPSignalSemaphoreDeviceIndices
-
-instance Show VkDeviceGroupSubmitInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupSubmitInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkWaitSemaphoreCount = " .
-                            showsPrec d (vkWaitSemaphoreCount x) .
-                              showString ", " .
-                                showString "vkPWaitSemaphoreDeviceIndices = " .
-                                  showsPrec d (vkPWaitSemaphoreDeviceIndices x) .
-                                    showString ", " .
-                                      showString "vkCommandBufferCount = " .
-                                        showsPrec d (vkCommandBufferCount x) .
-                                          showString ", " .
-                                            showString "vkPCommandBufferDeviceMasks = " .
-                                              showsPrec d (vkPCommandBufferDeviceMasks x) .
-                                                showString ", " .
-                                                  showString "vkSignalSemaphoreCount = " .
-                                                    showsPrec d (vkSignalSemaphoreCount x) .
-                                                      showString ", " .
-                                                        showString
-                                                          "vkPSignalSemaphoreDeviceIndices = "
-                                                          .
-                                                          showsPrec d
-                                                            (vkPSignalSemaphoreDeviceIndices x)
-                                                            . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSwapchainCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSwapchainCreateInfoKHR.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSwapchainCreateInfoKHR.hsc
@@ -0,0 +1,198 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHR
+       (VkDeviceGroupSwapchainCreateInfoKHR(..)) where
+import           Foreign.Storable                                            (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR (VkDeviceGroupPresentModeFlagsKHR)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR       (VkSwapchainCreateInfoKHR)
+import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+
+-- | > typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDeviceGroupPresentModeFlagsKHR                         modes;
+--   > } VkDeviceGroupSwapchainCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html VkDeviceGroupSwapchainCreateInfoKHR registry at www.khronos.org>
+data VkDeviceGroupSwapchainCreateInfoKHR = VkDeviceGroupSwapchainCreateInfoKHR## Addr##
+                                                                                ByteArray##
+
+instance Eq VkDeviceGroupSwapchainCreateInfoKHR where
+        (VkDeviceGroupSwapchainCreateInfoKHR## a _) ==
+          x@(VkDeviceGroupSwapchainCreateInfoKHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceGroupSwapchainCreateInfoKHR where
+        (VkDeviceGroupSwapchainCreateInfoKHR## a _) `compare`
+          x@(VkDeviceGroupSwapchainCreateInfoKHR## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceGroupSwapchainCreateInfoKHR
+         where
+        unsafeAddr (VkDeviceGroupSwapchainCreateInfoKHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceGroupSwapchainCreateInfoKHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceGroupSwapchainCreateInfoKHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSwapchainCreateInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSwapchainCreateInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceGroupSwapchainCreateInfoKHX.hsc
+++ /dev/null
@@ -1,250 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHX
-       (VkDeviceGroupSwapchainCreateInfoKHX(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHX (VkDeviceGroupPresentModeFlagsKHX)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR       (VkSwapchainCreateInfoKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceGroupSwapchainCreateInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDeviceGroupPresentModeFlagsKHX                         modes;
---   > } VkDeviceGroupSwapchainCreateInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceGroupSwapchainCreateInfoKHX.html VkDeviceGroupSwapchainCreateInfoKHX registry at www.khronos.org>
-data VkDeviceGroupSwapchainCreateInfoKHX = VkDeviceGroupSwapchainCreateInfoKHX## Addr##
-                                                                                ByteArray##
-
-instance Eq VkDeviceGroupSwapchainCreateInfoKHX where
-        (VkDeviceGroupSwapchainCreateInfoKHX## a _) ==
-          x@(VkDeviceGroupSwapchainCreateInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupSwapchainCreateInfoKHX where
-        (VkDeviceGroupSwapchainCreateInfoKHX## a _) `compare`
-          x@(VkDeviceGroupSwapchainCreateInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupSwapchainCreateInfoKHX where
-        sizeOf ~_ = #{size VkDeviceGroupSwapchainCreateInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupSwapchainCreateInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        unsafeAddr (VkDeviceGroupSwapchainCreateInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkDeviceGroupSwapchainCreateInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkDeviceGroupSwapchainCreateInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkDeviceGroupSwapchainCreateInfoKHX where
-        type StructFields VkDeviceGroupSwapchainCreateInfoKHX =
-             '["sType", "pNext", "modes"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupSwapchainCreateInfoKHX =
-             '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceGroupSwapchainCreateInfoKHX where
-        type VkSTypeMType VkDeviceGroupSwapchainCreateInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSwapchainCreateInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupSwapchainCreateInfoKHX where
-        type FieldType "sType" VkDeviceGroupSwapchainCreateInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupSwapchainCreateInfoKHX =
-             #{offset VkDeviceGroupSwapchainCreateInfoKHX, sType}
-        type FieldIsArray "sType" VkDeviceGroupSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHX, sType}
-
-instance CanReadField "sType" VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceGroupSwapchainCreateInfoKHX where
-        type VkPNextMType VkDeviceGroupSwapchainCreateInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSwapchainCreateInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupSwapchainCreateInfoKHX where
-        type FieldType "pNext" VkDeviceGroupSwapchainCreateInfoKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupSwapchainCreateInfoKHX =
-             #{offset VkDeviceGroupSwapchainCreateInfoKHX, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHX, pNext}
-
-instance CanReadField "pNext" VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkModes VkDeviceGroupSwapchainCreateInfoKHX where
-        type VkModesMType VkDeviceGroupSwapchainCreateInfoKHX =
-             VkDeviceGroupPresentModeFlagsKHX
-
-        {-# NOINLINE vkModes #-}
-        vkModes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSwapchainCreateInfoKHX, modes})
-
-        {-# INLINE vkModesByteOffset #-}
-        vkModesByteOffset ~_
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHX, modes}
-
-        {-# INLINE readVkModes #-}
-        readVkModes p
-          = peekByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHX, modes}
-
-        {-# INLINE writeVkModes #-}
-        writeVkModes p
-          = pokeByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHX, modes}
-
-instance {-# OVERLAPPING #-}
-         HasField "modes" VkDeviceGroupSwapchainCreateInfoKHX where
-        type FieldType "modes" VkDeviceGroupSwapchainCreateInfoKHX =
-             VkDeviceGroupPresentModeFlagsKHX
-        type FieldOptional "modes" VkDeviceGroupSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "modes" VkDeviceGroupSwapchainCreateInfoKHX =
-             #{offset VkDeviceGroupSwapchainCreateInfoKHX, modes}
-        type FieldIsArray "modes" VkDeviceGroupSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHX, modes}
-
-instance CanReadField "modes" VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkModes
-
-        {-# INLINE readField #-}
-        readField = readVkModes
-
-instance CanWriteField "modes" VkDeviceGroupSwapchainCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkModes
-
-instance Show VkDeviceGroupSwapchainCreateInfoKHX where
-        showsPrec d x
-          = showString "VkDeviceGroupSwapchainCreateInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkModes = " . showsPrec d (vkModes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueCreateInfo.hsc
@@ -5,17 +5,17 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
        (VkDeviceQueueCreateInfo(..)) where
-import           Foreign.Storable                           (Storable (..))
+import           Foreign.Storable                                    (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Bitmasks             (VkDeviceQueueCreateFlags)
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags (VkDeviceQueueCreateFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
+import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDeviceQueueCreateInfo {
 --   >     VkStructureType sType;
@@ -26,7 +26,7 @@
 --   >     const float*    pQueuePriorities;
 --   > } VkDeviceQueueCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceQueueCreateInfo.html VkDeviceQueueCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceQueueCreateInfo.html VkDeviceQueueCreateInfo registry at www.khronos.org>
 data VkDeviceQueueCreateInfo = VkDeviceQueueCreateInfo## Addr##
                                                         ByteArray##
 
@@ -76,27 +76,6 @@
         type ReturnedOnly VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDeviceQueueCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDeviceQueueCreateInfo
-         where
-        type VkSTypeMType VkDeviceQueueCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceQueueCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkDeviceQueueCreateInfo where
         type FieldType "sType" VkDeviceQueueCreateInfo = VkStructureType
@@ -111,37 +90,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceQueueCreateInfo, sType}
 
-instance CanReadField "sType" VkDeviceQueueCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDeviceQueueCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueCreateInfo, sType}
 
-instance CanWriteField "sType" VkDeviceQueueCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDeviceQueueCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDeviceQueueCreateInfo
-         where
-        type VkPNextMType VkDeviceQueueCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceQueueCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDeviceQueueCreateInfo where
@@ -157,38 +121,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceQueueCreateInfo, pNext}
 
-instance CanReadField "pNext" VkDeviceQueueCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDeviceQueueCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkDeviceQueueCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDeviceQueueCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkDeviceQueueCreateInfo
-         where
-        type VkFlagsMType VkDeviceQueueCreateInfo =
-             VkDeviceQueueCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDeviceQueueCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkDeviceQueueCreateInfo where
@@ -205,37 +153,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDeviceQueueCreateInfo, flags}
 
-instance CanReadField "flags" VkDeviceQueueCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueFamilyIndex VkDeviceQueueCreateInfo where
-        type VkQueueFamilyIndexMType VkDeviceQueueCreateInfo = Word32
-
-        {-# NOINLINE vkQueueFamilyIndex #-}
-        vkQueueFamilyIndex x
+         CanReadField "flags" VkDeviceQueueCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, queueFamilyIndex})
-
-        {-# INLINE vkQueueFamilyIndexByteOffset #-}
-        vkQueueFamilyIndexByteOffset ~_
-          = #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, flags})
 
-        {-# INLINE readVkQueueFamilyIndex #-}
-        readVkQueueFamilyIndex p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueCreateInfo, flags}
 
-        {-# INLINE writeVkQueueFamilyIndex #-}
-        writeVkQueueFamilyIndex p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDeviceQueueCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "queueFamilyIndex" VkDeviceQueueCreateInfo where
@@ -254,39 +187,22 @@
         fieldOffset
           = #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
 
-instance CanReadField "queueFamilyIndex" VkDeviceQueueCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueFamilyIndex
-
-        {-# INLINE readField #-}
-        readField = readVkQueueFamilyIndex
-
-instance CanWriteField "queueFamilyIndex" VkDeviceQueueCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueueFamilyIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueCount VkDeviceQueueCreateInfo where
-        type VkQueueCountMType VkDeviceQueueCreateInfo = Word32
-
-        {-# NOINLINE vkQueueCount #-}
-        vkQueueCount x
+         CanReadField "queueFamilyIndex" VkDeviceQueueCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, queueCount})
-
-        {-# INLINE vkQueueCountByteOffset #-}
-        vkQueueCountByteOffset ~_
-          = #{offset VkDeviceQueueCreateInfo, queueCount}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, queueFamilyIndex})
 
-        {-# INLINE readVkQueueCount #-}
-        readVkQueueCount p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, queueCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
 
-        {-# INLINE writeVkQueueCount #-}
-        writeVkQueueCount p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, queueCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueFamilyIndex" VkDeviceQueueCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "queueCount" VkDeviceQueueCreateInfo where
@@ -303,38 +219,22 @@
         fieldOffset
           = #{offset VkDeviceQueueCreateInfo, queueCount}
 
-instance CanReadField "queueCount" VkDeviceQueueCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkQueueCount
-
-        {-# INLINE readField #-}
-        readField = readVkQueueCount
-
-instance CanWriteField "queueCount" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueueCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPQueuePriorities VkDeviceQueueCreateInfo where
-        type VkPQueuePrioritiesMType VkDeviceQueueCreateInfo =
-             Ptr #{type float}
-
-        {-# NOINLINE vkPQueuePriorities #-}
-        vkPQueuePriorities x
+         CanReadField "queueCount" VkDeviceQueueCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, pQueuePriorities})
-
-        {-# INLINE vkPQueuePrioritiesByteOffset #-}
-        vkPQueuePrioritiesByteOffset ~_
-          = #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, queueCount})
 
-        {-# INLINE readVkPQueuePriorities #-}
-        readVkPQueuePriorities p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueCreateInfo, queueCount}
 
-        {-# INLINE writeVkPQueuePriorities #-}
-        writeVkPQueuePriorities p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueCount" VkDeviceQueueCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, queueCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pQueuePriorities" VkDeviceQueueCreateInfo where
@@ -354,36 +254,41 @@
         fieldOffset
           = #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
 
-instance CanReadField "pQueuePriorities" VkDeviceQueueCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPQueuePriorities
+instance {-# OVERLAPPING #-}
+         CanReadField "pQueuePriorities" VkDeviceQueueCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, pQueuePriorities})
 
         {-# INLINE readField #-}
-        readField = readVkPQueuePriorities
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
 
-instance CanWriteField "pQueuePriorities" VkDeviceQueueCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pQueuePriorities" VkDeviceQueueCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPQueuePriorities
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
 
 instance Show VkDeviceQueueCreateInfo where
         showsPrec d x
           = showString "VkDeviceQueueCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkQueueFamilyIndex = " .
-                                  showsPrec d (vkQueueFamilyIndex x) .
+                                showString "queueFamilyIndex = " .
+                                  showsPrec d (getField @"queueFamilyIndex" x) .
                                     showString ", " .
-                                      showString "vkQueueCount = " .
-                                        showsPrec d (vkQueueCount x) .
+                                      showString "queueCount = " .
+                                        showsPrec d (getField @"queueCount" x) .
                                           showString ", " .
-                                            showString "vkPQueuePriorities = " .
-                                              showsPrec d (vkPQueuePriorities x) . showChar '}'
+                                            showString "pQueuePriorities = " .
+                                              showsPrec d (getField @"pQueuePriorities" x) .
+                                                showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueGlobalPriorityCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueGlobalPriorityCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueGlobalPriorityCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueGlobalPriorityCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDeviceQueueGlobalPriorityCreateInfoEXT
        (VkDeviceQueueGlobalPriorityCreateInfoEXT(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkQueueGlobalPriorityEXT  (VkQueueGlobalPriorityEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo (VkDeviceQueueCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
@@ -24,7 +24,7 @@
 --   >     VkQueueGlobalPriorityEXT       globalPriority;
 --   > } VkDeviceQueueGlobalPriorityCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html VkDeviceQueueGlobalPriorityCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html VkDeviceQueueGlobalPriorityCreateInfoEXT registry at www.khronos.org>
 data VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoEXT## Addr##
                                                                                           ByteArray##
 
@@ -83,28 +83,6 @@
              '[VkDeviceQueueCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        type VkSTypeMType VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT where
         type FieldType "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT =
              VkStructureType
@@ -122,42 +100,23 @@
         fieldOffset
           = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
 
-instance CanReadField "sType"
-           VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
 
-instance CanWriteField "sType"
-           VkDeviceQueueGlobalPriorityCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        type VkPNextMType VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT where
@@ -177,42 +136,23 @@
         fieldOffset
           = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
 
-instance CanReadField "pNext"
-           VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
 
-instance CanWriteField "pNext"
-           VkDeviceQueueGlobalPriorityCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkGlobalPriority VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        type VkGlobalPriorityMType VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = VkQueueGlobalPriorityEXT
-
-        {-# NOINLINE vkGlobalPriority #-}
-        vkGlobalPriority x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority})
-
-        {-# INLINE vkGlobalPriorityByteOffset #-}
-        vkGlobalPriorityByteOffset ~_
-          = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
-
-        {-# INLINE readVkGlobalPriority #-}
-        readVkGlobalPriority p
-          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
-
-        {-# INLINE writeVkGlobalPriority #-}
-        writeVkGlobalPriority p
-          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "globalPriority" VkDeviceQueueGlobalPriorityCreateInfoEXT
@@ -238,29 +178,35 @@
         fieldOffset
           = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
 
-instance CanReadField "globalPriority"
+instance {-# OVERLAPPING #-}
+         CanReadField "globalPriority"
            VkDeviceQueueGlobalPriorityCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkGlobalPriority
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority})
 
         {-# INLINE readField #-}
-        readField = readVkGlobalPriority
+        readField p
+          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
 
-instance CanWriteField "globalPriority"
+instance {-# OVERLAPPING #-}
+         CanWriteField "globalPriority"
            VkDeviceQueueGlobalPriorityCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkGlobalPriority
+        writeField p
+          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
 
 instance Show VkDeviceQueueGlobalPriorityCreateInfoEXT where
         showsPrec d x
           = showString "VkDeviceQueueGlobalPriorityCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkGlobalPriority = " .
-                            showsPrec d (vkGlobalPriority x) . showChar '}'
+                          showString "globalPriority = " .
+                            showsPrec d (getField @"globalPriority" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueInfo2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueInfo2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDeviceQueueInfo2.hsc
@@ -0,0 +1,249 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkDeviceQueueInfo2
+       (VkDeviceQueueInfo2(..)) where
+import           Foreign.Storable                                    (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags (VkDeviceQueueCreateFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
+import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkDeviceQueueInfo2.html VkDeviceQueueInfo2 registry at www.khronos.org>
+data VkDeviceQueueInfo2 = VkDeviceQueueInfo2## Addr## ByteArray##
+
+instance Eq VkDeviceQueueInfo2 where
+        (VkDeviceQueueInfo2## a _) == x@(VkDeviceQueueInfo2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkDeviceQueueInfo2 where
+        (VkDeviceQueueInfo2## a _) `compare` x@(VkDeviceQueueInfo2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkDeviceQueueInfo2 where
+        unsafeAddr (VkDeviceQueueInfo2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkDeviceQueueInfo2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkDeviceQueueInfo2## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDispatchIndirectCommand.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDispatchIndirectCommand.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDispatchIndirectCommand.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDispatchIndirectCommand.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDispatchIndirectCommand
        (VkDispatchIndirectCommand(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDispatchIndirectCommand {
 --   >     uint32_t               x;
@@ -21,7 +21,7 @@
 --   >     uint32_t               z;
 --   > } VkDispatchIndirectCommand;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDispatchIndirectCommand.html VkDispatchIndirectCommand registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDispatchIndirectCommand.html VkDispatchIndirectCommand registry at www.khronos.org>
 data VkDispatchIndirectCommand = VkDispatchIndirectCommand## Addr##
                                                             ByteArray##
 
@@ -70,26 +70,6 @@
         type ReturnedOnly VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDispatchIndirectCommand = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkDispatchIndirectCommand where
-        type VkXMType VkDispatchIndirectCommand = Word32
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_
-          = #{offset VkDispatchIndirectCommand, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p
-          = peekByteOff p #{offset VkDispatchIndirectCommand, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p
-          = pokeByteOff p #{offset VkDispatchIndirectCommand, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkDispatchIndirectCommand
          where
         type FieldType "x" VkDispatchIndirectCommand = Word32
@@ -104,36 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDispatchIndirectCommand, x}
 
-instance CanReadField "x" VkDispatchIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-}
+         CanReadField "x" VkDispatchIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p
+          = peekByteOff p #{offset VkDispatchIndirectCommand, x}
 
-instance CanWriteField "x" VkDispatchIndirectCommand where
+instance {-# OVERLAPPING #-}
+         CanWriteField "x" VkDispatchIndirectCommand where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkDispatchIndirectCommand where
-        type VkYMType VkDispatchIndirectCommand = Word32
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_
-          = #{offset VkDispatchIndirectCommand, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p
-          = peekByteOff p #{offset VkDispatchIndirectCommand, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p
-          = pokeByteOff p #{offset VkDispatchIndirectCommand, y}
+        writeField p
+          = pokeByteOff p #{offset VkDispatchIndirectCommand, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkDispatchIndirectCommand
          where
@@ -149,36 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDispatchIndirectCommand, y}
 
-instance CanReadField "y" VkDispatchIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-}
+         CanReadField "y" VkDispatchIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p
+          = peekByteOff p #{offset VkDispatchIndirectCommand, y}
 
-instance CanWriteField "y" VkDispatchIndirectCommand where
+instance {-# OVERLAPPING #-}
+         CanWriteField "y" VkDispatchIndirectCommand where
         {-# INLINE writeField #-}
-        writeField = writeVkY
-
-instance {-# OVERLAPPING #-} HasVkZ VkDispatchIndirectCommand where
-        type VkZMType VkDispatchIndirectCommand = Word32
-
-        {-# NOINLINE vkZ #-}
-        vkZ x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, z})
-
-        {-# INLINE vkZByteOffset #-}
-        vkZByteOffset ~_
-          = #{offset VkDispatchIndirectCommand, z}
-
-        {-# INLINE readVkZ #-}
-        readVkZ p
-          = peekByteOff p #{offset VkDispatchIndirectCommand, z}
-
-        {-# INLINE writeVkZ #-}
-        writeVkZ p
-          = pokeByteOff p #{offset VkDispatchIndirectCommand, z}
+        writeField p
+          = pokeByteOff p #{offset VkDispatchIndirectCommand, y}
 
 instance {-# OVERLAPPING #-} HasField "z" VkDispatchIndirectCommand
          where
@@ -194,24 +146,30 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDispatchIndirectCommand, z}
 
-instance CanReadField "z" VkDispatchIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkZ
+instance {-# OVERLAPPING #-}
+         CanReadField "z" VkDispatchIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, z})
 
         {-# INLINE readField #-}
-        readField = readVkZ
+        readField p
+          = peekByteOff p #{offset VkDispatchIndirectCommand, z}
 
-instance CanWriteField "z" VkDispatchIndirectCommand where
+instance {-# OVERLAPPING #-}
+         CanWriteField "z" VkDispatchIndirectCommand where
         {-# INLINE writeField #-}
-        writeField = writeVkZ
+        writeField p
+          = pokeByteOff p #{offset VkDispatchIndirectCommand, z}
 
 instance Show VkDispatchIndirectCommand where
         showsPrec d x
           = showString "VkDispatchIndirectCommand {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " .
-                      showsPrec d (vkY x) .
+                    showString "y = " .
+                      showsPrec d (getField @"y" x) .
                         showString ", " .
-                          showString "vkZ = " . showsPrec d (vkZ x) . showChar '}'
+                          showString "z = " . showsPrec d (getField @"z" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayEventInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayEventInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayEventInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayEventInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayEventInfoEXT
        (VkDisplayEventInfoEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkDisplayEventTypeEXT (VkDisplayEventTypeEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType       (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayEventInfoEXT {
@@ -23,7 +23,7 @@
 --   >     VkDisplayEventTypeEXT            displayEvent;
 --   > } VkDisplayEventInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayEventInfoEXT.html VkDisplayEventInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayEventInfoEXT.html VkDisplayEventInfoEXT registry at www.khronos.org>
 data VkDisplayEventInfoEXT = VkDisplayEventInfoEXT## Addr##
                                                     ByteArray##
 
@@ -72,26 +72,6 @@
         type ReturnedOnly VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDisplayEventInfoEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDisplayEventInfoEXT where
-        type VkSTypeMType VkDisplayEventInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDisplayEventInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDisplayEventInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDisplayEventInfoEXT, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkDisplayEventInfoEXT
          where
         type FieldType "sType" VkDisplayEventInfoEXT = VkStructureType
@@ -106,36 +86,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayEventInfoEXT, sType}
 
-instance CanReadField "sType" VkDisplayEventInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayEventInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDisplayEventInfoEXT, sType}
 
-instance CanWriteField "sType" VkDisplayEventInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayEventInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDisplayEventInfoEXT where
-        type VkPNextMType VkDisplayEventInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDisplayEventInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDisplayEventInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDisplayEventInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayEventInfoEXT, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkDisplayEventInfoEXT
          where
@@ -151,38 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayEventInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDisplayEventInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDisplayEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkDisplayEvent VkDisplayEventInfoEXT where
-        type VkDisplayEventMType VkDisplayEventInfoEXT =
-             VkDisplayEventTypeEXT
-
-        {-# NOINLINE vkDisplayEvent #-}
-        vkDisplayEvent x
+         CanReadField "pNext" VkDisplayEventInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, displayEvent})
-
-        {-# INLINE vkDisplayEventByteOffset #-}
-        vkDisplayEventByteOffset ~_
-          = #{offset VkDisplayEventInfoEXT, displayEvent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, pNext})
 
-        {-# INLINE readVkDisplayEvent #-}
-        readVkDisplayEvent p
-          = peekByteOff p #{offset VkDisplayEventInfoEXT, displayEvent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayEventInfoEXT, pNext}
 
-        {-# INLINE writeVkDisplayEvent #-}
-        writeVkDisplayEvent p
-          = pokeByteOff p #{offset VkDisplayEventInfoEXT, displayEvent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayEventInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayEventInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "displayEvent" VkDisplayEventInfoEXT where
@@ -200,25 +150,31 @@
         fieldOffset
           = #{offset VkDisplayEventInfoEXT, displayEvent}
 
-instance CanReadField "displayEvent" VkDisplayEventInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkDisplayEvent
+instance {-# OVERLAPPING #-}
+         CanReadField "displayEvent" VkDisplayEventInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, displayEvent})
 
         {-# INLINE readField #-}
-        readField = readVkDisplayEvent
+        readField p
+          = peekByteOff p #{offset VkDisplayEventInfoEXT, displayEvent}
 
-instance CanWriteField "displayEvent" VkDisplayEventInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayEvent" VkDisplayEventInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkDisplayEvent
+        writeField p
+          = pokeByteOff p #{offset VkDisplayEventInfoEXT, displayEvent}
 
 instance Show VkDisplayEventInfoEXT where
         showsPrec d x
           = showString "VkDisplayEventInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDisplayEvent = " .
-                            showsPrec d (vkDisplayEvent x) . showChar '}'
+                          showString "displayEvent = " .
+                            showsPrec d (getField @"displayEvent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayModeCreateInfoKHR
        (VkDisplayModeCreateInfoKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Bitmasks                          (VkDisplayModeCreateFlagsKHR)
 import           Graphics.Vulkan.Types.Enum.VkStructureType              (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkDisplayModeParametersKHR (VkDisplayModeParametersKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayModeCreateInfoKHR {
@@ -25,7 +25,7 @@
 --   >     VkDisplayModeParametersKHR       parameters;
 --   > } VkDisplayModeCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayModeCreateInfoKHR.html VkDisplayModeCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayModeCreateInfoKHR.html VkDisplayModeCreateInfoKHR registry at www.khronos.org>
 data VkDisplayModeCreateInfoKHR = VkDisplayModeCreateInfoKHR## Addr##
                                                               ByteArray##
 
@@ -77,27 +77,6 @@
         type ReturnedOnly VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDisplayModeCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDisplayModeCreateInfoKHR
-         where
-        type VkSTypeMType VkDisplayModeCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDisplayModeCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkDisplayModeCreateInfoKHR where
         type FieldType "sType" VkDisplayModeCreateInfoKHR = VkStructureType
@@ -113,37 +92,22 @@
         fieldOffset
           = #{offset VkDisplayModeCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkDisplayModeCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayModeCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, sType}
 
-instance CanWriteField "sType" VkDisplayModeCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayModeCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDisplayModeCreateInfoKHR
-         where
-        type VkPNextMType VkDisplayModeCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDisplayModeCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDisplayModeCreateInfoKHR where
@@ -160,38 +124,22 @@
         fieldOffset
           = #{offset VkDisplayModeCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkDisplayModeCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayModeCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkDisplayModeCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayModeCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkDisplayModeCreateInfoKHR
-         where
-        type VkFlagsMType VkDisplayModeCreateInfoKHR =
-             VkDisplayModeCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDisplayModeCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkDisplayModeCreateInfoKHR where
@@ -209,38 +157,22 @@
         fieldOffset
           = #{offset VkDisplayModeCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkDisplayModeCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDisplayModeCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkParameters VkDisplayModeCreateInfoKHR where
-        type VkParametersMType VkDisplayModeCreateInfoKHR =
-             VkDisplayModeParametersKHR
-
-        {-# NOINLINE vkParameters #-}
-        vkParameters x
+         CanReadField "flags" VkDisplayModeCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, parameters})
-
-        {-# INLINE vkParametersByteOffset #-}
-        vkParametersByteOffset ~_
-          = #{offset VkDisplayModeCreateInfoKHR, parameters}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, flags})
 
-        {-# INLINE readVkParameters #-}
-        readVkParameters p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, parameters}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, flags}
 
-        {-# INLINE writeVkParameters #-}
-        writeVkParameters p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, parameters}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDisplayModeCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "parameters" VkDisplayModeCreateInfoKHR where
@@ -258,29 +190,34 @@
         fieldOffset
           = #{offset VkDisplayModeCreateInfoKHR, parameters}
 
-instance CanReadField "parameters" VkDisplayModeCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkParameters
+instance {-# OVERLAPPING #-}
+         CanReadField "parameters" VkDisplayModeCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, parameters})
 
         {-# INLINE readField #-}
-        readField = readVkParameters
+        readField p
+          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, parameters}
 
-instance CanWriteField "parameters" VkDisplayModeCreateInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "parameters" VkDisplayModeCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkParameters
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, parameters}
 
 instance Show VkDisplayModeCreateInfoKHR where
         showsPrec d x
           = showString "VkDisplayModeCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkParameters = " .
-                                  showsPrec d (vkParameters x) . showChar '}'
+                                showString "parameters = " .
+                                  showsPrec d (getField @"parameters" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeParametersKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeParametersKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeParametersKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModeParametersKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayModeParametersKHR
        (VkDisplayModeParametersKHR(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkExtent2D (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayModeParametersKHR {
@@ -21,7 +21,7 @@
 --   >     uint32_t                         refreshRate;
 --   > } VkDisplayModeParametersKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayModeParametersKHR.html VkDisplayModeParametersKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayModeParametersKHR.html VkDisplayModeParametersKHR registry at www.khronos.org>
 data VkDisplayModeParametersKHR = VkDisplayModeParametersKHR## Addr##
                                                               ByteArray##
 
@@ -74,27 +74,6 @@
         type StructExtends VkDisplayModeParametersKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkVisibleRegion VkDisplayModeParametersKHR where
-        type VkVisibleRegionMType VkDisplayModeParametersKHR = VkExtent2D
-
-        {-# NOINLINE vkVisibleRegion #-}
-        vkVisibleRegion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeParametersKHR, visibleRegion})
-
-        {-# INLINE vkVisibleRegionByteOffset #-}
-        vkVisibleRegionByteOffset ~_
-          = #{offset VkDisplayModeParametersKHR, visibleRegion}
-
-        {-# INLINE readVkVisibleRegion #-}
-        readVkVisibleRegion p
-          = peekByteOff p #{offset VkDisplayModeParametersKHR, visibleRegion}
-
-        {-# INLINE writeVkVisibleRegion #-}
-        writeVkVisibleRegion p
-          = pokeByteOff p #{offset VkDisplayModeParametersKHR, visibleRegion}
-
-instance {-# OVERLAPPING #-}
          HasField "visibleRegion" VkDisplayModeParametersKHR where
         type FieldType "visibleRegion" VkDisplayModeParametersKHR =
              VkExtent2D
@@ -112,39 +91,22 @@
         fieldOffset
           = #{offset VkDisplayModeParametersKHR, visibleRegion}
 
-instance CanReadField "visibleRegion" VkDisplayModeParametersKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkVisibleRegion
-
-        {-# INLINE readField #-}
-        readField = readVkVisibleRegion
-
-instance CanWriteField "visibleRegion" VkDisplayModeParametersKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVisibleRegion
-
 instance {-# OVERLAPPING #-}
-         HasVkRefreshRate VkDisplayModeParametersKHR where
-        type VkRefreshRateMType VkDisplayModeParametersKHR = Word32
-
-        {-# NOINLINE vkRefreshRate #-}
-        vkRefreshRate x
+         CanReadField "visibleRegion" VkDisplayModeParametersKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeParametersKHR, refreshRate})
-
-        {-# INLINE vkRefreshRateByteOffset #-}
-        vkRefreshRateByteOffset ~_
-          = #{offset VkDisplayModeParametersKHR, refreshRate}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeParametersKHR, visibleRegion})
 
-        {-# INLINE readVkRefreshRate #-}
-        readVkRefreshRate p
-          = peekByteOff p #{offset VkDisplayModeParametersKHR, refreshRate}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayModeParametersKHR, visibleRegion}
 
-        {-# INLINE writeVkRefreshRate #-}
-        writeVkRefreshRate p
-          = pokeByteOff p #{offset VkDisplayModeParametersKHR, refreshRate}
+instance {-# OVERLAPPING #-}
+         CanWriteField "visibleRegion" VkDisplayModeParametersKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeParametersKHR, visibleRegion}
 
 instance {-# OVERLAPPING #-}
          HasField "refreshRate" VkDisplayModeParametersKHR where
@@ -162,24 +124,28 @@
         fieldOffset
           = #{offset VkDisplayModeParametersKHR, refreshRate}
 
-instance CanReadField "refreshRate" VkDisplayModeParametersKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkRefreshRate
+instance {-# OVERLAPPING #-}
+         CanReadField "refreshRate" VkDisplayModeParametersKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModeParametersKHR, refreshRate})
 
         {-# INLINE readField #-}
-        readField = readVkRefreshRate
+        readField p
+          = peekByteOff p #{offset VkDisplayModeParametersKHR, refreshRate}
 
-instance CanWriteField "refreshRate" VkDisplayModeParametersKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "refreshRate" VkDisplayModeParametersKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkRefreshRate
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModeParametersKHR, refreshRate}
 
 instance Show VkDisplayModeParametersKHR where
         showsPrec d x
           = showString "VkDisplayModeParametersKHR {" .
-              showString "vkVisibleRegion = " .
-                showsPrec d (vkVisibleRegion x) .
+              showString "visibleRegion = " .
+                showsPrec d (getField @"visibleRegion" x) .
                   showString ", " .
-                    showString "vkRefreshRate = " .
-                      showsPrec d (vkRefreshRate x) . showChar '}'
+                    showString "refreshRate = " .
+                      showsPrec d (getField @"refreshRate" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModePropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModePropertiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModePropertiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayModePropertiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayModePropertiesKHR
        (VkDisplayModePropertiesKHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Handles                           (VkDisplayModeKHR)
 import           Graphics.Vulkan.Types.Struct.VkDisplayModeParametersKHR (VkDisplayModeParametersKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayModePropertiesKHR {
@@ -22,7 +22,7 @@
 --   >     VkDisplayModeParametersKHR       parameters;
 --   > } VkDisplayModePropertiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayModePropertiesKHR.html VkDisplayModePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayModePropertiesKHR.html VkDisplayModePropertiesKHR registry at www.khronos.org>
 data VkDisplayModePropertiesKHR = VkDisplayModePropertiesKHR## Addr##
                                                               ByteArray##
 
@@ -75,28 +75,6 @@
         type StructExtends VkDisplayModePropertiesKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkDisplayMode VkDisplayModePropertiesKHR where
-        type VkDisplayModeMType VkDisplayModePropertiesKHR =
-             VkDisplayModeKHR
-
-        {-# NOINLINE vkDisplayMode #-}
-        vkDisplayMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModePropertiesKHR, displayMode})
-
-        {-# INLINE vkDisplayModeByteOffset #-}
-        vkDisplayModeByteOffset ~_
-          = #{offset VkDisplayModePropertiesKHR, displayMode}
-
-        {-# INLINE readVkDisplayMode #-}
-        readVkDisplayMode p
-          = peekByteOff p #{offset VkDisplayModePropertiesKHR, displayMode}
-
-        {-# INLINE writeVkDisplayMode #-}
-        writeVkDisplayMode p
-          = pokeByteOff p #{offset VkDisplayModePropertiesKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
          HasField "displayMode" VkDisplayModePropertiesKHR where
         type FieldType "displayMode" VkDisplayModePropertiesKHR =
              VkDisplayModeKHR
@@ -113,35 +91,22 @@
         fieldOffset
           = #{offset VkDisplayModePropertiesKHR, displayMode}
 
-instance CanReadField "displayMode" VkDisplayModePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDisplayMode
-
-        {-# INLINE readField #-}
-        readField = readVkDisplayMode
-
 instance {-# OVERLAPPING #-}
-         HasVkParameters VkDisplayModePropertiesKHR where
-        type VkParametersMType VkDisplayModePropertiesKHR =
-             VkDisplayModeParametersKHR
-
-        {-# NOINLINE vkParameters #-}
-        vkParameters x
+         CanReadField "displayMode" VkDisplayModePropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModePropertiesKHR, parameters})
-
-        {-# INLINE vkParametersByteOffset #-}
-        vkParametersByteOffset ~_
-          = #{offset VkDisplayModePropertiesKHR, parameters}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModePropertiesKHR, displayMode})
 
-        {-# INLINE readVkParameters #-}
-        readVkParameters p
-          = peekByteOff p #{offset VkDisplayModePropertiesKHR, parameters}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayModePropertiesKHR, displayMode}
 
-        {-# INLINE writeVkParameters #-}
-        writeVkParameters p
-          = pokeByteOff p #{offset VkDisplayModePropertiesKHR, parameters}
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayMode" VkDisplayModePropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayModePropertiesKHR, displayMode}
 
 instance {-# OVERLAPPING #-}
          HasField "parameters" VkDisplayModePropertiesKHR where
@@ -159,18 +124,28 @@
         fieldOffset
           = #{offset VkDisplayModePropertiesKHR, parameters}
 
-instance CanReadField "parameters" VkDisplayModePropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkParameters
+instance {-# OVERLAPPING #-}
+         CanReadField "parameters" VkDisplayModePropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayModePropertiesKHR, parameters})
 
         {-# INLINE readField #-}
-        readField = readVkParameters
+        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 "vkDisplayMode = " .
-                showsPrec d (vkDisplayMode x) .
+              showString "displayMode = " .
+                showsPrec d (getField @"displayMode" x) .
                   showString ", " .
-                    showString "vkParameters = " .
-                      showsPrec d (vkParameters x) . showChar '}'
+                    showString "parameters = " .
+                      showsPrec d (getField @"parameters" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlaneCapabilitiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlaneCapabilitiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlaneCapabilitiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlaneCapabilitiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayPlaneCapabilitiesKHR
        (VkDisplayPlaneCapabilitiesKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkDisplayPlaneAlphaFlagsKHR (VkDisplayPlaneAlphaFlagsKHR)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D                (VkExtent2D)
 import           Graphics.Vulkan.Types.Struct.VkOffset2D                (VkOffset2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayPlaneCapabilitiesKHR {
@@ -30,7 +30,7 @@
 --   >     VkExtent2D                       maxDstExtent;
 --   > } VkDisplayPlaneCapabilitiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayPlaneCapabilitiesKHR.html VkDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayPlaneCapabilitiesKHR.html VkDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
 data VkDisplayPlaneCapabilitiesKHR = VkDisplayPlaneCapabilitiesKHR## Addr##
                                                                     ByteArray##
 
@@ -86,28 +86,6 @@
         type StructExtends VkDisplayPlaneCapabilitiesKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSupportedAlpha VkDisplayPlaneCapabilitiesKHR where
-        type VkSupportedAlphaMType VkDisplayPlaneCapabilitiesKHR =
-             VkDisplayPlaneAlphaFlagsKHR
-
-        {-# NOINLINE vkSupportedAlpha #-}
-        vkSupportedAlpha x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha})
-
-        {-# INLINE vkSupportedAlphaByteOffset #-}
-        vkSupportedAlphaByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-
-        {-# INLINE readVkSupportedAlpha #-}
-        readVkSupportedAlpha p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-
-        {-# INLINE writeVkSupportedAlpha #-}
-        writeVkSupportedAlpha p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-
-instance {-# OVERLAPPING #-}
          HasField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
         type FieldType "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
              VkDisplayPlaneAlphaFlagsKHR
@@ -125,36 +103,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
 
-instance CanReadField "supportedAlpha"
-           VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSupportedAlpha
-
-        {-# INLINE readField #-}
-        readField = readVkSupportedAlpha
-
 instance {-# OVERLAPPING #-}
-         HasVkMinSrcPosition VkDisplayPlaneCapabilitiesKHR where
-        type VkMinSrcPositionMType VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-
-        {-# NOINLINE vkMinSrcPosition #-}
-        vkMinSrcPosition x
+         CanReadField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition})
-
-        {-# INLINE vkMinSrcPositionByteOffset #-}
-        vkMinSrcPositionByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha})
 
-        {-# INLINE readVkMinSrcPosition #-}
-        readVkMinSrcPosition p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
 
-        {-# INLINE writeVkMinSrcPosition #-}
-        writeVkMinSrcPosition p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
+instance {-# OVERLAPPING #-}
+         CanWriteField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
 
 instance {-# OVERLAPPING #-}
          HasField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
@@ -174,36 +138,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
 
-instance CanReadField "minSrcPosition"
-           VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinSrcPosition
-
-        {-# INLINE readField #-}
-        readField = readVkMinSrcPosition
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxSrcPosition VkDisplayPlaneCapabilitiesKHR where
-        type VkMaxSrcPositionMType VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-
-        {-# NOINLINE vkMaxSrcPosition #-}
-        vkMaxSrcPosition x
+         CanReadField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition})
-
-        {-# INLINE vkMaxSrcPositionByteOffset #-}
-        vkMaxSrcPositionByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition})
 
-        {-# INLINE readVkMaxSrcPosition #-}
-        readVkMaxSrcPosition p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
 
-        {-# INLINE writeVkMaxSrcPosition #-}
-        writeVkMaxSrcPosition p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
@@ -223,35 +173,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
 
-instance CanReadField "maxSrcPosition"
-           VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSrcPosition
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSrcPosition
-
 instance {-# OVERLAPPING #-}
-         HasVkMinSrcExtent VkDisplayPlaneCapabilitiesKHR where
-        type VkMinSrcExtentMType VkDisplayPlaneCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkMinSrcExtent #-}
-        vkMinSrcExtent x
+         CanReadField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent})
-
-        {-# INLINE vkMinSrcExtentByteOffset #-}
-        vkMinSrcExtentByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition})
 
-        {-# INLINE readVkMinSrcExtent #-}
-        readVkMinSrcExtent p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
 
-        {-# INLINE writeVkMinSrcExtent #-}
-        writeVkMinSrcExtent p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
 
 instance {-# OVERLAPPING #-}
          HasField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
@@ -271,34 +208,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
 
-instance CanReadField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinSrcExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMinSrcExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxSrcExtent VkDisplayPlaneCapabilitiesKHR where
-        type VkMaxSrcExtentMType VkDisplayPlaneCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkMaxSrcExtent #-}
-        vkMaxSrcExtent x
+         CanReadField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent})
-
-        {-# INLINE vkMaxSrcExtentByteOffset #-}
-        vkMaxSrcExtentByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent})
 
-        {-# INLINE readVkMaxSrcExtent #-}
-        readVkMaxSrcExtent p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
 
-        {-# INLINE writeVkMaxSrcExtent #-}
-        writeVkMaxSrcExtent p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
@@ -318,35 +243,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
 
-instance CanReadField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSrcExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSrcExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMinDstPosition VkDisplayPlaneCapabilitiesKHR where
-        type VkMinDstPositionMType VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-
-        {-# NOINLINE vkMinDstPosition #-}
-        vkMinDstPosition x
+         CanReadField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition})
-
-        {-# INLINE vkMinDstPositionByteOffset #-}
-        vkMinDstPositionByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent})
 
-        {-# INLINE readVkMinDstPosition #-}
-        readVkMinDstPosition p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
 
-        {-# INLINE writeVkMinDstPosition #-}
-        writeVkMinDstPosition p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
@@ -366,36 +278,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
 
-instance CanReadField "minDstPosition"
-           VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinDstPosition
-
-        {-# INLINE readField #-}
-        readField = readVkMinDstPosition
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxDstPosition VkDisplayPlaneCapabilitiesKHR where
-        type VkMaxDstPositionMType VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-
-        {-# NOINLINE vkMaxDstPosition #-}
-        vkMaxDstPosition x
+         CanReadField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition})
-
-        {-# INLINE vkMaxDstPositionByteOffset #-}
-        vkMaxDstPositionByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition})
 
-        {-# INLINE readVkMaxDstPosition #-}
-        readVkMaxDstPosition p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
 
-        {-# INLINE writeVkMaxDstPosition #-}
-        writeVkMaxDstPosition p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
 
 instance {-# OVERLAPPING #-}
          HasField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
@@ -415,35 +313,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
 
-instance CanReadField "maxDstPosition"
-           VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDstPosition
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDstPosition
-
 instance {-# OVERLAPPING #-}
-         HasVkMinDstExtent VkDisplayPlaneCapabilitiesKHR where
-        type VkMinDstExtentMType VkDisplayPlaneCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkMinDstExtent #-}
-        vkMinDstExtent x
+         CanReadField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent})
-
-        {-# INLINE vkMinDstExtentByteOffset #-}
-        vkMinDstExtentByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition})
 
-        {-# INLINE readVkMinDstExtent #-}
-        readVkMinDstExtent p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
 
-        {-# INLINE writeVkMinDstExtent #-}
-        writeVkMinDstExtent p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
 
 instance {-# OVERLAPPING #-}
          HasField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
@@ -463,34 +348,22 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
 
-instance CanReadField "minDstExtent" VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinDstExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMinDstExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxDstExtent VkDisplayPlaneCapabilitiesKHR where
-        type VkMaxDstExtentMType VkDisplayPlaneCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkMaxDstExtent #-}
-        vkMaxDstExtent x
+         CanReadField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent})
-
-        {-# INLINE vkMaxDstExtentByteOffset #-}
-        vkMaxDstExtentByteOffset ~_
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent})
 
-        {-# INLINE readVkMaxDstExtent #-}
-        readVkMaxDstExtent p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
 
-        {-# INLINE writeVkMaxDstExtent #-}
-        writeVkMaxDstExtent p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
@@ -510,41 +383,51 @@
         fieldOffset
           = #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
 
-instance CanReadField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDstExtent
+instance {-# OVERLAPPING #-}
+         CanReadField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent})
 
         {-# INLINE readField #-}
-        readField = readVkMaxDstExtent
+        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 "vkSupportedAlpha = " .
-                showsPrec d (vkSupportedAlpha x) .
+              showString "supportedAlpha = " .
+                showsPrec d (getField @"supportedAlpha" x) .
                   showString ", " .
-                    showString "vkMinSrcPosition = " .
-                      showsPrec d (vkMinSrcPosition x) .
+                    showString "minSrcPosition = " .
+                      showsPrec d (getField @"minSrcPosition" x) .
                         showString ", " .
-                          showString "vkMaxSrcPosition = " .
-                            showsPrec d (vkMaxSrcPosition x) .
+                          showString "maxSrcPosition = " .
+                            showsPrec d (getField @"maxSrcPosition" x) .
                               showString ", " .
-                                showString "vkMinSrcExtent = " .
-                                  showsPrec d (vkMinSrcExtent x) .
+                                showString "minSrcExtent = " .
+                                  showsPrec d (getField @"minSrcExtent" x) .
                                     showString ", " .
-                                      showString "vkMaxSrcExtent = " .
-                                        showsPrec d (vkMaxSrcExtent x) .
+                                      showString "maxSrcExtent = " .
+                                        showsPrec d (getField @"maxSrcExtent" x) .
                                           showString ", " .
-                                            showString "vkMinDstPosition = " .
-                                              showsPrec d (vkMinDstPosition x) .
+                                            showString "minDstPosition = " .
+                                              showsPrec d (getField @"minDstPosition" x) .
                                                 showString ", " .
-                                                  showString "vkMaxDstPosition = " .
-                                                    showsPrec d (vkMaxDstPosition x) .
+                                                  showString "maxDstPosition = " .
+                                                    showsPrec d (getField @"maxDstPosition" x) .
                                                       showString ", " .
-                                                        showString "vkMinDstExtent = " .
-                                                          showsPrec d (vkMinDstExtent x) .
+                                                        showString "minDstExtent = " .
+                                                          showsPrec d (getField @"minDstExtent" x) .
                                                             showString ", " .
-                                                              showString "vkMaxDstExtent = " .
-                                                                showsPrec d (vkMaxDstExtent x) .
-                                                                  showChar '}'
+                                                              showString "maxDstExtent = " .
+                                                                showsPrec d
+                                                                  (getField @"maxDstExtent" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlanePropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlanePropertiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlanePropertiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPlanePropertiesKHR.hsc
@@ -5,23 +5,23 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayPlanePropertiesKHR
        (VkDisplayPlanePropertiesKHR(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Handles       (VkDisplayKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Handles    (VkDisplayKHR)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayPlanePropertiesKHR {
 --   >     VkDisplayKHR                     currentDisplay;
 --   >     uint32_t                         currentStackIndex;
 --   > } VkDisplayPlanePropertiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayPlanePropertiesKHR.html VkDisplayPlanePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayPlanePropertiesKHR.html VkDisplayPlanePropertiesKHR registry at www.khronos.org>
 data VkDisplayPlanePropertiesKHR = VkDisplayPlanePropertiesKHR## Addr##
                                                                 ByteArray##
 
@@ -74,28 +74,6 @@
         type StructExtends VkDisplayPlanePropertiesKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkCurrentDisplay VkDisplayPlanePropertiesKHR where
-        type VkCurrentDisplayMType VkDisplayPlanePropertiesKHR =
-             VkDisplayKHR
-
-        {-# NOINLINE vkCurrentDisplay #-}
-        vkCurrentDisplay x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlanePropertiesKHR, currentDisplay})
-
-        {-# INLINE vkCurrentDisplayByteOffset #-}
-        vkCurrentDisplayByteOffset ~_
-          = #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-
-        {-# INLINE readVkCurrentDisplay #-}
-        readVkCurrentDisplay p
-          = peekByteOff p #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-
-        {-# INLINE writeVkCurrentDisplay #-}
-        writeVkCurrentDisplay p
-          = pokeByteOff p #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-
-instance {-# OVERLAPPING #-}
          HasField "currentDisplay" VkDisplayPlanePropertiesKHR where
         type FieldType "currentDisplay" VkDisplayPlanePropertiesKHR =
              VkDisplayKHR
@@ -113,34 +91,22 @@
         fieldOffset
           = #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
 
-instance CanReadField "currentDisplay" VkDisplayPlanePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCurrentDisplay
-
-        {-# INLINE readField #-}
-        readField = readVkCurrentDisplay
-
 instance {-# OVERLAPPING #-}
-         HasVkCurrentStackIndex VkDisplayPlanePropertiesKHR where
-        type VkCurrentStackIndexMType VkDisplayPlanePropertiesKHR = Word32
-
-        {-# NOINLINE vkCurrentStackIndex #-}
-        vkCurrentStackIndex x
+         CanReadField "currentDisplay" VkDisplayPlanePropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlanePropertiesKHR, currentStackIndex})
-
-        {-# INLINE vkCurrentStackIndexByteOffset #-}
-        vkCurrentStackIndexByteOffset ~_
-          = #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlanePropertiesKHR, currentDisplay})
 
-        {-# INLINE readVkCurrentStackIndex #-}
-        readVkCurrentStackIndex p
-          = peekByteOff p #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
 
-        {-# INLINE writeVkCurrentStackIndex #-}
-        writeVkCurrentStackIndex p
-          = pokeByteOff p #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "currentDisplay" VkDisplayPlanePropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
 
 instance {-# OVERLAPPING #-}
          HasField "currentStackIndex" VkDisplayPlanePropertiesKHR where
@@ -160,20 +126,28 @@
         fieldOffset
           = #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
 
-instance CanReadField "currentStackIndex"
-           VkDisplayPlanePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCurrentStackIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "currentStackIndex" VkDisplayPlanePropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPlanePropertiesKHR, currentStackIndex})
 
         {-# INLINE readField #-}
-        readField = readVkCurrentStackIndex
+        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 "vkCurrentDisplay = " .
-                showsPrec d (vkCurrentDisplay x) .
+              showString "currentDisplay = " .
+                showsPrec d (getField @"currentDisplay" x) .
                   showString ", " .
-                    showString "vkCurrentStackIndex = " .
-                      showsPrec d (vkCurrentStackIndex x) . showChar '}'
+                    showString "currentStackIndex = " .
+                      showsPrec d (getField @"currentStackIndex" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPowerInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPowerInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPowerInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPowerInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayPowerInfoEXT
        (VkDisplayPowerInfoEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkDisplayPowerStateEXT (VkDisplayPowerStateEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayPowerInfoEXT {
@@ -23,7 +23,7 @@
 --   >     VkDisplayPowerStateEXT           powerState;
 --   > } VkDisplayPowerInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayPowerInfoEXT.html VkDisplayPowerInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayPowerInfoEXT.html VkDisplayPowerInfoEXT registry at www.khronos.org>
 data VkDisplayPowerInfoEXT = VkDisplayPowerInfoEXT## Addr##
                                                     ByteArray##
 
@@ -72,26 +72,6 @@
         type ReturnedOnly VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDisplayPowerInfoEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDisplayPowerInfoEXT where
-        type VkSTypeMType VkDisplayPowerInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDisplayPowerInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDisplayPowerInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkDisplayPowerInfoEXT
          where
         type FieldType "sType" VkDisplayPowerInfoEXT = VkStructureType
@@ -106,36 +86,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayPowerInfoEXT, sType}
 
-instance CanReadField "sType" VkDisplayPowerInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayPowerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDisplayPowerInfoEXT, sType}
 
-instance CanWriteField "sType" VkDisplayPowerInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayPowerInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDisplayPowerInfoEXT where
-        type VkPNextMType VkDisplayPowerInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDisplayPowerInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDisplayPowerInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkDisplayPowerInfoEXT
          where
@@ -151,38 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayPowerInfoEXT, pNext}
 
-instance CanReadField "pNext" VkDisplayPowerInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayPowerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDisplayPowerInfoEXT, pNext}
 
-instance CanWriteField "pNext" VkDisplayPowerInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayPowerInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkPowerState VkDisplayPowerInfoEXT
-         where
-        type VkPowerStateMType VkDisplayPowerInfoEXT =
-             VkDisplayPowerStateEXT
-
-        {-# NOINLINE vkPowerState #-}
-        vkPowerState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, powerState})
-
-        {-# INLINE vkPowerStateByteOffset #-}
-        vkPowerStateByteOffset ~_
-          = #{offset VkDisplayPowerInfoEXT, powerState}
-
-        {-# INLINE readVkPowerState #-}
-        readVkPowerState p
-          = peekByteOff p #{offset VkDisplayPowerInfoEXT, powerState}
-
-        {-# INLINE writeVkPowerState #-}
-        writeVkPowerState p
-          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, powerState}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "powerState" VkDisplayPowerInfoEXT where
@@ -200,25 +150,31 @@
         fieldOffset
           = #{offset VkDisplayPowerInfoEXT, powerState}
 
-instance CanReadField "powerState" VkDisplayPowerInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPowerState
+instance {-# OVERLAPPING #-}
+         CanReadField "powerState" VkDisplayPowerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, powerState})
 
         {-# INLINE readField #-}
-        readField = readVkPowerState
+        readField p
+          = peekByteOff p #{offset VkDisplayPowerInfoEXT, powerState}
 
-instance CanWriteField "powerState" VkDisplayPowerInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "powerState" VkDisplayPowerInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPowerState
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, powerState}
 
 instance Show VkDisplayPowerInfoEXT where
         showsPrec d x
           = showString "VkDisplayPowerInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPowerState = " .
-                            showsPrec d (vkPowerState x) . showChar '}'
+                          showString "powerState = " .
+                            showsPrec d (getField @"powerState" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPresentInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPresentInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPresentInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPresentInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayPresentInfoKHR
        (VkDisplayPresentInfoKHR(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR (VkPresentInfoKHR)
 import           Graphics.Vulkan.Types.Struct.VkRect2D         (VkRect2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayPresentInfoKHR {
@@ -27,7 +27,7 @@
 --   >     VkBool32                         persistent;
 --   > } VkDisplayPresentInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayPresentInfoKHR.html VkDisplayPresentInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayPresentInfoKHR.html VkDisplayPresentInfoKHR registry at www.khronos.org>
 data VkDisplayPresentInfoKHR = VkDisplayPresentInfoKHR## Addr##
                                                         ByteArray##
 
@@ -76,27 +76,6 @@
         type ReturnedOnly VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDisplayPresentInfoKHR = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkDisplayPresentInfoKHR
-         where
-        type VkSTypeMType VkDisplayPresentInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDisplayPresentInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkDisplayPresentInfoKHR where
         type FieldType "sType" VkDisplayPresentInfoKHR = VkStructureType
@@ -111,37 +90,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayPresentInfoKHR, sType}
 
-instance CanReadField "sType" VkDisplayPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkDisplayPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkDisplayPresentInfoKHR, sType}
 
-instance CanWriteField "sType" VkDisplayPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplayPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkDisplayPresentInfoKHR
-         where
-        type VkPNextMType VkDisplayPresentInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDisplayPresentInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDisplayPresentInfoKHR where
@@ -157,37 +121,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayPresentInfoKHR, pNext}
 
-instance CanReadField "pNext" VkDisplayPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkDisplayPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkDisplayPresentInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkDisplayPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplayPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkSrcRect VkDisplayPresentInfoKHR
-         where
-        type VkSrcRectMType VkDisplayPresentInfoKHR = VkRect2D
-
-        {-# NOINLINE vkSrcRect #-}
-        vkSrcRect x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, srcRect})
-
-        {-# INLINE vkSrcRectByteOffset #-}
-        vkSrcRectByteOffset ~_
-          = #{offset VkDisplayPresentInfoKHR, srcRect}
-
-        {-# INLINE readVkSrcRect #-}
-        readVkSrcRect p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, srcRect}
-
-        {-# INLINE writeVkSrcRect #-}
-        writeVkSrcRect p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, srcRect}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "srcRect" VkDisplayPresentInfoKHR where
@@ -204,37 +153,22 @@
         fieldOffset
           = #{offset VkDisplayPresentInfoKHR, srcRect}
 
-instance CanReadField "srcRect" VkDisplayPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSrcRect
+instance {-# OVERLAPPING #-}
+         CanReadField "srcRect" VkDisplayPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, srcRect})
 
         {-# INLINE readField #-}
-        readField = readVkSrcRect
+        readField p
+          = peekByteOff p #{offset VkDisplayPresentInfoKHR, srcRect}
 
-instance CanWriteField "srcRect" VkDisplayPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcRect" VkDisplayPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcRect
-
-instance {-# OVERLAPPING #-} HasVkDstRect VkDisplayPresentInfoKHR
-         where
-        type VkDstRectMType VkDisplayPresentInfoKHR = VkRect2D
-
-        {-# NOINLINE vkDstRect #-}
-        vkDstRect x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, dstRect})
-
-        {-# INLINE vkDstRectByteOffset #-}
-        vkDstRectByteOffset ~_
-          = #{offset VkDisplayPresentInfoKHR, dstRect}
-
-        {-# INLINE readVkDstRect #-}
-        readVkDstRect p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, dstRect}
-
-        {-# INLINE writeVkDstRect #-}
-        writeVkDstRect p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, dstRect}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, srcRect}
 
 instance {-# OVERLAPPING #-}
          HasField "dstRect" VkDisplayPresentInfoKHR where
@@ -251,37 +185,22 @@
         fieldOffset
           = #{offset VkDisplayPresentInfoKHR, dstRect}
 
-instance CanReadField "dstRect" VkDisplayPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkDstRect
-
-        {-# INLINE readField #-}
-        readField = readVkDstRect
-
-instance CanWriteField "dstRect" VkDisplayPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstRect
-
 instance {-# OVERLAPPING #-}
-         HasVkPersistent VkDisplayPresentInfoKHR where
-        type VkPersistentMType VkDisplayPresentInfoKHR = VkBool32
-
-        {-# NOINLINE vkPersistent #-}
-        vkPersistent x
+         CanReadField "dstRect" VkDisplayPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, persistent})
-
-        {-# INLINE vkPersistentByteOffset #-}
-        vkPersistentByteOffset ~_
-          = #{offset VkDisplayPresentInfoKHR, persistent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, dstRect})
 
-        {-# INLINE readVkPersistent #-}
-        readVkPersistent p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, persistent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPresentInfoKHR, dstRect}
 
-        {-# INLINE writeVkPersistent #-}
-        writeVkPersistent p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, persistent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstRect" VkDisplayPresentInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, dstRect}
 
 instance {-# OVERLAPPING #-}
          HasField "persistent" VkDisplayPresentInfoKHR where
@@ -298,31 +217,37 @@
         fieldOffset
           = #{offset VkDisplayPresentInfoKHR, persistent}
 
-instance CanReadField "persistent" VkDisplayPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPersistent
+instance {-# OVERLAPPING #-}
+         CanReadField "persistent" VkDisplayPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, persistent})
 
         {-# INLINE readField #-}
-        readField = readVkPersistent
+        readField p
+          = peekByteOff p #{offset VkDisplayPresentInfoKHR, persistent}
 
-instance CanWriteField "persistent" VkDisplayPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "persistent" VkDisplayPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPersistent
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, persistent}
 
 instance Show VkDisplayPresentInfoKHR where
         showsPrec d x
           = showString "VkDisplayPresentInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSrcRect = " .
-                            showsPrec d (vkSrcRect x) .
+                          showString "srcRect = " .
+                            showsPrec d (getField @"srcRect" x) .
                               showString ", " .
-                                showString "vkDstRect = " .
-                                  showsPrec d (vkDstRect x) .
+                                showString "dstRect = " .
+                                  showsPrec d (getField @"dstRect" x) .
                                     showString ", " .
-                                      showString "vkPersistent = " .
-                                        showsPrec d (vkPersistent x) . showChar '}'
+                                      showString "persistent = " .
+                                        showsPrec d (getField @"persistent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPropertiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPropertiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplayPropertiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplayPropertiesKHR
        (VkDisplayPropertiesKHR(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR (VkSurfaceTransformFlagsKHR)
 import           Graphics.Vulkan.Types.Handles                         (VkDisplayKHR)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D               (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplayPropertiesKHR {
@@ -29,7 +29,7 @@
 --   >     VkBool32                         persistentContent;
 --   > } VkDisplayPropertiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplayPropertiesKHR.html VkDisplayPropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplayPropertiesKHR.html VkDisplayPropertiesKHR registry at www.khronos.org>
 data VkDisplayPropertiesKHR = VkDisplayPropertiesKHR## Addr##
                                                       ByteArray##
 
@@ -80,27 +80,6 @@
         type ReturnedOnly VkDisplayPropertiesKHR = 'True -- ' closing tick for hsc2hs
         type StructExtends VkDisplayPropertiesKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkDisplay VkDisplayPropertiesKHR
-         where
-        type VkDisplayMType VkDisplayPropertiesKHR = VkDisplayKHR
-
-        {-# NOINLINE vkDisplay #-}
-        vkDisplay x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, display})
-
-        {-# INLINE vkDisplayByteOffset #-}
-        vkDisplayByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, display}
-
-        {-# INLINE readVkDisplay #-}
-        readVkDisplay p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, display}
-
-        {-# INLINE writeVkDisplay #-}
-        writeVkDisplay p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, display}
-
 instance {-# OVERLAPPING #-}
          HasField "display" VkDisplayPropertiesKHR where
         type FieldType "display" VkDisplayPropertiesKHR = VkDisplayKHR
@@ -115,33 +94,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkDisplayPropertiesKHR, display}
 
-instance CanReadField "display" VkDisplayPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkDisplay
-
-        {-# INLINE readField #-}
-        readField = readVkDisplay
-
 instance {-# OVERLAPPING #-}
-         HasVkDisplayName VkDisplayPropertiesKHR where
-        type VkDisplayNameMType VkDisplayPropertiesKHR = CString
-
-        {-# NOINLINE vkDisplayName #-}
-        vkDisplayName x
+         CanReadField "display" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, displayName})
-
-        {-# INLINE vkDisplayNameByteOffset #-}
-        vkDisplayNameByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, displayName}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, display})
 
-        {-# INLINE readVkDisplayName #-}
-        readVkDisplayName p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, displayName}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPropertiesKHR, display}
 
-        {-# INLINE writeVkDisplayName #-}
-        writeVkDisplayName p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, displayName}
+instance {-# OVERLAPPING #-}
+         CanWriteField "display" VkDisplayPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPropertiesKHR, display}
 
 instance {-# OVERLAPPING #-}
          HasField "displayName" VkDisplayPropertiesKHR where
@@ -158,33 +126,22 @@
         fieldOffset
           = #{offset VkDisplayPropertiesKHR, displayName}
 
-instance CanReadField "displayName" VkDisplayPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkDisplayName
-
-        {-# INLINE readField #-}
-        readField = readVkDisplayName
-
 instance {-# OVERLAPPING #-}
-         HasVkPhysicalDimensions VkDisplayPropertiesKHR where
-        type VkPhysicalDimensionsMType VkDisplayPropertiesKHR = VkExtent2D
-
-        {-# NOINLINE vkPhysicalDimensions #-}
-        vkPhysicalDimensions x
+         CanReadField "displayName" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, physicalDimensions})
-
-        {-# INLINE vkPhysicalDimensionsByteOffset #-}
-        vkPhysicalDimensionsByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, physicalDimensions}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, displayName})
 
-        {-# INLINE readVkPhysicalDimensions #-}
-        readVkPhysicalDimensions p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, physicalDimensions}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPropertiesKHR, displayName}
 
-        {-# INLINE writeVkPhysicalDimensions #-}
-        writeVkPhysicalDimensions p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, physicalDimensions}
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayName" VkDisplayPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPropertiesKHR, displayName}
 
 instance {-# OVERLAPPING #-}
          HasField "physicalDimensions" VkDisplayPropertiesKHR where
@@ -204,34 +161,22 @@
         fieldOffset
           = #{offset VkDisplayPropertiesKHR, physicalDimensions}
 
-instance CanReadField "physicalDimensions" VkDisplayPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPhysicalDimensions
-
-        {-# INLINE readField #-}
-        readField = readVkPhysicalDimensions
-
 instance {-# OVERLAPPING #-}
-         HasVkPhysicalResolution VkDisplayPropertiesKHR where
-        type VkPhysicalResolutionMType VkDisplayPropertiesKHR = VkExtent2D
-
-        {-# NOINLINE vkPhysicalResolution #-}
-        vkPhysicalResolution x
+         CanReadField "physicalDimensions" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, physicalResolution})
-
-        {-# INLINE vkPhysicalResolutionByteOffset #-}
-        vkPhysicalResolutionByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, physicalResolution}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, physicalDimensions})
 
-        {-# INLINE readVkPhysicalResolution #-}
-        readVkPhysicalResolution p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, physicalResolution}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPropertiesKHR, physicalDimensions}
 
-        {-# INLINE writeVkPhysicalResolution #-}
-        writeVkPhysicalResolution p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, physicalResolution}
+instance {-# OVERLAPPING #-}
+         CanWriteField "physicalDimensions" VkDisplayPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPropertiesKHR, physicalDimensions}
 
 instance {-# OVERLAPPING #-}
          HasField "physicalResolution" VkDisplayPropertiesKHR where
@@ -251,35 +196,22 @@
         fieldOffset
           = #{offset VkDisplayPropertiesKHR, physicalResolution}
 
-instance CanReadField "physicalResolution" VkDisplayPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPhysicalResolution
-
-        {-# INLINE readField #-}
-        readField = readVkPhysicalResolution
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportedTransforms VkDisplayPropertiesKHR where
-        type VkSupportedTransformsMType VkDisplayPropertiesKHR =
-             VkSurfaceTransformFlagsKHR
-
-        {-# NOINLINE vkSupportedTransforms #-}
-        vkSupportedTransforms x
+         CanReadField "physicalResolution" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, supportedTransforms})
-
-        {-# INLINE vkSupportedTransformsByteOffset #-}
-        vkSupportedTransformsByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, supportedTransforms}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, physicalResolution})
 
-        {-# INLINE readVkSupportedTransforms #-}
-        readVkSupportedTransforms p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, supportedTransforms}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPropertiesKHR, physicalResolution}
 
-        {-# INLINE writeVkSupportedTransforms #-}
-        writeVkSupportedTransforms p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, supportedTransforms}
+instance {-# OVERLAPPING #-}
+         CanWriteField "physicalResolution" VkDisplayPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPropertiesKHR, physicalResolution}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedTransforms" VkDisplayPropertiesKHR where
@@ -299,34 +231,22 @@
         fieldOffset
           = #{offset VkDisplayPropertiesKHR, supportedTransforms}
 
-instance CanReadField "supportedTransforms" VkDisplayPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSupportedTransforms
-
-        {-# INLINE readField #-}
-        readField = readVkSupportedTransforms
-
 instance {-# OVERLAPPING #-}
-         HasVkPlaneReorderPossible VkDisplayPropertiesKHR where
-        type VkPlaneReorderPossibleMType VkDisplayPropertiesKHR = VkBool32
-
-        {-# NOINLINE vkPlaneReorderPossible #-}
-        vkPlaneReorderPossible x
+         CanReadField "supportedTransforms" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, planeReorderPossible})
-
-        {-# INLINE vkPlaneReorderPossibleByteOffset #-}
-        vkPlaneReorderPossibleByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, planeReorderPossible}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, supportedTransforms})
 
-        {-# INLINE readVkPlaneReorderPossible #-}
-        readVkPlaneReorderPossible p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, planeReorderPossible}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPropertiesKHR, supportedTransforms}
 
-        {-# INLINE writeVkPlaneReorderPossible #-}
-        writeVkPlaneReorderPossible p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, planeReorderPossible}
+instance {-# OVERLAPPING #-}
+         CanWriteField "supportedTransforms" VkDisplayPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPropertiesKHR, supportedTransforms}
 
 instance {-# OVERLAPPING #-}
          HasField "planeReorderPossible" VkDisplayPropertiesKHR where
@@ -346,34 +266,22 @@
         fieldOffset
           = #{offset VkDisplayPropertiesKHR, planeReorderPossible}
 
-instance CanReadField "planeReorderPossible" VkDisplayPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPlaneReorderPossible
-
-        {-# INLINE readField #-}
-        readField = readVkPlaneReorderPossible
-
 instance {-# OVERLAPPING #-}
-         HasVkPersistentContent VkDisplayPropertiesKHR where
-        type VkPersistentContentMType VkDisplayPropertiesKHR = VkBool32
-
-        {-# NOINLINE vkPersistentContent #-}
-        vkPersistentContent x
+         CanReadField "planeReorderPossible" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, persistentContent})
-
-        {-# INLINE vkPersistentContentByteOffset #-}
-        vkPersistentContentByteOffset ~_
-          = #{offset VkDisplayPropertiesKHR, persistentContent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, planeReorderPossible})
 
-        {-# INLINE readVkPersistentContent #-}
-        readVkPersistentContent p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, persistentContent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplayPropertiesKHR, planeReorderPossible}
 
-        {-# INLINE writeVkPersistentContent #-}
-        writeVkPersistentContent p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, persistentContent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "planeReorderPossible" VkDisplayPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplayPropertiesKHR, planeReorderPossible}
 
 instance {-# OVERLAPPING #-}
          HasField "persistentContent" VkDisplayPropertiesKHR where
@@ -393,35 +301,44 @@
         fieldOffset
           = #{offset VkDisplayPropertiesKHR, persistentContent}
 
-instance CanReadField "persistentContent" VkDisplayPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPersistentContent
+instance {-# OVERLAPPING #-}
+         CanReadField "persistentContent" VkDisplayPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, persistentContent})
 
         {-# INLINE readField #-}
-        readField = readVkPersistentContent
+        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 "vkDisplay = " .
-                showsPrec d (vkDisplay x) .
+              showString "display = " .
+                showsPrec d (getField @"display" x) .
                   showString ", " .
-                    showString "vkDisplayName = " .
-                      showsPrec d (vkDisplayName x) .
+                    showString "displayName = " .
+                      showsPrec d (getField @"displayName" x) .
                         showString ", " .
-                          showString "vkPhysicalDimensions = " .
-                            showsPrec d (vkPhysicalDimensions x) .
+                          showString "physicalDimensions = " .
+                            showsPrec d (getField @"physicalDimensions" x) .
                               showString ", " .
-                                showString "vkPhysicalResolution = " .
-                                  showsPrec d (vkPhysicalResolution x) .
+                                showString "physicalResolution = " .
+                                  showsPrec d (getField @"physicalResolution" x) .
                                     showString ", " .
-                                      showString "vkSupportedTransforms = " .
-                                        showsPrec d (vkSupportedTransforms x) .
+                                      showString "supportedTransforms = " .
+                                        showsPrec d (getField @"supportedTransforms" x) .
                                           showString ", " .
-                                            showString "vkPlaneReorderPossible = " .
-                                              showsPrec d (vkPlaneReorderPossible x) .
+                                            showString "planeReorderPossible = " .
+                                              showsPrec d (getField @"planeReorderPossible" x) .
                                                 showString ", " .
-                                                  showString "vkPersistentContent = " .
-                                                    showsPrec d (vkPersistentContent x) .
+                                                  showString "persistentContent = " .
+                                                    showsPrec d (getField @"persistentContent" x) .
                                                       showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplaySurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplaySurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDisplaySurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDisplaySurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDisplaySurfaceCreateInfoKHR
        (VkDisplaySurfaceCreateInfoKHR(..)) where
@@ -18,7 +19,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR  (VkSurfaceTransformFlagBitsKHR)
 import           Graphics.Vulkan.Types.Handles                          (VkDisplayModeKHR)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D                (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDisplaySurfaceCreateInfoKHR {
@@ -34,7 +34,7 @@
 --   >     VkExtent2D                       imageExtent;
 --   > } VkDisplaySurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDisplaySurfaceCreateInfoKHR.html VkDisplaySurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDisplaySurfaceCreateInfoKHR.html VkDisplaySurfaceCreateInfoKHR registry at www.khronos.org>
 data VkDisplaySurfaceCreateInfoKHR = VkDisplaySurfaceCreateInfoKHR## Addr##
                                                                     ByteArray##
 
@@ -90,27 +90,6 @@
         type StructExtends VkDisplaySurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkDisplaySurfaceCreateInfoKHR where
-        type VkSTypeMType VkDisplaySurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkDisplaySurfaceCreateInfoKHR where
         type FieldType "sType" VkDisplaySurfaceCreateInfoKHR =
              VkStructureType
@@ -126,37 +105,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkDisplaySurfaceCreateInfoKHR where
-        type VkPNextMType VkDisplaySurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkDisplaySurfaceCreateInfoKHR where
@@ -173,38 +137,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkDisplaySurfaceCreateInfoKHR where
-        type VkFlagsMType VkDisplaySurfaceCreateInfoKHR =
-             VkDisplaySurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, flags}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkDisplaySurfaceCreateInfoKHR where
@@ -222,38 +170,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkDisplayMode VkDisplaySurfaceCreateInfoKHR where
-        type VkDisplayModeMType VkDisplaySurfaceCreateInfoKHR =
-             VkDisplayModeKHR
-
-        {-# NOINLINE vkDisplayMode #-}
-        vkDisplayMode x
+         CanReadField "flags" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, displayMode})
-
-        {-# INLINE vkDisplayModeByteOffset #-}
-        vkDisplayModeByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, flags})
 
-        {-# INLINE readVkDisplayMode #-}
-        readVkDisplayMode p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, flags}
 
-        {-# INLINE writeVkDisplayMode #-}
-        writeVkDisplayMode p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "displayMode" VkDisplaySurfaceCreateInfoKHR where
@@ -273,39 +205,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
 
-instance CanReadField "displayMode" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDisplayMode
-
-        {-# INLINE readField #-}
-        readField = readVkDisplayMode
-
-instance CanWriteField "displayMode" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDisplayMode
-
 instance {-# OVERLAPPING #-}
-         HasVkPlaneIndex VkDisplaySurfaceCreateInfoKHR where
-        type VkPlaneIndexMType VkDisplaySurfaceCreateInfoKHR = Word32
-
-        {-# NOINLINE vkPlaneIndex #-}
-        vkPlaneIndex x
+         CanReadField "displayMode" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex})
-
-        {-# INLINE vkPlaneIndexByteOffset #-}
-        vkPlaneIndexByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, displayMode})
 
-        {-# INLINE readVkPlaneIndex #-}
-        readVkPlaneIndex p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
 
-        {-# INLINE writeVkPlaneIndex #-}
-        writeVkPlaneIndex p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayMode" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
 
 instance {-# OVERLAPPING #-}
          HasField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
@@ -324,39 +239,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
 
-instance CanReadField "planeIndex" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPlaneIndex
-
-        {-# INLINE readField #-}
-        readField = readVkPlaneIndex
-
-instance CanWriteField "planeIndex" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPlaneIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkPlaneStackIndex VkDisplaySurfaceCreateInfoKHR where
-        type VkPlaneStackIndexMType VkDisplaySurfaceCreateInfoKHR = Word32
-
-        {-# NOINLINE vkPlaneStackIndex #-}
-        vkPlaneStackIndex x
+         CanReadField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex})
-
-        {-# INLINE vkPlaneStackIndexByteOffset #-}
-        vkPlaneStackIndexByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex})
 
-        {-# INLINE readVkPlaneStackIndex #-}
-        readVkPlaneStackIndex p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
 
-        {-# INLINE writeVkPlaneStackIndex #-}
-        writeVkPlaneStackIndex p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
@@ -376,42 +274,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
 
-instance CanReadField "planeStackIndex"
-           VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPlaneStackIndex
-
-        {-# INLINE readField #-}
-        readField = readVkPlaneStackIndex
-
-instance CanWriteField "planeStackIndex"
-           VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPlaneStackIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkTransform VkDisplaySurfaceCreateInfoKHR where
-        type VkTransformMType VkDisplaySurfaceCreateInfoKHR =
-             VkSurfaceTransformFlagBitsKHR
-
-        {-# NOINLINE vkTransform #-}
-        vkTransform x
+         CanReadField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, transform})
-
-        {-# INLINE vkTransformByteOffset #-}
-        vkTransformByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, transform}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex})
 
-        {-# INLINE readVkTransform #-}
-        readVkTransform p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, transform}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
 
-        {-# INLINE writeVkTransform #-}
-        writeVkTransform p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, transform}
+instance {-# OVERLAPPING #-}
+         CanWriteField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "transform" VkDisplaySurfaceCreateInfoKHR where
@@ -431,40 +309,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, transform}
 
-instance CanReadField "transform" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkTransform
-
-        {-# INLINE readField #-}
-        readField = readVkTransform
-
-instance CanWriteField "transform" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTransform
-
 instance {-# OVERLAPPING #-}
-         HasVkGlobalAlpha VkDisplaySurfaceCreateInfoKHR where
-        type VkGlobalAlphaMType VkDisplaySurfaceCreateInfoKHR =
-             #{type float}
-
-        {-# NOINLINE vkGlobalAlpha #-}
-        vkGlobalAlpha x
+         CanReadField "transform" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha})
-
-        {-# INLINE vkGlobalAlphaByteOffset #-}
-        vkGlobalAlphaByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, transform})
 
-        {-# INLINE readVkGlobalAlpha #-}
-        readVkGlobalAlpha p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, transform}
 
-        {-# INLINE writeVkGlobalAlpha #-}
-        writeVkGlobalAlpha p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
+instance {-# OVERLAPPING #-}
+         CanWriteField "transform" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, transform}
 
 instance {-# OVERLAPPING #-}
          HasField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
@@ -484,40 +344,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
 
-instance CanReadField "globalAlpha" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkGlobalAlpha
-
-        {-# INLINE readField #-}
-        readField = readVkGlobalAlpha
-
-instance CanWriteField "globalAlpha" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkGlobalAlpha
-
 instance {-# OVERLAPPING #-}
-         HasVkAlphaMode VkDisplaySurfaceCreateInfoKHR where
-        type VkAlphaModeMType VkDisplaySurfaceCreateInfoKHR =
-             VkDisplayPlaneAlphaFlagBitsKHR
-
-        {-# NOINLINE vkAlphaMode #-}
-        vkAlphaMode x
+         CanReadField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode})
-
-        {-# INLINE vkAlphaModeByteOffset #-}
-        vkAlphaModeByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha})
 
-        {-# INLINE readVkAlphaMode #-}
-        readVkAlphaMode p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
 
-        {-# INLINE writeVkAlphaMode #-}
-        writeVkAlphaMode p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
+instance {-# OVERLAPPING #-}
+         CanWriteField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
 
 instance {-# OVERLAPPING #-}
          HasField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
@@ -537,39 +379,22 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
 
-instance CanReadField "alphaMode" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkAlphaMode
-
-        {-# INLINE readField #-}
-        readField = readVkAlphaMode
-
-instance CanWriteField "alphaMode" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkAlphaMode
-
 instance {-# OVERLAPPING #-}
-         HasVkImageExtent VkDisplaySurfaceCreateInfoKHR where
-        type VkImageExtentMType VkDisplaySurfaceCreateInfoKHR = VkExtent2D
-
-        {-# NOINLINE vkImageExtent #-}
-        vkImageExtent x
+         CanReadField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent})
-
-        {-# INLINE vkImageExtentByteOffset #-}
-        vkImageExtentByteOffset ~_
-          = #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode})
 
-        {-# INLINE readVkImageExtent #-}
-        readVkImageExtent p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
 
-        {-# INLINE writeVkImageExtent #-}
-        writeVkImageExtent p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
 
 instance {-# OVERLAPPING #-}
          HasField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
@@ -589,49 +414,56 @@
         fieldOffset
           = #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
 
-instance CanReadField "imageExtent" VkDisplaySurfaceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImageExtent
+instance {-# OVERLAPPING #-}
+         CanReadField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent})
 
         {-# INLINE readField #-}
-        readField = readVkImageExtent
+        readField p
+          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
 
-instance CanWriteField "imageExtent" VkDisplaySurfaceCreateInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkImageExtent
+        writeField p
+          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
 
 instance Show VkDisplaySurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkDisplaySurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDisplayMode = " .
-                                  showsPrec d (vkDisplayMode x) .
+                                showString "displayMode = " .
+                                  showsPrec d (getField @"displayMode" x) .
                                     showString ", " .
-                                      showString "vkPlaneIndex = " .
-                                        showsPrec d (vkPlaneIndex x) .
+                                      showString "planeIndex = " .
+                                        showsPrec d (getField @"planeIndex" x) .
                                           showString ", " .
-                                            showString "vkPlaneStackIndex = " .
-                                              showsPrec d (vkPlaneStackIndex x) .
+                                            showString "planeStackIndex = " .
+                                              showsPrec d (getField @"planeStackIndex" x) .
                                                 showString ", " .
-                                                  showString "vkTransform = " .
-                                                    showsPrec d (vkTransform x) .
+                                                  showString "transform = " .
+                                                    showsPrec d (getField @"transform" x) .
                                                       showString ", " .
-                                                        showString "vkGlobalAlpha = " .
-                                                          showsPrec d (vkGlobalAlpha x) .
+                                                        showString "globalAlpha = " .
+                                                          showsPrec d (getField @"globalAlpha" x) .
                                                             showString ", " .
-                                                              showString "vkAlphaMode = " .
-                                                                showsPrec d (vkAlphaMode x) .
+                                                              showString "alphaMode = " .
+                                                                showsPrec d
+                                                                  (getField @"alphaMode" x)
+                                                                  .
                                                                   showString ", " .
-                                                                    showString "vkImageExtent = " .
-                                                                      showsPrec d (vkImageExtent x)
+                                                                    showString "imageExtent = " .
+                                                                      showsPrec d
+                                                                        (getField @"imageExtent" x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndexedIndirectCommand.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndexedIndirectCommand.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndexedIndirectCommand.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndexedIndirectCommand.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDrawIndexedIndirectCommand
        (VkDrawIndexedIndirectCommand(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDrawIndexedIndirectCommand {
 --   >     uint32_t               indexCount;
@@ -23,7 +23,7 @@
 --   >     uint32_t               firstInstance;
 --   > } VkDrawIndexedIndirectCommand;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDrawIndexedIndirectCommand.html VkDrawIndexedIndirectCommand registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDrawIndexedIndirectCommand.html VkDrawIndexedIndirectCommand registry at www.khronos.org>
 data VkDrawIndexedIndirectCommand = VkDrawIndexedIndirectCommand## Addr##
                                                                   ByteArray##
 
@@ -78,27 +78,6 @@
         type StructExtends VkDrawIndexedIndirectCommand = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkIndexCount VkDrawIndexedIndirectCommand where
-        type VkIndexCountMType VkDrawIndexedIndirectCommand = Word32
-
-        {-# NOINLINE vkIndexCount #-}
-        vkIndexCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, indexCount})
-
-        {-# INLINE vkIndexCountByteOffset #-}
-        vkIndexCountByteOffset ~_
-          = #{offset VkDrawIndexedIndirectCommand, indexCount}
-
-        {-# INLINE readVkIndexCount #-}
-        readVkIndexCount p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, indexCount}
-
-        {-# INLINE writeVkIndexCount #-}
-        writeVkIndexCount p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, indexCount}
-
-instance {-# OVERLAPPING #-}
          HasField "indexCount" VkDrawIndexedIndirectCommand where
         type FieldType "indexCount" VkDrawIndexedIndirectCommand = Word32
         type FieldOptional "indexCount" VkDrawIndexedIndirectCommand =
@@ -115,39 +94,22 @@
         fieldOffset
           = #{offset VkDrawIndexedIndirectCommand, indexCount}
 
-instance CanReadField "indexCount" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE getField #-}
-        getField = vkIndexCount
-
-        {-# INLINE readField #-}
-        readField = readVkIndexCount
-
-instance CanWriteField "indexCount" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkIndexCount
-
 instance {-# OVERLAPPING #-}
-         HasVkInstanceCount VkDrawIndexedIndirectCommand where
-        type VkInstanceCountMType VkDrawIndexedIndirectCommand = Word32
-
-        {-# NOINLINE vkInstanceCount #-}
-        vkInstanceCount x
+         CanReadField "indexCount" VkDrawIndexedIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, instanceCount})
-
-        {-# INLINE vkInstanceCountByteOffset #-}
-        vkInstanceCountByteOffset ~_
-          = #{offset VkDrawIndexedIndirectCommand, instanceCount}
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, indexCount})
 
-        {-# INLINE readVkInstanceCount #-}
-        readVkInstanceCount p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, instanceCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, indexCount}
 
-        {-# INLINE writeVkInstanceCount #-}
-        writeVkInstanceCount p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, instanceCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "indexCount" VkDrawIndexedIndirectCommand where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, indexCount}
 
 instance {-# OVERLAPPING #-}
          HasField "instanceCount" VkDrawIndexedIndirectCommand where
@@ -167,39 +129,22 @@
         fieldOffset
           = #{offset VkDrawIndexedIndirectCommand, instanceCount}
 
-instance CanReadField "instanceCount" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE getField #-}
-        getField = vkInstanceCount
-
-        {-# INLINE readField #-}
-        readField = readVkInstanceCount
-
-instance CanWriteField "instanceCount" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkInstanceCount
-
 instance {-# OVERLAPPING #-}
-         HasVkFirstIndex VkDrawIndexedIndirectCommand where
-        type VkFirstIndexMType VkDrawIndexedIndirectCommand = Word32
-
-        {-# NOINLINE vkFirstIndex #-}
-        vkFirstIndex x
+         CanReadField "instanceCount" VkDrawIndexedIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, firstIndex})
-
-        {-# INLINE vkFirstIndexByteOffset #-}
-        vkFirstIndexByteOffset ~_
-          = #{offset VkDrawIndexedIndirectCommand, firstIndex}
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, instanceCount})
 
-        {-# INLINE readVkFirstIndex #-}
-        readVkFirstIndex p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, firstIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, instanceCount}
 
-        {-# INLINE writeVkFirstIndex #-}
-        writeVkFirstIndex p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, firstIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "instanceCount" VkDrawIndexedIndirectCommand where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, instanceCount}
 
 instance {-# OVERLAPPING #-}
          HasField "firstIndex" VkDrawIndexedIndirectCommand where
@@ -218,39 +163,22 @@
         fieldOffset
           = #{offset VkDrawIndexedIndirectCommand, firstIndex}
 
-instance CanReadField "firstIndex" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE getField #-}
-        getField = vkFirstIndex
-
-        {-# INLINE readField #-}
-        readField = readVkFirstIndex
-
-instance CanWriteField "firstIndex" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFirstIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkVertexOffset VkDrawIndexedIndirectCommand where
-        type VkVertexOffsetMType VkDrawIndexedIndirectCommand = Int32
-
-        {-# NOINLINE vkVertexOffset #-}
-        vkVertexOffset x
+         CanReadField "firstIndex" VkDrawIndexedIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, vertexOffset})
-
-        {-# INLINE vkVertexOffsetByteOffset #-}
-        vkVertexOffsetByteOffset ~_
-          = #{offset VkDrawIndexedIndirectCommand, vertexOffset}
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, firstIndex})
 
-        {-# INLINE readVkVertexOffset #-}
-        readVkVertexOffset p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, vertexOffset}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, firstIndex}
 
-        {-# INLINE writeVkVertexOffset #-}
-        writeVkVertexOffset p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, vertexOffset}
+instance {-# OVERLAPPING #-}
+         CanWriteField "firstIndex" VkDrawIndexedIndirectCommand where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, firstIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "vertexOffset" VkDrawIndexedIndirectCommand where
@@ -269,39 +197,22 @@
         fieldOffset
           = #{offset VkDrawIndexedIndirectCommand, vertexOffset}
 
-instance CanReadField "vertexOffset" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE getField #-}
-        getField = vkVertexOffset
-
-        {-# INLINE readField #-}
-        readField = readVkVertexOffset
-
-instance CanWriteField "vertexOffset" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVertexOffset
-
 instance {-# OVERLAPPING #-}
-         HasVkFirstInstance VkDrawIndexedIndirectCommand where
-        type VkFirstInstanceMType VkDrawIndexedIndirectCommand = Word32
-
-        {-# NOINLINE vkFirstInstance #-}
-        vkFirstInstance x
+         CanReadField "vertexOffset" VkDrawIndexedIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, firstInstance})
-
-        {-# INLINE vkFirstInstanceByteOffset #-}
-        vkFirstInstanceByteOffset ~_
-          = #{offset VkDrawIndexedIndirectCommand, firstInstance}
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, vertexOffset})
 
-        {-# INLINE readVkFirstInstance #-}
-        readVkFirstInstance p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, firstInstance}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, vertexOffset}
 
-        {-# INLINE writeVkFirstInstance #-}
-        writeVkFirstInstance p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, firstInstance}
+instance {-# OVERLAPPING #-}
+         CanWriteField "vertexOffset" VkDrawIndexedIndirectCommand where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, vertexOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "firstInstance" VkDrawIndexedIndirectCommand where
@@ -321,33 +232,37 @@
         fieldOffset
           = #{offset VkDrawIndexedIndirectCommand, firstInstance}
 
-instance CanReadField "firstInstance" VkDrawIndexedIndirectCommand
-         where
-        {-# INLINE getField #-}
-        getField = vkFirstInstance
+instance {-# OVERLAPPING #-}
+         CanReadField "firstInstance" VkDrawIndexedIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, firstInstance})
 
         {-# INLINE readField #-}
-        readField = readVkFirstInstance
+        readField p
+          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, firstInstance}
 
-instance CanWriteField "firstInstance" VkDrawIndexedIndirectCommand
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "firstInstance" VkDrawIndexedIndirectCommand where
         {-# INLINE writeField #-}
-        writeField = writeVkFirstInstance
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, firstInstance}
 
 instance Show VkDrawIndexedIndirectCommand where
         showsPrec d x
           = showString "VkDrawIndexedIndirectCommand {" .
-              showString "vkIndexCount = " .
-                showsPrec d (vkIndexCount x) .
+              showString "indexCount = " .
+                showsPrec d (getField @"indexCount" x) .
                   showString ", " .
-                    showString "vkInstanceCount = " .
-                      showsPrec d (vkInstanceCount x) .
+                    showString "instanceCount = " .
+                      showsPrec d (getField @"instanceCount" x) .
                         showString ", " .
-                          showString "vkFirstIndex = " .
-                            showsPrec d (vkFirstIndex x) .
+                          showString "firstIndex = " .
+                            showsPrec d (getField @"firstIndex" x) .
                               showString ", " .
-                                showString "vkVertexOffset = " .
-                                  showsPrec d (vkVertexOffset x) .
+                                showString "vertexOffset = " .
+                                  showsPrec d (getField @"vertexOffset" x) .
                                     showString ", " .
-                                      showString "vkFirstInstance = " .
-                                        showsPrec d (vkFirstInstance x) . showChar '}'
+                                      showString "firstInstance = " .
+                                        showsPrec d (getField @"firstInstance" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndirectCommand.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndirectCommand.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndirectCommand.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkDrawIndirectCommand.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkDrawIndirectCommand
        (VkDrawIndirectCommand(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDrawIndirectCommand {
 --   >     uint32_t               vertexCount;
@@ -22,7 +22,7 @@
 --   >     uint32_t               firstInstance;
 --   > } VkDrawIndirectCommand;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkDrawIndirectCommand.html VkDrawIndirectCommand registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDrawIndirectCommand.html VkDrawIndirectCommand registry at www.khronos.org>
 data VkDrawIndirectCommand = VkDrawIndirectCommand## Addr##
                                                     ByteArray##
 
@@ -71,27 +71,6 @@
         type ReturnedOnly VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
         type StructExtends VkDrawIndirectCommand = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkVertexCount VkDrawIndirectCommand
-         where
-        type VkVertexCountMType VkDrawIndirectCommand = Word32
-
-        {-# NOINLINE vkVertexCount #-}
-        vkVertexCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, vertexCount})
-
-        {-# INLINE vkVertexCountByteOffset #-}
-        vkVertexCountByteOffset ~_
-          = #{offset VkDrawIndirectCommand, vertexCount}
-
-        {-# INLINE readVkVertexCount #-}
-        readVkVertexCount p
-          = peekByteOff p #{offset VkDrawIndirectCommand, vertexCount}
-
-        {-# INLINE writeVkVertexCount #-}
-        writeVkVertexCount p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, vertexCount}
-
 instance {-# OVERLAPPING #-}
          HasField "vertexCount" VkDrawIndirectCommand where
         type FieldType "vertexCount" VkDrawIndirectCommand = Word32
@@ -107,37 +86,22 @@
         fieldOffset
           = #{offset VkDrawIndirectCommand, vertexCount}
 
-instance CanReadField "vertexCount" VkDrawIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkVertexCount
-
-        {-# INLINE readField #-}
-        readField = readVkVertexCount
-
-instance CanWriteField "vertexCount" VkDrawIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField = writeVkVertexCount
-
 instance {-# OVERLAPPING #-}
-         HasVkInstanceCount VkDrawIndirectCommand where
-        type VkInstanceCountMType VkDrawIndirectCommand = Word32
-
-        {-# NOINLINE vkInstanceCount #-}
-        vkInstanceCount x
+         CanReadField "vertexCount" VkDrawIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, instanceCount})
-
-        {-# INLINE vkInstanceCountByteOffset #-}
-        vkInstanceCountByteOffset ~_
-          = #{offset VkDrawIndirectCommand, instanceCount}
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, vertexCount})
 
-        {-# INLINE readVkInstanceCount #-}
-        readVkInstanceCount p
-          = peekByteOff p #{offset VkDrawIndirectCommand, instanceCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDrawIndirectCommand, vertexCount}
 
-        {-# INLINE writeVkInstanceCount #-}
-        writeVkInstanceCount p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, instanceCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "vertexCount" VkDrawIndirectCommand where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndirectCommand, vertexCount}
 
 instance {-# OVERLAPPING #-}
          HasField "instanceCount" VkDrawIndirectCommand where
@@ -154,37 +118,22 @@
         fieldOffset
           = #{offset VkDrawIndirectCommand, instanceCount}
 
-instance CanReadField "instanceCount" VkDrawIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkInstanceCount
+instance {-# OVERLAPPING #-}
+         CanReadField "instanceCount" VkDrawIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, instanceCount})
 
         {-# INLINE readField #-}
-        readField = readVkInstanceCount
+        readField p
+          = peekByteOff p #{offset VkDrawIndirectCommand, instanceCount}
 
-instance CanWriteField "instanceCount" VkDrawIndirectCommand where
+instance {-# OVERLAPPING #-}
+         CanWriteField "instanceCount" VkDrawIndirectCommand where
         {-# INLINE writeField #-}
-        writeField = writeVkInstanceCount
-
-instance {-# OVERLAPPING #-} HasVkFirstVertex VkDrawIndirectCommand
-         where
-        type VkFirstVertexMType VkDrawIndirectCommand = Word32
-
-        {-# NOINLINE vkFirstVertex #-}
-        vkFirstVertex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, firstVertex})
-
-        {-# INLINE vkFirstVertexByteOffset #-}
-        vkFirstVertexByteOffset ~_
-          = #{offset VkDrawIndirectCommand, firstVertex}
-
-        {-# INLINE readVkFirstVertex #-}
-        readVkFirstVertex p
-          = peekByteOff p #{offset VkDrawIndirectCommand, firstVertex}
-
-        {-# INLINE writeVkFirstVertex #-}
-        writeVkFirstVertex p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, firstVertex}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndirectCommand, instanceCount}
 
 instance {-# OVERLAPPING #-}
          HasField "firstVertex" VkDrawIndirectCommand where
@@ -201,37 +150,22 @@
         fieldOffset
           = #{offset VkDrawIndirectCommand, firstVertex}
 
-instance CanReadField "firstVertex" VkDrawIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkFirstVertex
-
-        {-# INLINE readField #-}
-        readField = readVkFirstVertex
-
-instance CanWriteField "firstVertex" VkDrawIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField = writeVkFirstVertex
-
 instance {-# OVERLAPPING #-}
-         HasVkFirstInstance VkDrawIndirectCommand where
-        type VkFirstInstanceMType VkDrawIndirectCommand = Word32
-
-        {-# NOINLINE vkFirstInstance #-}
-        vkFirstInstance x
+         CanReadField "firstVertex" VkDrawIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, firstInstance})
-
-        {-# INLINE vkFirstInstanceByteOffset #-}
-        vkFirstInstanceByteOffset ~_
-          = #{offset VkDrawIndirectCommand, firstInstance}
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, firstVertex})
 
-        {-# INLINE readVkFirstInstance #-}
-        readVkFirstInstance p
-          = peekByteOff p #{offset VkDrawIndirectCommand, firstInstance}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkDrawIndirectCommand, firstVertex}
 
-        {-# INLINE writeVkFirstInstance #-}
-        writeVkFirstInstance p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, firstInstance}
+instance {-# OVERLAPPING #-}
+         CanWriteField "firstVertex" VkDrawIndirectCommand where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndirectCommand, firstVertex}
 
 instance {-# OVERLAPPING #-}
          HasField "firstInstance" VkDrawIndirectCommand where
@@ -248,28 +182,34 @@
         fieldOffset
           = #{offset VkDrawIndirectCommand, firstInstance}
 
-instance CanReadField "firstInstance" VkDrawIndirectCommand where
-        {-# INLINE getField #-}
-        getField = vkFirstInstance
+instance {-# OVERLAPPING #-}
+         CanReadField "firstInstance" VkDrawIndirectCommand where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, firstInstance})
 
         {-# INLINE readField #-}
-        readField = readVkFirstInstance
+        readField p
+          = peekByteOff p #{offset VkDrawIndirectCommand, firstInstance}
 
-instance CanWriteField "firstInstance" VkDrawIndirectCommand where
+instance {-# OVERLAPPING #-}
+         CanWriteField "firstInstance" VkDrawIndirectCommand where
         {-# INLINE writeField #-}
-        writeField = writeVkFirstInstance
+        writeField p
+          = pokeByteOff p #{offset VkDrawIndirectCommand, firstInstance}
 
 instance Show VkDrawIndirectCommand where
         showsPrec d x
           = showString "VkDrawIndirectCommand {" .
-              showString "vkVertexCount = " .
-                showsPrec d (vkVertexCount x) .
+              showString "vertexCount = " .
+                showsPrec d (getField @"vertexCount" x) .
                   showString ", " .
-                    showString "vkInstanceCount = " .
-                      showsPrec d (vkInstanceCount x) .
+                    showString "instanceCount = " .
+                      showsPrec d (getField @"instanceCount" x) .
                         showString ", " .
-                          showString "vkFirstVertex = " .
-                            showsPrec d (vkFirstVertex x) .
+                          showString "firstVertex = " .
+                            showsPrec d (getField @"firstVertex" x) .
                               showString ", " .
-                                showString "vkFirstInstance = " .
-                                  showsPrec d (vkFirstInstance x) . showChar '}'
+                                showString "firstInstance = " .
+                                  showsPrec d (getField @"firstInstance" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkEventCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkEventCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkEventCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkEventCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkEventCreateInfo
        (VkEventCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkEventCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkEventCreateInfo {
@@ -23,7 +23,7 @@
 --   >     VkEventCreateFlags     flags;
 --   > } VkEventCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkEventCreateInfo.html VkEventCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkEventCreateInfo.html VkEventCreateInfo registry at www.khronos.org>
 data VkEventCreateInfo = VkEventCreateInfo## Addr## ByteArray##
 
 instance Eq VkEventCreateInfo where
@@ -70,26 +70,6 @@
         type ReturnedOnly VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkEventCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkEventCreateInfo where
-        type VkSTypeMType VkEventCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkEventCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkEventCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkEventCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkEventCreateInfo
          where
         type FieldType "sType" VkEventCreateInfo = VkStructureType
@@ -104,36 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkEventCreateInfo, sType}
 
-instance CanReadField "sType" VkEventCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkEventCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkEventCreateInfo, sType}
 
-instance CanWriteField "sType" VkEventCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkEventCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkEventCreateInfo where
-        type VkPNextMType VkEventCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkEventCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkEventCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkEventCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkEventCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkEventCreateInfo
          where
@@ -149,36 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkEventCreateInfo, pNext}
 
-instance CanReadField "pNext" VkEventCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkEventCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkEventCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkEventCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkEventCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkEventCreateInfo where
-        type VkFlagsMType VkEventCreateInfo = VkEventCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkEventCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkEventCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkEventCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkEventCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkEventCreateInfo
          where
@@ -194,24 +146,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkEventCreateInfo, flags}
 
-instance CanReadField "flags" VkEventCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-} CanReadField "flags" VkEventCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkEventCreateInfo, flags}
 
-instance CanWriteField "flags" VkEventCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkEventCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        writeField p
+          = pokeByteOff p #{offset VkEventCreateInfo, flags}
 
 instance Show VkEventCreateInfo where
         showsPrec d x
           = showString "VkEventCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " . showsPrec d (vkFlags x) . showChar '}'
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfo.hsc
@@ -0,0 +1,181 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfo
+       (VkExportFenceCreateInfo(..)) where
+import           Foreign.Storable                                          (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo            (VkFenceCreateInfo)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExportFenceCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalFenceHandleTypeFlags handleTypes;
+--   > } VkExportFenceCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportFenceCreateInfo.html VkExportFenceCreateInfo registry at www.khronos.org>
+data VkExportFenceCreateInfo = VkExportFenceCreateInfo## Addr##
+                                                        ByteArray##
+
+instance Eq VkExportFenceCreateInfo where
+        (VkExportFenceCreateInfo## a _) == x@(VkExportFenceCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExportFenceCreateInfo where
+        (VkExportFenceCreateInfo## a _) `compare`
+          x@(VkExportFenceCreateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExportFenceCreateInfo where
+        unsafeAddr (VkExportFenceCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExportFenceCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExportFenceCreateInfo## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfoKHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfoKHR
+       (VkExportFenceCreateInfo(..), VkExportFenceCreateInfoKHR) where
+import           Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfo (VkExportFenceCreateInfo (..))
+
+-- | Alias for `VkExportFenceCreateInfo`
+type VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceCreateInfoKHR.hsc
+++ /dev/null
@@ -1,235 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfoKHR
-       (VkExportFenceCreateInfoKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo               (VkFenceCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
-
--- | > typedef struct VkExportFenceCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalFenceHandleTypeFlagsKHR handleTypes;
---   > } VkExportFenceCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportFenceCreateInfoKHR.html VkExportFenceCreateInfoKHR registry at www.khronos.org>
-data VkExportFenceCreateInfoKHR = VkExportFenceCreateInfoKHR## Addr##
-                                                              ByteArray##
-
-instance Eq VkExportFenceCreateInfoKHR where
-        (VkExportFenceCreateInfoKHR## a _) ==
-          x@(VkExportFenceCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportFenceCreateInfoKHR where
-        (VkExportFenceCreateInfoKHR## a _) `compare`
-          x@(VkExportFenceCreateInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportFenceCreateInfoKHR where
-        sizeOf ~_ = #{size VkExportFenceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExportFenceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExportFenceCreateInfoKHR where
-        unsafeAddr (VkExportFenceCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExportFenceCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExportFenceCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExportFenceCreateInfoKHR where
-        type StructFields VkExportFenceCreateInfoKHR =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportFenceCreateInfoKHR =
-             '[VkFenceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkExportFenceCreateInfoKHR
-         where
-        type VkSTypeMType VkExportFenceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportFenceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportFenceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportFenceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportFenceCreateInfoKHR where
-        type FieldType "sType" VkExportFenceCreateInfoKHR = VkStructureType
-        type FieldOptional "sType" VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportFenceCreateInfoKHR =
-             #{offset VkExportFenceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceCreateInfoKHR, sType}
-
-instance CanReadField "sType" VkExportFenceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportFenceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkExportFenceCreateInfoKHR
-         where
-        type VkPNextMType VkExportFenceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportFenceCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportFenceCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportFenceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportFenceCreateInfoKHR where
-        type FieldType "pNext" VkExportFenceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportFenceCreateInfoKHR =
-             #{offset VkExportFenceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceCreateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkExportFenceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportFenceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExportFenceCreateInfoKHR where
-        type VkHandleTypesMType VkExportFenceCreateInfoKHR =
-             VkExternalFenceHandleTypeFlagsKHR
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceCreateInfoKHR, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExportFenceCreateInfoKHR, handleTypes}
-
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExportFenceCreateInfoKHR, handleTypes}
-
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExportFenceCreateInfoKHR, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportFenceCreateInfoKHR where
-        type FieldType "handleTypes" VkExportFenceCreateInfoKHR =
-             VkExternalFenceHandleTypeFlagsKHR
-        type FieldOptional "handleTypes" VkExportFenceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportFenceCreateInfoKHR =
-             #{offset VkExportFenceCreateInfoKHR, handleTypes}
-        type FieldIsArray "handleTypes" VkExportFenceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceCreateInfoKHR, handleTypes}
-
-instance CanReadField "handleTypes" VkExportFenceCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkHandleTypes
-
-instance CanWriteField "handleTypes" VkExportFenceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
-
-instance Show VkExportFenceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkExportFenceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportFenceWin32HandleInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExportFenceWin32HandleInfoKHR
        (VkExportFenceWin32HandleInfoKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
 import           Graphics.Vulkan.Types.Include                  (DWORD, LPCWSTR, SECURITY_ATTRIBUTES)
 import           Graphics.Vulkan.Types.Struct.VkFenceCreateInfo (VkFenceCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExportFenceWin32HandleInfoKHR {
@@ -26,7 +26,7 @@
 --   >     LPCWSTR                                    name;
 --   > } VkExportFenceWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportFenceWin32HandleInfoKHR.html VkExportFenceWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportFenceWin32HandleInfoKHR.html VkExportFenceWin32HandleInfoKHR registry at www.khronos.org>
 data VkExportFenceWin32HandleInfoKHR = VkExportFenceWin32HandleInfoKHR## Addr##
                                                                         ByteArray##
 
@@ -81,27 +81,6 @@
              '[VkFenceCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkExportFenceWin32HandleInfoKHR where
-        type VkSTypeMType VkExportFenceWin32HandleInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportFenceWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkExportFenceWin32HandleInfoKHR where
         type FieldType "sType" VkExportFenceWin32HandleInfoKHR =
              VkStructureType
@@ -117,38 +96,22 @@
         fieldOffset
           = #{offset VkExportFenceWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportFenceWin32HandleInfoKHR where
-        type VkPNextMType VkExportFenceWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkExportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportFenceWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkExportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkExportFenceWin32HandleInfoKHR where
@@ -165,39 +128,22 @@
         fieldOffset
           = #{offset VkExportFenceWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkPAttributes VkExportFenceWin32HandleInfoKHR where
-        type VkPAttributesMType VkExportFenceWin32HandleInfoKHR =
-             Ptr SECURITY_ATTRIBUTES
-
-        {-# NOINLINE vkPAttributes #-}
-        vkPAttributes x
+         CanReadField "pNext" VkExportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, pAttributes})
-
-        {-# INLINE vkPAttributesByteOffset #-}
-        vkPAttributesByteOffset ~_
-          = #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
+              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkPAttributes #-}
-        readVkPAttributes p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkPAttributes #-}
-        writeVkPAttributes p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkExportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttributes" VkExportFenceWin32HandleInfoKHR where
@@ -217,40 +163,22 @@
         fieldOffset
           = #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
 
-instance CanReadField "pAttributes" VkExportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPAttributes
-
-        {-# INLINE readField #-}
-        readField = readVkPAttributes
-
-instance CanWriteField "pAttributes"
-           VkExportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAttributes
-
 instance {-# OVERLAPPING #-}
-         HasVkDwAccess VkExportFenceWin32HandleInfoKHR where
-        type VkDwAccessMType VkExportFenceWin32HandleInfoKHR = DWORD
-
-        {-# NOINLINE vkDwAccess #-}
-        vkDwAccess x
+         CanReadField "pAttributes" VkExportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, dwAccess})
-
-        {-# INLINE vkDwAccessByteOffset #-}
-        vkDwAccessByteOffset ~_
-          = #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
+              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, pAttributes})
 
-        {-# INLINE readVkDwAccess #-}
-        readVkDwAccess p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
 
-        {-# INLINE writeVkDwAccess #-}
-        writeVkDwAccess p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttributes" VkExportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
 
 instance {-# OVERLAPPING #-}
          HasField "dwAccess" VkExportFenceWin32HandleInfoKHR where
@@ -269,39 +197,22 @@
         fieldOffset
           = #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
 
-instance CanReadField "dwAccess" VkExportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDwAccess
-
-        {-# INLINE readField #-}
-        readField = readVkDwAccess
-
-instance CanWriteField "dwAccess" VkExportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDwAccess
-
 instance {-# OVERLAPPING #-}
-         HasVkName VkExportFenceWin32HandleInfoKHR where
-        type VkNameMType VkExportFenceWin32HandleInfoKHR = LPCWSTR
-
-        {-# NOINLINE vkName #-}
-        vkName x
+         CanReadField "dwAccess" VkExportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, name})
-
-        {-# INLINE vkNameByteOffset #-}
-        vkNameByteOffset ~_
-          = #{offset VkExportFenceWin32HandleInfoKHR, name}
+              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, dwAccess})
 
-        {-# INLINE readVkName #-}
-        readVkName p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, name}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
 
-        {-# INLINE writeVkName #-}
-        writeVkName p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, name}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dwAccess" VkExportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
 
 instance {-# OVERLAPPING #-}
          HasField "name" VkExportFenceWin32HandleInfoKHR where
@@ -318,30 +229,37 @@
         fieldOffset
           = #{offset VkExportFenceWin32HandleInfoKHR, name}
 
-instance CanReadField "name" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkName
+instance {-# OVERLAPPING #-}
+         CanReadField "name" VkExportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, name})
 
         {-# INLINE readField #-}
-        readField = readVkName
+        readField p
+          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, name}
 
-instance CanWriteField "name" VkExportFenceWin32HandleInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "name" VkExportFenceWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkName
+        writeField p
+          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, name}
 
 instance Show VkExportFenceWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkExportFenceWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPAttributes = " .
-                            showsPrec d (vkPAttributes x) .
+                          showString "pAttributes = " .
+                            showsPrec d (getField @"pAttributes" x) .
                               showString ", " .
-                                showString "vkDwAccess = " .
-                                  showsPrec d (vkDwAccess x) .
+                                showString "dwAccess = " .
+                                  showsPrec d (getField @"dwAccess" x) .
                                     showString ", " .
-                                      showString "vkName = " . showsPrec d (vkName x) . showChar '}'
+                                      showString "name = " .
+                                        showsPrec d (getField @"name" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfo.hsc
@@ -0,0 +1,187 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfo
+       (VkExportMemoryAllocateInfo(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo          (VkMemoryAllocateInfo)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExportMemoryAllocateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlags handleTypes;
+--   > } VkExportMemoryAllocateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportMemoryAllocateInfo.html VkExportMemoryAllocateInfo registry at www.khronos.org>
+data VkExportMemoryAllocateInfo = VkExportMemoryAllocateInfo## Addr##
+                                                              ByteArray##
+
+instance Eq VkExportMemoryAllocateInfo where
+        (VkExportMemoryAllocateInfo## a _) ==
+          x@(VkExportMemoryAllocateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExportMemoryAllocateInfo where
+        (VkExportMemoryAllocateInfo## a _) `compare`
+          x@(VkExportMemoryAllocateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExportMemoryAllocateInfo where
+        unsafeAddr (VkExportMemoryAllocateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExportMemoryAllocateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExportMemoryAllocateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoKHR
+       (VkExportMemoryAllocateInfo(..), VkExportMemoryAllocateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfo (VkExportMemoryAllocateInfo (..))
+
+-- | Alias for `VkExportMemoryAllocateInfo`
+type VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoKHR.hsc
+++ /dev/null
@@ -1,239 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoKHR
-       (VkExportMemoryAllocateInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo             (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkExportMemoryAllocateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagsKHR handleTypes;
---   > } VkExportMemoryAllocateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportMemoryAllocateInfoKHR.html VkExportMemoryAllocateInfoKHR registry at www.khronos.org>
-data VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfoKHR## Addr##
-                                                                    ByteArray##
-
-instance Eq VkExportMemoryAllocateInfoKHR where
-        (VkExportMemoryAllocateInfoKHR## a _) ==
-          x@(VkExportMemoryAllocateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportMemoryAllocateInfoKHR where
-        (VkExportMemoryAllocateInfoKHR## a _) `compare`
-          x@(VkExportMemoryAllocateInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportMemoryAllocateInfoKHR where
-        sizeOf ~_ = #{size VkExportMemoryAllocateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportMemoryAllocateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExportMemoryAllocateInfoKHR where
-        unsafeAddr (VkExportMemoryAllocateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExportMemoryAllocateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExportMemoryAllocateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExportMemoryAllocateInfoKHR where
-        type StructFields VkExportMemoryAllocateInfoKHR =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportMemoryAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportMemoryAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportMemoryAllocateInfoKHR =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExportMemoryAllocateInfoKHR where
-        type VkSTypeMType VkExportMemoryAllocateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportMemoryAllocateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportMemoryAllocateInfoKHR where
-        type FieldType "sType" VkExportMemoryAllocateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExportMemoryAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportMemoryAllocateInfoKHR =
-             #{offset VkExportMemoryAllocateInfoKHR, sType}
-        type FieldIsArray "sType" VkExportMemoryAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfoKHR, sType}
-
-instance CanReadField "sType" VkExportMemoryAllocateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportMemoryAllocateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportMemoryAllocateInfoKHR where
-        type VkPNextMType VkExportMemoryAllocateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportMemoryAllocateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportMemoryAllocateInfoKHR where
-        type FieldType "pNext" VkExportMemoryAllocateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkExportMemoryAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportMemoryAllocateInfoKHR =
-             #{offset VkExportMemoryAllocateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExportMemoryAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkExportMemoryAllocateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportMemoryAllocateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExportMemoryAllocateInfoKHR where
-        type VkHandleTypesMType VkExportMemoryAllocateInfoKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoKHR, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExportMemoryAllocateInfoKHR, handleTypes}
-
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoKHR, handleTypes}
-
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoKHR, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportMemoryAllocateInfoKHR where
-        type FieldType "handleTypes" VkExportMemoryAllocateInfoKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-        type FieldOptional "handleTypes" VkExportMemoryAllocateInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportMemoryAllocateInfoKHR =
-             #{offset VkExportMemoryAllocateInfoKHR, handleTypes}
-        type FieldIsArray "handleTypes" VkExportMemoryAllocateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfoKHR, handleTypes}
-
-instance CanReadField "handleTypes" VkExportMemoryAllocateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkHandleTypes
-
-instance CanWriteField "handleTypes" VkExportMemoryAllocateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
-
-instance Show VkExportMemoryAllocateInfoKHR where
-        showsPrec d x
-          = showString "VkExportMemoryAllocateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryAllocateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoNV
        (VkExportMemoryAllocateInfoNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsNV (VkExternalMemoryHandleTypeFlagsNV)
 import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo            (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExportMemoryAllocateInfoNV {
@@ -24,7 +24,7 @@
 --   >     VkExternalMemoryHandleTypeFlagsNV handleTypes;
 --   > } VkExportMemoryAllocateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportMemoryAllocateInfoNV.html VkExportMemoryAllocateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportMemoryAllocateInfoNV.html VkExportMemoryAllocateInfoNV registry at www.khronos.org>
 data VkExportMemoryAllocateInfoNV = VkExportMemoryAllocateInfoNV## Addr##
                                                                   ByteArray##
 
@@ -79,27 +79,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkExportMemoryAllocateInfoNV where
-        type VkSTypeMType VkExportMemoryAllocateInfoNV = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportMemoryAllocateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkExportMemoryAllocateInfoNV where
         type FieldType "sType" VkExportMemoryAllocateInfoNV =
              VkStructureType
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkExportMemoryAllocateInfoNV, sType}
 
-instance CanReadField "sType" VkExportMemoryAllocateInfoNV where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportMemoryAllocateInfoNV where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportMemoryAllocateInfoNV where
-        type VkPNextMType VkExportMemoryAllocateInfoNV = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkExportMemoryAllocateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportMemoryAllocateInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkExportMemoryAllocateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkExportMemoryAllocateInfoNV where
@@ -162,38 +126,22 @@
         fieldOffset
           = #{offset VkExportMemoryAllocateInfoNV, pNext}
 
-instance CanReadField "pNext" VkExportMemoryAllocateInfoNV where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportMemoryAllocateInfoNV where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExportMemoryAllocateInfoNV where
-        type VkHandleTypesMType VkExportMemoryAllocateInfoNV =
-             VkExternalMemoryHandleTypeFlagsNV
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
+         CanReadField "pNext" VkExportMemoryAllocateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExportMemoryAllocateInfoNV, handleTypes}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, pNext})
 
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, handleTypes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, pNext}
 
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, handleTypes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkExportMemoryAllocateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "handleTypes" VkExportMemoryAllocateInfoNV where
@@ -213,27 +161,31 @@
         fieldOffset
           = #{offset VkExportMemoryAllocateInfoNV, handleTypes}
 
-instance CanReadField "handleTypes" VkExportMemoryAllocateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
+instance {-# OVERLAPPING #-}
+         CanReadField "handleTypes" VkExportMemoryAllocateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, handleTypes})
 
         {-# INLINE readField #-}
-        readField = readVkHandleTypes
+        readField p
+          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, handleTypes}
 
-instance CanWriteField "handleTypes" VkExportMemoryAllocateInfoNV
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleTypes" VkExportMemoryAllocateInfoNV where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, handleTypes}
 
 instance Show VkExportMemoryAllocateInfoNV where
         showsPrec d x
           = showString "VkExportMemoryAllocateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
+                          showString "handleTypes = " .
+                            showsPrec d (getField @"handleTypes" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExportMemoryWin32HandleInfoKHR
        (VkExportMemoryWin32HandleInfoKHR(..)) where
@@ -17,7 +18,6 @@
                                                                     LPCWSTR,
                                                                     SECURITY_ATTRIBUTES)
 import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExportMemoryWin32HandleInfoKHR {
@@ -28,7 +28,7 @@
 --   >     LPCWSTR                          name;
 --   > } VkExportMemoryWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportMemoryWin32HandleInfoKHR.html VkExportMemoryWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportMemoryWin32HandleInfoKHR.html VkExportMemoryWin32HandleInfoKHR registry at www.khronos.org>
 data VkExportMemoryWin32HandleInfoKHR = VkExportMemoryWin32HandleInfoKHR## Addr##
                                                                           ByteArray##
 
@@ -84,28 +84,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkExportMemoryWin32HandleInfoKHR where
-        type VkSTypeMType VkExportMemoryWin32HandleInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkExportMemoryWin32HandleInfoKHR where
         type FieldType "sType" VkExportMemoryWin32HandleInfoKHR =
              VkStructureType
@@ -122,39 +100,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportMemoryWin32HandleInfoKHR where
-        type VkPNextMType VkExportMemoryWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkExportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkExportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkExportMemoryWin32HandleInfoKHR where
@@ -172,40 +133,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkPAttributes VkExportMemoryWin32HandleInfoKHR where
-        type VkPAttributesMType VkExportMemoryWin32HandleInfoKHR =
-             Ptr SECURITY_ATTRIBUTES
-
-        {-# NOINLINE vkPAttributes #-}
-        vkPAttributes x
+         CanReadField "pNext" VkExportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes})
-
-        {-# INLINE vkPAttributesByteOffset #-}
-        vkPAttributesByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkPAttributes #-}
-        readVkPAttributes p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkPAttributes #-}
-        writeVkPAttributes p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkExportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttributes" VkExportMemoryWin32HandleInfoKHR where
@@ -225,41 +168,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
 
-instance CanReadField "pAttributes"
-           VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPAttributes
-
-        {-# INLINE readField #-}
-        readField = readVkPAttributes
-
-instance CanWriteField "pAttributes"
-           VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAttributes
-
 instance {-# OVERLAPPING #-}
-         HasVkDwAccess VkExportMemoryWin32HandleInfoKHR where
-        type VkDwAccessMType VkExportMemoryWin32HandleInfoKHR = DWORD
-
-        {-# NOINLINE vkDwAccess #-}
-        vkDwAccess x
+         CanReadField "pAttributes" VkExportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess})
-
-        {-# INLINE vkDwAccessByteOffset #-}
-        vkDwAccessByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes})
 
-        {-# INLINE readVkDwAccess #-}
-        readVkDwAccess p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
 
-        {-# INLINE writeVkDwAccess #-}
-        writeVkDwAccess p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttributes" VkExportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
 
 instance {-# OVERLAPPING #-}
          HasField "dwAccess" VkExportMemoryWin32HandleInfoKHR where
@@ -278,39 +202,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
 
-instance CanReadField "dwAccess" VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDwAccess
-
-        {-# INLINE readField #-}
-        readField = readVkDwAccess
-
-instance CanWriteField "dwAccess" VkExportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDwAccess
-
 instance {-# OVERLAPPING #-}
-         HasVkName VkExportMemoryWin32HandleInfoKHR where
-        type VkNameMType VkExportMemoryWin32HandleInfoKHR = LPCWSTR
-
-        {-# NOINLINE vkName #-}
-        vkName x
+         CanReadField "dwAccess" VkExportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, name})
-
-        {-# INLINE vkNameByteOffset #-}
-        vkNameByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoKHR, name}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess})
 
-        {-# INLINE readVkName #-}
-        readVkName p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, name}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
 
-        {-# INLINE writeVkName #-}
-        writeVkName p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, name}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dwAccess" VkExportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
 
 instance {-# OVERLAPPING #-}
          HasField "name" VkExportMemoryWin32HandleInfoKHR where
@@ -327,31 +234,37 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoKHR, name}
 
-instance CanReadField "name" VkExportMemoryWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkName
+instance {-# OVERLAPPING #-}
+         CanReadField "name" VkExportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, name})
 
         {-# INLINE readField #-}
-        readField = readVkName
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, name}
 
-instance CanWriteField "name" VkExportMemoryWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "name" VkExportMemoryWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkName
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, name}
 
 instance Show VkExportMemoryWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkExportMemoryWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPAttributes = " .
-                            showsPrec d (vkPAttributes x) .
+                          showString "pAttributes = " .
+                            showsPrec d (getField @"pAttributes" x) .
                               showString ", " .
-                                showString "vkDwAccess = " .
-                                  showsPrec d (vkDwAccess x) .
+                                showString "dwAccess = " .
+                                  showsPrec d (getField @"dwAccess" x) .
                                     showString ", " .
-                                      showString "vkName = " . showsPrec d (vkName x) . showChar '}'
+                                      showString "name = " .
+                                        showsPrec d (getField @"name" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportMemoryWin32HandleInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExportMemoryWin32HandleInfoNV
        (VkExportMemoryWin32HandleInfoNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
 import           Graphics.Vulkan.Types.Include                     (DWORD, SECURITY_ATTRIBUTES)
 import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExportMemoryWin32HandleInfoNV {
@@ -25,7 +25,7 @@
 --   >     DWORD                            dwAccess;
 --   > } VkExportMemoryWin32HandleInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportMemoryWin32HandleInfoNV.html VkExportMemoryWin32HandleInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportMemoryWin32HandleInfoNV.html VkExportMemoryWin32HandleInfoNV registry at www.khronos.org>
 data VkExportMemoryWin32HandleInfoNV = VkExportMemoryWin32HandleInfoNV## Addr##
                                                                         ByteArray##
 
@@ -80,27 +80,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkExportMemoryWin32HandleInfoNV where
-        type VkSTypeMType VkExportMemoryWin32HandleInfoNV = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkExportMemoryWin32HandleInfoNV where
         type FieldType "sType" VkExportMemoryWin32HandleInfoNV =
              VkStructureType
@@ -116,38 +95,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoNV, sType}
 
-instance CanReadField "sType" VkExportMemoryWin32HandleInfoNV where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportMemoryWin32HandleInfoNV where
-        type VkPNextMType VkExportMemoryWin32HandleInfoNV = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkExportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkExportMemoryWin32HandleInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkExportMemoryWin32HandleInfoNV where
@@ -164,39 +127,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoNV, pNext}
 
-instance CanReadField "pNext" VkExportMemoryWin32HandleInfoNV where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkPAttributes VkExportMemoryWin32HandleInfoNV where
-        type VkPAttributesMType VkExportMemoryWin32HandleInfoNV =
-             Ptr SECURITY_ATTRIBUTES
-
-        {-# NOINLINE vkPAttributes #-}
-        vkPAttributes x
+         CanReadField "pNext" VkExportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, pAttributes})
-
-        {-# INLINE vkPAttributesByteOffset #-}
-        vkPAttributesByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, pNext})
 
-        {-# INLINE readVkPAttributes #-}
-        readVkPAttributes p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pNext}
 
-        {-# INLINE writeVkPAttributes #-}
-        writeVkPAttributes p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkExportMemoryWin32HandleInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttributes" VkExportMemoryWin32HandleInfoNV where
@@ -216,40 +162,22 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
 
-instance CanReadField "pAttributes" VkExportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkPAttributes
-
-        {-# INLINE readField #-}
-        readField = readVkPAttributes
-
-instance CanWriteField "pAttributes"
-           VkExportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAttributes
-
 instance {-# OVERLAPPING #-}
-         HasVkDwAccess VkExportMemoryWin32HandleInfoNV where
-        type VkDwAccessMType VkExportMemoryWin32HandleInfoNV = DWORD
-
-        {-# NOINLINE vkDwAccess #-}
-        vkDwAccess x
+         CanReadField "pAttributes" VkExportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, dwAccess})
-
-        {-# INLINE vkDwAccessByteOffset #-}
-        vkDwAccessByteOffset ~_
-          = #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, pAttributes})
 
-        {-# INLINE readVkDwAccess #-}
-        readVkDwAccess p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
 
-        {-# INLINE writeVkDwAccess #-}
-        writeVkDwAccess p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttributes" VkExportMemoryWin32HandleInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
 
 instance {-# OVERLAPPING #-}
          HasField "dwAccess" VkExportMemoryWin32HandleInfoNV where
@@ -268,30 +196,34 @@
         fieldOffset
           = #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
 
-instance CanReadField "dwAccess" VkExportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkDwAccess
+instance {-# OVERLAPPING #-}
+         CanReadField "dwAccess" VkExportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, dwAccess})
 
         {-# INLINE readField #-}
-        readField = readVkDwAccess
+        readField p
+          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
 
-instance CanWriteField "dwAccess" VkExportMemoryWin32HandleInfoNV
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dwAccess" VkExportMemoryWin32HandleInfoNV where
         {-# INLINE writeField #-}
-        writeField = writeVkDwAccess
+        writeField p
+          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
 
 instance Show VkExportMemoryWin32HandleInfoNV where
         showsPrec d x
           = showString "VkExportMemoryWin32HandleInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPAttributes = " .
-                            showsPrec d (vkPAttributes x) .
+                          showString "pAttributes = " .
+                            showsPrec d (getField @"pAttributes" x) .
                               showString ", " .
-                                showString "vkDwAccess = " .
-                                  showsPrec d (vkDwAccess x) . showChar '}'
+                                showString "dwAccess = " .
+                                  showsPrec d (getField @"dwAccess" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfo.hsc
@@ -0,0 +1,190 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfo
+       (VkExportSemaphoreCreateInfo(..)) where
+import           Foreign.Storable                                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo            (VkSemaphoreCreateInfo)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExportSemaphoreCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalSemaphoreHandleTypeFlags handleTypes;
+--   > } VkExportSemaphoreCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportSemaphoreCreateInfo.html VkExportSemaphoreCreateInfo registry at www.khronos.org>
+data VkExportSemaphoreCreateInfo = VkExportSemaphoreCreateInfo## Addr##
+                                                                ByteArray##
+
+instance Eq VkExportSemaphoreCreateInfo where
+        (VkExportSemaphoreCreateInfo## a _) ==
+          x@(VkExportSemaphoreCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExportSemaphoreCreateInfo where
+        (VkExportSemaphoreCreateInfo## a _) `compare`
+          x@(VkExportSemaphoreCreateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExportSemaphoreCreateInfo where
+        unsafeAddr (VkExportSemaphoreCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExportSemaphoreCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExportSemaphoreCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfoKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfoKHR
+       (VkExportSemaphoreCreateInfo(..), VkExportSemaphoreCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfo (VkExportSemaphoreCreateInfo (..))
+
+-- | Alias for `VkExportSemaphoreCreateInfo`
+type VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreCreateInfoKHR.hsc
+++ /dev/null
@@ -1,244 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfoKHR
-       (VkExportSemaphoreCreateInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
-                                                                                   (VkSemaphoreCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkExportSemaphoreCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalSemaphoreHandleTypeFlagsKHR handleTypes;
---   > } VkExportSemaphoreCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportSemaphoreCreateInfoKHR.html VkExportSemaphoreCreateInfoKHR registry at www.khronos.org>
-data VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfoKHR## Addr##
-                                                                      ByteArray##
-
-instance Eq VkExportSemaphoreCreateInfoKHR where
-        (VkExportSemaphoreCreateInfoKHR## a _) ==
-          x@(VkExportSemaphoreCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportSemaphoreCreateInfoKHR where
-        (VkExportSemaphoreCreateInfoKHR## a _) `compare`
-          x@(VkExportSemaphoreCreateInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportSemaphoreCreateInfoKHR where
-        sizeOf ~_ = #{size VkExportSemaphoreCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportSemaphoreCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExportSemaphoreCreateInfoKHR where
-        unsafeAddr (VkExportSemaphoreCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExportSemaphoreCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExportSemaphoreCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExportSemaphoreCreateInfoKHR where
-        type StructFields VkExportSemaphoreCreateInfoKHR =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportSemaphoreCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportSemaphoreCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportSemaphoreCreateInfoKHR =
-             '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExportSemaphoreCreateInfoKHR where
-        type VkSTypeMType VkExportSemaphoreCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportSemaphoreCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportSemaphoreCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportSemaphoreCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportSemaphoreCreateInfoKHR where
-        type FieldType "sType" VkExportSemaphoreCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExportSemaphoreCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportSemaphoreCreateInfoKHR =
-             #{offset VkExportSemaphoreCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkExportSemaphoreCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreCreateInfoKHR, sType}
-
-instance CanReadField "sType" VkExportSemaphoreCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportSemaphoreCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportSemaphoreCreateInfoKHR where
-        type VkPNextMType VkExportSemaphoreCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportSemaphoreCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportSemaphoreCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportSemaphoreCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportSemaphoreCreateInfoKHR where
-        type FieldType "pNext" VkExportSemaphoreCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkExportSemaphoreCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportSemaphoreCreateInfoKHR =
-             #{offset VkExportSemaphoreCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExportSemaphoreCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreCreateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkExportSemaphoreCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportSemaphoreCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExportSemaphoreCreateInfoKHR where
-        type VkHandleTypesMType VkExportSemaphoreCreateInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagsKHR
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreCreateInfoKHR, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExportSemaphoreCreateInfoKHR, handleTypes}
-
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExportSemaphoreCreateInfoKHR, handleTypes}
-
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExportSemaphoreCreateInfoKHR, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportSemaphoreCreateInfoKHR where
-        type FieldType "handleTypes" VkExportSemaphoreCreateInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagsKHR
-        type FieldOptional "handleTypes" VkExportSemaphoreCreateInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportSemaphoreCreateInfoKHR =
-             #{offset VkExportSemaphoreCreateInfoKHR, handleTypes}
-        type FieldIsArray "handleTypes" VkExportSemaphoreCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreCreateInfoKHR, handleTypes}
-
-instance CanReadField "handleTypes" VkExportSemaphoreCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkHandleTypes
-
-instance CanWriteField "handleTypes" VkExportSemaphoreCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
-
-instance Show VkExportSemaphoreCreateInfoKHR where
-        showsPrec d x
-          = showString "VkExportSemaphoreCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExportSemaphoreWin32HandleInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExportSemaphoreWin32HandleInfoKHR
        (VkExportSemaphoreWin32HandleInfoKHR(..)) where
@@ -17,7 +18,6 @@
                                                                      LPCWSTR,
                                                                      SECURITY_ATTRIBUTES)
 import           Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo (VkSemaphoreCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExportSemaphoreWin32HandleInfoKHR {
@@ -28,7 +28,7 @@
 --   >     LPCWSTR                          name;
 --   > } VkExportSemaphoreWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExportSemaphoreWin32HandleInfoKHR.html VkExportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExportSemaphoreWin32HandleInfoKHR.html VkExportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
 data VkExportSemaphoreWin32HandleInfoKHR = VkExportSemaphoreWin32HandleInfoKHR## Addr##
                                                                                 ByteArray##
 
@@ -85,28 +85,6 @@
              '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkExportSemaphoreWin32HandleInfoKHR where
-        type VkSTypeMType VkExportSemaphoreWin32HandleInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkExportSemaphoreWin32HandleInfoKHR where
         type FieldType "sType" VkExportSemaphoreWin32HandleInfoKHR =
              VkStructureType
@@ -124,39 +102,22 @@
         fieldOffset
           = #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkExportSemaphoreWin32HandleInfoKHR where
-        type VkPNextMType VkExportSemaphoreWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkExportSemaphoreWin32HandleInfoKHR where
@@ -176,40 +137,22 @@
         fieldOffset
           = #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkPAttributes VkExportSemaphoreWin32HandleInfoKHR where
-        type VkPAttributesMType VkExportSemaphoreWin32HandleInfoKHR =
-             Ptr SECURITY_ATTRIBUTES
-
-        {-# NOINLINE vkPAttributes #-}
-        vkPAttributes x
+         CanReadField "pNext" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes})
-
-        {-# INLINE vkPAttributesByteOffset #-}
-        vkPAttributesByteOffset ~_
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
+              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkPAttributes #-}
-        readVkPAttributes p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkPAttributes #-}
-        writeVkPAttributes p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttributes" VkExportSemaphoreWin32HandleInfoKHR where
@@ -231,41 +174,24 @@
         fieldOffset
           = #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
 
-instance CanReadField "pAttributes"
-           VkExportSemaphoreWin32HandleInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pAttributes" VkExportSemaphoreWin32HandleInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPAttributes
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes})
 
         {-# INLINE readField #-}
-        readField = readVkPAttributes
+        readField p
+          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
 
-instance CanWriteField "pAttributes"
-           VkExportSemaphoreWin32HandleInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttributes" VkExportSemaphoreWin32HandleInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAttributes
-
-instance {-# OVERLAPPING #-}
-         HasVkDwAccess VkExportSemaphoreWin32HandleInfoKHR where
-        type VkDwAccessMType VkExportSemaphoreWin32HandleInfoKHR = DWORD
-
-        {-# NOINLINE vkDwAccess #-}
-        vkDwAccess x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess})
-
-        {-# INLINE vkDwAccessByteOffset #-}
-        vkDwAccessByteOffset ~_
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
-
-        {-# INLINE readVkDwAccess #-}
-        readVkDwAccess p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
-
-        {-# INLINE writeVkDwAccess #-}
-        writeVkDwAccess p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
+        writeField p
+          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
 
 instance {-# OVERLAPPING #-}
          HasField "dwAccess" VkExportSemaphoreWin32HandleInfoKHR where
@@ -285,41 +211,22 @@
         fieldOffset
           = #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
 
-instance CanReadField "dwAccess"
-           VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDwAccess
-
-        {-# INLINE readField #-}
-        readField = readVkDwAccess
-
-instance CanWriteField "dwAccess"
-           VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDwAccess
-
 instance {-# OVERLAPPING #-}
-         HasVkName VkExportSemaphoreWin32HandleInfoKHR where
-        type VkNameMType VkExportSemaphoreWin32HandleInfoKHR = LPCWSTR
-
-        {-# NOINLINE vkName #-}
-        vkName x
+         CanReadField "dwAccess" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, name})
-
-        {-# INLINE vkNameByteOffset #-}
-        vkNameByteOffset ~_
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
+              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess})
 
-        {-# INLINE readVkName #-}
-        readVkName p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
 
-        {-# INLINE writeVkName #-}
-        writeVkName p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dwAccess" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
 
 instance {-# OVERLAPPING #-}
          HasField "name" VkExportSemaphoreWin32HandleInfoKHR where
@@ -338,32 +245,37 @@
         fieldOffset
           = #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
 
-instance CanReadField "name" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkName
+instance {-# OVERLAPPING #-}
+         CanReadField "name" VkExportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, name})
 
         {-# INLINE readField #-}
-        readField = readVkName
+        readField p
+          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
 
-instance CanWriteField "name" VkExportSemaphoreWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "name" VkExportSemaphoreWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkName
+        writeField p
+          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
 
 instance Show VkExportSemaphoreWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkExportSemaphoreWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPAttributes = " .
-                            showsPrec d (vkPAttributes x) .
+                          showString "pAttributes = " .
+                            showsPrec d (getField @"pAttributes" x) .
                               showString ", " .
-                                showString "vkDwAccess = " .
-                                  showsPrec d (vkDwAccess x) .
+                                showString "dwAccess = " .
+                                  showsPrec d (getField @"dwAccess" x) .
                                     showString ", " .
-                                      showString "vkName = " . showsPrec d (vkName x) . showChar '}'
+                                      showString "name = " .
+                                        showsPrec d (getField @"name" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExtensionProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExtensionProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExtensionProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExtensionProperties.hsc
@@ -8,26 +8,25 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkExtensionProperties
        (VkExtensionProperties(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
-import           GHC.TypeLits                        (KnownNat, natVal') -- ' closing tick for hsc2hs
-import           Graphics.Vulkan.Constants           (VK_MAX_EXTENSION_NAME_SIZE,
-                                                      pattern VK_MAX_EXTENSION_NAME_SIZE)
+import           GHC.TypeLits                     (KnownNat, natVal') -- ' closing tick for hsc2hs
+import           Graphics.Vulkan.Constants        (VK_MAX_EXTENSION_NAME_SIZE, pattern VK_MAX_EXTENSION_NAME_SIZE)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExtensionProperties {
 --   >     char            extensionName[VK_MAX_EXTENSION_NAME_SIZE];
 --   >     uint32_t        specVersion;
 --   > } VkExtensionProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExtensionProperties.html VkExtensionProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExtensionProperties.html VkExtensionProperties registry at www.khronos.org>
 data VkExtensionProperties = VkExtensionProperties## Addr##
                                                     ByteArray##
 
@@ -77,33 +76,6 @@
         type StructExtends VkExtensionProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkExtensionNameArray VkExtensionProperties where
-        type VkExtensionNameArrayMType VkExtensionProperties = CChar
-
-        {-# NOINLINE vkExtensionNameArray #-}
-        vkExtensionNameArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: CChar) +
-                    #{offset VkExtensionProperties, extensionName}))
-
-        {-# INLINE vkExtensionNameArrayByteOffset #-}
-        vkExtensionNameArrayByteOffset ~_
-          = #{offset VkExtensionProperties, extensionName}
-
-        {-# INLINE readVkExtensionNameArray #-}
-        readVkExtensionNameArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkExtensionProperties, extensionName})
-
-        {-# INLINE writeVkExtensionNameArray #-}
-        writeVkExtensionNameArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkExtensionProperties, extensionName})
-
-instance {-# OVERLAPPING #-}
          HasField "extensionName" VkExtensionProperties where
         type FieldType "extensionName" VkExtensionProperties = CChar
         type FieldOptional "extensionName" VkExtensionProperties = 'False -- ' closing tick for hsc2hs
@@ -118,7 +90,8 @@
         fieldOffset
           = #{offset VkExtensionProperties, extensionName}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "extensionName" idx VkExtensionProperties) =>
          CanReadFieldArray "extensionName" idx VkExtensionProperties
          where
@@ -140,35 +113,44 @@
         fieldArrayLength = VK_MAX_EXTENSION_NAME_SIZE
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkExtensionNameArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkExtensionProperties, extensionName} +
+                      sizeOf (undefined :: CChar) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkExtensionNameArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkExtensionProperties, extensionName} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSpecVersion VkExtensionProperties
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "extensionName" idx VkExtensionProperties) =>
+         CanWriteFieldArray "extensionName" idx VkExtensionProperties
          where
-        type VkSpecVersionMType VkExtensionProperties = Word32
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "extensionName" 0 VkExtensionProperties #-}
 
-        {-# NOINLINE vkSpecVersion #-}
-        vkSpecVersion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtensionProperties, specVersion})
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "extensionName" 1 VkExtensionProperties #-}
 
-        {-# INLINE vkSpecVersionByteOffset #-}
-        vkSpecVersionByteOffset ~_
-          = #{offset VkExtensionProperties, specVersion}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "extensionName" 2 VkExtensionProperties #-}
 
-        {-# INLINE readVkSpecVersion #-}
-        readVkSpecVersion p
-          = peekByteOff p #{offset VkExtensionProperties, specVersion}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "extensionName" 3 VkExtensionProperties #-}
 
-        {-# INLINE writeVkSpecVersion #-}
-        writeVkSpecVersion p
-          = pokeByteOff p #{offset VkExtensionProperties, specVersion}
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkExtensionProperties, extensionName} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "specVersion" VkExtensionProperties where
@@ -185,21 +167,39 @@
         fieldOffset
           = #{offset VkExtensionProperties, specVersion}
 
-instance CanReadField "specVersion" VkExtensionProperties where
-        {-# INLINE getField #-}
-        getField = vkSpecVersion
+instance {-# OVERLAPPING #-}
+         CanReadField "specVersion" VkExtensionProperties where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExtensionProperties, specVersion})
 
         {-# INLINE readField #-}
-        readField = readVkSpecVersion
+        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 "vkExtensionNameArray = [" .
-                showsPrec d
-                  (map (vkExtensionNameArray x) [1 .. VK_MAX_EXTENSION_NAME_SIZE])
-                  .
-                  showChar ']' .
-                    showString ", " .
-                      showString "vkSpecVersion = " .
-                        showsPrec d (vkSpecVersion x) . showChar '}'
+              (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExtent2D.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExtent2D.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExtent2D.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExtent2D.hsc
@@ -5,22 +5,22 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExtent2D (VkExtent2D(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExtent2D {
 --   >     uint32_t        width;
 --   >     uint32_t        height;
 --   > } VkExtent2D;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExtent2D.html VkExtent2D registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExtent2D.html VkExtent2D registry at www.khronos.org>
 data VkExtent2D = VkExtent2D## Addr## ByteArray##
 
 instance Eq VkExtent2D where
@@ -67,25 +67,6 @@
         type ReturnedOnly VkExtent2D = 'False -- ' closing tick for hsc2hs
         type StructExtends VkExtent2D = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkWidth VkExtent2D where
-        type VkWidthMType VkExtent2D = Word32
-
-        {-# NOINLINE vkWidth #-}
-        vkWidth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent2D, width})
-
-        {-# INLINE vkWidthByteOffset #-}
-        vkWidthByteOffset ~_ = #{offset VkExtent2D, width}
-
-        {-# INLINE readVkWidth #-}
-        readVkWidth p
-          = peekByteOff p #{offset VkExtent2D, width}
-
-        {-# INLINE writeVkWidth #-}
-        writeVkWidth p
-          = pokeByteOff p #{offset VkExtent2D, width}
-
 instance {-# OVERLAPPING #-} HasField "width" VkExtent2D where
         type FieldType "width" VkExtent2D = Word32
         type FieldOptional "width" VkExtent2D = 'False -- ' closing tick for hsc2hs
@@ -99,35 +80,19 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkExtent2D, width}
 
-instance CanReadField "width" VkExtent2D where
-        {-# INLINE getField #-}
-        getField = vkWidth
+instance {-# OVERLAPPING #-} CanReadField "width" VkExtent2D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExtent2D, width})
 
         {-# INLINE readField #-}
-        readField = readVkWidth
+        readField p = peekByteOff p #{offset VkExtent2D, width}
 
-instance CanWriteField "width" VkExtent2D where
+instance {-# OVERLAPPING #-} CanWriteField "width" VkExtent2D where
         {-# INLINE writeField #-}
-        writeField = writeVkWidth
-
-instance {-# OVERLAPPING #-} HasVkHeight VkExtent2D where
-        type VkHeightMType VkExtent2D = Word32
-
-        {-# NOINLINE vkHeight #-}
-        vkHeight x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent2D, height})
-
-        {-# INLINE vkHeightByteOffset #-}
-        vkHeightByteOffset ~_ = #{offset VkExtent2D, height}
-
-        {-# INLINE readVkHeight #-}
-        readVkHeight p
-          = peekByteOff p #{offset VkExtent2D, height}
-
-        {-# INLINE writeVkHeight #-}
-        writeVkHeight p
-          = pokeByteOff p #{offset VkExtent2D, height}
+        writeField p
+          = pokeByteOff p #{offset VkExtent2D, width}
 
 instance {-# OVERLAPPING #-} HasField "height" VkExtent2D where
         type FieldType "height" VkExtent2D = Word32
@@ -142,21 +107,27 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkExtent2D, height}
 
-instance CanReadField "height" VkExtent2D where
-        {-# INLINE getField #-}
-        getField = vkHeight
+instance {-# OVERLAPPING #-} CanReadField "height" VkExtent2D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExtent2D, height})
 
         {-# INLINE readField #-}
-        readField = readVkHeight
+        readField p
+          = peekByteOff p #{offset VkExtent2D, height}
 
-instance CanWriteField "height" VkExtent2D where
+instance {-# OVERLAPPING #-} CanWriteField "height" VkExtent2D
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkHeight
+        writeField p
+          = pokeByteOff p #{offset VkExtent2D, height}
 
 instance Show VkExtent2D where
         showsPrec d x
           = showString "VkExtent2D {" .
-              showString "vkWidth = " .
-                showsPrec d (vkWidth x) .
+              showString "width = " .
+                showsPrec d (getField @"width" x) .
                   showString ", " .
-                    showString "vkHeight = " . showsPrec d (vkHeight x) . showChar '}'
+                    showString "height = " .
+                      showsPrec d (getField @"height" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExtent3D.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExtent3D.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExtent3D.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExtent3D.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExtent3D (VkExtent3D(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExtent3D {
 --   >     uint32_t        width;
@@ -21,7 +21,7 @@
 --   >     uint32_t        depth;
 --   > } VkExtent3D;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExtent3D.html VkExtent3D registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExtent3D.html VkExtent3D registry at www.khronos.org>
 data VkExtent3D = VkExtent3D## Addr## ByteArray##
 
 instance Eq VkExtent3D where
@@ -68,25 +68,6 @@
         type ReturnedOnly VkExtent3D = 'False -- ' closing tick for hsc2hs
         type StructExtends VkExtent3D = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkWidth VkExtent3D where
-        type VkWidthMType VkExtent3D = Word32
-
-        {-# NOINLINE vkWidth #-}
-        vkWidth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent3D, width})
-
-        {-# INLINE vkWidthByteOffset #-}
-        vkWidthByteOffset ~_ = #{offset VkExtent3D, width}
-
-        {-# INLINE readVkWidth #-}
-        readVkWidth p
-          = peekByteOff p #{offset VkExtent3D, width}
-
-        {-# INLINE writeVkWidth #-}
-        writeVkWidth p
-          = pokeByteOff p #{offset VkExtent3D, width}
-
 instance {-# OVERLAPPING #-} HasField "width" VkExtent3D where
         type FieldType "width" VkExtent3D = Word32
         type FieldOptional "width" VkExtent3D = 'False -- ' closing tick for hsc2hs
@@ -100,35 +81,19 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkExtent3D, width}
 
-instance CanReadField "width" VkExtent3D where
-        {-# INLINE getField #-}
-        getField = vkWidth
+instance {-# OVERLAPPING #-} CanReadField "width" VkExtent3D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExtent3D, width})
 
         {-# INLINE readField #-}
-        readField = readVkWidth
+        readField p = peekByteOff p #{offset VkExtent3D, width}
 
-instance CanWriteField "width" VkExtent3D where
+instance {-# OVERLAPPING #-} CanWriteField "width" VkExtent3D where
         {-# INLINE writeField #-}
-        writeField = writeVkWidth
-
-instance {-# OVERLAPPING #-} HasVkHeight VkExtent3D where
-        type VkHeightMType VkExtent3D = Word32
-
-        {-# NOINLINE vkHeight #-}
-        vkHeight x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent3D, height})
-
-        {-# INLINE vkHeightByteOffset #-}
-        vkHeightByteOffset ~_ = #{offset VkExtent3D, height}
-
-        {-# INLINE readVkHeight #-}
-        readVkHeight p
-          = peekByteOff p #{offset VkExtent3D, height}
-
-        {-# INLINE writeVkHeight #-}
-        writeVkHeight p
-          = pokeByteOff p #{offset VkExtent3D, height}
+        writeField p
+          = pokeByteOff p #{offset VkExtent3D, width}
 
 instance {-# OVERLAPPING #-} HasField "height" VkExtent3D where
         type FieldType "height" VkExtent3D = Word32
@@ -143,35 +108,21 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkExtent3D, height}
 
-instance CanReadField "height" VkExtent3D where
-        {-# INLINE getField #-}
-        getField = vkHeight
+instance {-# OVERLAPPING #-} CanReadField "height" VkExtent3D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExtent3D, height})
 
         {-# INLINE readField #-}
-        readField = readVkHeight
+        readField p
+          = peekByteOff p #{offset VkExtent3D, height}
 
-instance CanWriteField "height" VkExtent3D where
+instance {-# OVERLAPPING #-} CanWriteField "height" VkExtent3D
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkHeight
-
-instance {-# OVERLAPPING #-} HasVkDepth VkExtent3D where
-        type VkDepthMType VkExtent3D = Word32
-
-        {-# NOINLINE vkDepth #-}
-        vkDepth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent3D, depth})
-
-        {-# INLINE vkDepthByteOffset #-}
-        vkDepthByteOffset ~_ = #{offset VkExtent3D, depth}
-
-        {-# INLINE readVkDepth #-}
-        readVkDepth p
-          = peekByteOff p #{offset VkExtent3D, depth}
-
-        {-# INLINE writeVkDepth #-}
-        writeVkDepth p
-          = pokeByteOff p #{offset VkExtent3D, depth}
+        writeField p
+          = pokeByteOff p #{offset VkExtent3D, height}
 
 instance {-# OVERLAPPING #-} HasField "depth" VkExtent3D where
         type FieldType "depth" VkExtent3D = Word32
@@ -186,24 +137,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkExtent3D, depth}
 
-instance CanReadField "depth" VkExtent3D where
-        {-# INLINE getField #-}
-        getField = vkDepth
+instance {-# OVERLAPPING #-} CanReadField "depth" VkExtent3D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExtent3D, depth})
 
         {-# INLINE readField #-}
-        readField = readVkDepth
+        readField p = peekByteOff p #{offset VkExtent3D, depth}
 
-instance CanWriteField "depth" VkExtent3D where
+instance {-# OVERLAPPING #-} CanWriteField "depth" VkExtent3D where
         {-# INLINE writeField #-}
-        writeField = writeVkDepth
+        writeField p
+          = pokeByteOff p #{offset VkExtent3D, depth}
 
 instance Show VkExtent3D where
         showsPrec d x
           = showString "VkExtent3D {" .
-              showString "vkWidth = " .
-                showsPrec d (vkWidth x) .
+              showString "width = " .
+                showsPrec d (getField @"width" x) .
                   showString ", " .
-                    showString "vkHeight = " .
-                      showsPrec d (vkHeight x) .
+                    showString "height = " .
+                      showsPrec d (getField @"height" x) .
                         showString ", " .
-                          showString "vkDepth = " . showsPrec d (vkDepth x) . showChar '}'
+                          showString "depth = " .
+                            showsPrec d (getField @"depth" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferProperties.hsc
@@ -0,0 +1,195 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalBufferProperties
+       (VkExternalBufferProperties(..)) where
+import           Foreign.Storable                                        (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType              (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties (VkExternalMemoryProperties)
+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/man/html/VkExternalBufferProperties.html VkExternalBufferProperties registry at www.khronos.org>
+data VkExternalBufferProperties = VkExternalBufferProperties## Addr##
+                                                              ByteArray##
+
+instance Eq VkExternalBufferProperties where
+        (VkExternalBufferProperties## a _) ==
+          x@(VkExternalBufferProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalBufferProperties where
+        (VkExternalBufferProperties## a _) `compare`
+          x@(VkExternalBufferProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalBufferProperties where
+        unsafeAddr (VkExternalBufferProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalBufferProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalBufferProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferPropertiesKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalBufferPropertiesKHR
+       (VkExternalBufferProperties(..), VkExternalBufferPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExternalBufferProperties (VkExternalBufferProperties (..))
+
+-- | Alias for `VkExternalBufferProperties`
+type VkExternalBufferPropertiesKHR = VkExternalBufferProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferPropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalBufferPropertiesKHR.hsc
+++ /dev/null
@@ -1,231 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalBufferPropertiesKHR
-       (VkExternalBufferPropertiesKHR(..)) where
-import           Foreign.Storable                                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR (VkExternalMemoryPropertiesKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalBufferPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalMemoryPropertiesKHR    externalMemoryProperties;
---   > } VkExternalBufferPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalBufferPropertiesKHR.html VkExternalBufferPropertiesKHR registry at www.khronos.org>
-data VkExternalBufferPropertiesKHR = VkExternalBufferPropertiesKHR## Addr##
-                                                                    ByteArray##
-
-instance Eq VkExternalBufferPropertiesKHR where
-        (VkExternalBufferPropertiesKHR## a _) ==
-          x@(VkExternalBufferPropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalBufferPropertiesKHR where
-        (VkExternalBufferPropertiesKHR## a _) `compare`
-          x@(VkExternalBufferPropertiesKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalBufferPropertiesKHR where
-        sizeOf ~_ = #{size VkExternalBufferPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalBufferPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalBufferPropertiesKHR where
-        unsafeAddr (VkExternalBufferPropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalBufferPropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalBufferPropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalBufferPropertiesKHR where
-        type StructFields VkExternalBufferPropertiesKHR =
-             '["sType", "pNext", "externalMemoryProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalBufferPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalBufferPropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalBufferPropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalBufferPropertiesKHR where
-        type VkSTypeMType VkExternalBufferPropertiesKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalBufferPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalBufferPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalBufferPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalBufferPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalBufferPropertiesKHR where
-        type FieldType "sType" VkExternalBufferPropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExternalBufferPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalBufferPropertiesKHR =
-             #{offset VkExternalBufferPropertiesKHR, sType}
-        type FieldIsArray "sType" VkExternalBufferPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalBufferPropertiesKHR, sType}
-
-instance CanReadField "sType" VkExternalBufferPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalBufferPropertiesKHR where
-        type VkPNextMType VkExternalBufferPropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalBufferPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalBufferPropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalBufferPropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalBufferPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalBufferPropertiesKHR where
-        type FieldType "pNext" VkExternalBufferPropertiesKHR = Ptr Void
-        type FieldOptional "pNext" VkExternalBufferPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalBufferPropertiesKHR =
-             #{offset VkExternalBufferPropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkExternalBufferPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalBufferPropertiesKHR, pNext}
-
-instance CanReadField "pNext" VkExternalBufferPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkExternalMemoryProperties VkExternalBufferPropertiesKHR where
-        type VkExternalMemoryPropertiesMType VkExternalBufferPropertiesKHR
-             = VkExternalMemoryPropertiesKHR
-
-        {-# NOINLINE vkExternalMemoryProperties #-}
-        vkExternalMemoryProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalBufferPropertiesKHR, externalMemoryProperties})
-
-        {-# INLINE vkExternalMemoryPropertiesByteOffset #-}
-        vkExternalMemoryPropertiesByteOffset ~_
-          = #{offset VkExternalBufferPropertiesKHR, externalMemoryProperties}
-
-        {-# INLINE readVkExternalMemoryProperties #-}
-        readVkExternalMemoryProperties p
-          = peekByteOff p #{offset VkExternalBufferPropertiesKHR, externalMemoryProperties}
-
-        {-# INLINE writeVkExternalMemoryProperties #-}
-        writeVkExternalMemoryProperties p
-          = pokeByteOff p #{offset VkExternalBufferPropertiesKHR, externalMemoryProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryProperties" VkExternalBufferPropertiesKHR
-         where
-        type FieldType "externalMemoryProperties"
-               VkExternalBufferPropertiesKHR
-             = VkExternalMemoryPropertiesKHR
-        type FieldOptional "externalMemoryProperties"
-               VkExternalBufferPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryProperties"
-               VkExternalBufferPropertiesKHR
-             =
-             #{offset VkExternalBufferPropertiesKHR, externalMemoryProperties}
-        type FieldIsArray "externalMemoryProperties"
-               VkExternalBufferPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalBufferPropertiesKHR, externalMemoryProperties}
-
-instance CanReadField "externalMemoryProperties"
-           VkExternalBufferPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExternalMemoryProperties
-
-        {-# INLINE readField #-}
-        readField = readVkExternalMemoryProperties
-
-instance Show VkExternalBufferPropertiesKHR where
-        showsPrec d x
-          = showString "VkExternalBufferPropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkExternalMemoryProperties = " .
-                            showsPrec d (vkExternalMemoryProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFenceProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFenceProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFenceProperties.hsc
@@ -0,0 +1,284 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalFenceProperties
+       (VkExternalFenceProperties(..)) where
+import           Foreign.Storable                                          (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlags    (VkExternalFenceFeatureFlags)
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalFenceProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes;
+--   >     VkExternalFenceHandleTypeFlags compatibleHandleTypes;
+--   >     VkExternalFenceFeatureFlags externalFenceFeatures;
+--   > } VkExternalFenceProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalFenceProperties.html VkExternalFenceProperties registry at www.khronos.org>
+data VkExternalFenceProperties = VkExternalFenceProperties## Addr##
+                                                            ByteArray##
+
+instance Eq VkExternalFenceProperties where
+        (VkExternalFenceProperties## a _) ==
+          x@(VkExternalFenceProperties## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalFenceProperties where
+        (VkExternalFenceProperties## a _) `compare`
+          x@(VkExternalFenceProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalFenceProperties where
+        unsafeAddr (VkExternalFenceProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalFenceProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalFenceProperties## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFencePropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFencePropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFencePropertiesKHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalFencePropertiesKHR
+       (VkExternalFenceProperties(..), VkExternalFencePropertiesKHR) where
+import           Graphics.Vulkan.Types.Struct.VkExternalFenceProperties (VkExternalFenceProperties (..))
+
+-- | Alias for `VkExternalFenceProperties`
+type VkExternalFencePropertiesKHR = VkExternalFenceProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFencePropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFencePropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFencePropertiesKHR.hsc
+++ /dev/null
@@ -1,350 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalFencePropertiesKHR
-       (VkExternalFencePropertiesKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagsKHR    (VkExternalFenceFeatureFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalFencePropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
---   >     VkExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
---   >     VkExternalFenceFeatureFlagsKHR externalFenceFeatures;
---   > } VkExternalFencePropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalFencePropertiesKHR.html VkExternalFencePropertiesKHR registry at www.khronos.org>
-data VkExternalFencePropertiesKHR = VkExternalFencePropertiesKHR## Addr##
-                                                                  ByteArray##
-
-instance Eq VkExternalFencePropertiesKHR where
-        (VkExternalFencePropertiesKHR## a _) ==
-          x@(VkExternalFencePropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalFencePropertiesKHR where
-        (VkExternalFencePropertiesKHR## a _) `compare`
-          x@(VkExternalFencePropertiesKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalFencePropertiesKHR where
-        sizeOf ~_ = #{size VkExternalFencePropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalFencePropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalFencePropertiesKHR where
-        unsafeAddr (VkExternalFencePropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalFencePropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalFencePropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalFencePropertiesKHR where
-        type StructFields VkExternalFencePropertiesKHR =
-             '["sType", "pNext", "exportFromImportedHandleTypes", -- ' closing tick for hsc2hs
-               "compatibleHandleTypes", "externalFenceFeatures"]
-        type CUnionType VkExternalFencePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalFencePropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalFencePropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalFencePropertiesKHR where
-        type VkSTypeMType VkExternalFencePropertiesKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFencePropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalFencePropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalFencePropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalFencePropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalFencePropertiesKHR where
-        type FieldType "sType" VkExternalFencePropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExternalFencePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalFencePropertiesKHR =
-             #{offset VkExternalFencePropertiesKHR, sType}
-        type FieldIsArray "sType" VkExternalFencePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFencePropertiesKHR, sType}
-
-instance CanReadField "sType" VkExternalFencePropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalFencePropertiesKHR where
-        type VkPNextMType VkExternalFencePropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFencePropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalFencePropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalFencePropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalFencePropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalFencePropertiesKHR where
-        type FieldType "pNext" VkExternalFencePropertiesKHR = Ptr Void
-        type FieldOptional "pNext" VkExternalFencePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalFencePropertiesKHR =
-             #{offset VkExternalFencePropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkExternalFencePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFencePropertiesKHR, pNext}
-
-instance CanReadField "pNext" VkExternalFencePropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkExportFromImportedHandleTypes VkExternalFencePropertiesKHR
-         where
-        type VkExportFromImportedHandleTypesMType
-               VkExternalFencePropertiesKHR
-             = VkExternalFenceHandleTypeFlagsKHR
-
-        {-# NOINLINE vkExportFromImportedHandleTypes #-}
-        vkExportFromImportedHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFencePropertiesKHR, exportFromImportedHandleTypes})
-
-        {-# INLINE vkExportFromImportedHandleTypesByteOffset #-}
-        vkExportFromImportedHandleTypesByteOffset ~_
-          = #{offset VkExternalFencePropertiesKHR, exportFromImportedHandleTypes}
-
-        {-# INLINE readVkExportFromImportedHandleTypes #-}
-        readVkExportFromImportedHandleTypes p
-          = peekByteOff p #{offset VkExternalFencePropertiesKHR, exportFromImportedHandleTypes}
-
-        {-# INLINE writeVkExportFromImportedHandleTypes #-}
-        writeVkExportFromImportedHandleTypes p
-          = pokeByteOff p #{offset VkExternalFencePropertiesKHR, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes"
-           VkExternalFencePropertiesKHR
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalFencePropertiesKHR
-             = VkExternalFenceHandleTypeFlagsKHR
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalFencePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalFencePropertiesKHR
-             =
-             #{offset VkExternalFencePropertiesKHR, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalFencePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFencePropertiesKHR, exportFromImportedHandleTypes}
-
-instance CanReadField "exportFromImportedHandleTypes"
-           VkExternalFencePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExportFromImportedHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkExportFromImportedHandleTypes
-
-instance {-# OVERLAPPING #-}
-         HasVkCompatibleHandleTypes VkExternalFencePropertiesKHR where
-        type VkCompatibleHandleTypesMType VkExternalFencePropertiesKHR =
-             VkExternalFenceHandleTypeFlagsKHR
-
-        {-# NOINLINE vkCompatibleHandleTypes #-}
-        vkCompatibleHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFencePropertiesKHR, compatibleHandleTypes})
-
-        {-# INLINE vkCompatibleHandleTypesByteOffset #-}
-        vkCompatibleHandleTypesByteOffset ~_
-          = #{offset VkExternalFencePropertiesKHR, compatibleHandleTypes}
-
-        {-# INLINE readVkCompatibleHandleTypes #-}
-        readVkCompatibleHandleTypes p
-          = peekByteOff p #{offset VkExternalFencePropertiesKHR, compatibleHandleTypes}
-
-        {-# INLINE writeVkCompatibleHandleTypes #-}
-        writeVkCompatibleHandleTypes p
-          = pokeByteOff p #{offset VkExternalFencePropertiesKHR, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalFencePropertiesKHR where
-        type FieldType "compatibleHandleTypes" VkExternalFencePropertiesKHR
-             = VkExternalFenceHandleTypeFlagsKHR
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalFencePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes"
-               VkExternalFencePropertiesKHR
-             =
-             #{offset VkExternalFencePropertiesKHR, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes"
-               VkExternalFencePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFencePropertiesKHR, compatibleHandleTypes}
-
-instance CanReadField "compatibleHandleTypes"
-           VkExternalFencePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCompatibleHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkCompatibleHandleTypes
-
-instance {-# OVERLAPPING #-}
-         HasVkExternalFenceFeatures VkExternalFencePropertiesKHR where
-        type VkExternalFenceFeaturesMType VkExternalFencePropertiesKHR =
-             VkExternalFenceFeatureFlagsKHR
-
-        {-# NOINLINE vkExternalFenceFeatures #-}
-        vkExternalFenceFeatures x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFencePropertiesKHR, externalFenceFeatures})
-
-        {-# INLINE vkExternalFenceFeaturesByteOffset #-}
-        vkExternalFenceFeaturesByteOffset ~_
-          = #{offset VkExternalFencePropertiesKHR, externalFenceFeatures}
-
-        {-# INLINE readVkExternalFenceFeatures #-}
-        readVkExternalFenceFeatures p
-          = peekByteOff p #{offset VkExternalFencePropertiesKHR, externalFenceFeatures}
-
-        {-# INLINE writeVkExternalFenceFeatures #-}
-        writeVkExternalFenceFeatures p
-          = pokeByteOff p #{offset VkExternalFencePropertiesKHR, externalFenceFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalFenceFeatures" VkExternalFencePropertiesKHR where
-        type FieldType "externalFenceFeatures" VkExternalFencePropertiesKHR
-             = VkExternalFenceFeatureFlagsKHR
-        type FieldOptional "externalFenceFeatures"
-               VkExternalFencePropertiesKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "externalFenceFeatures"
-               VkExternalFencePropertiesKHR
-             =
-             #{offset VkExternalFencePropertiesKHR, externalFenceFeatures}
-        type FieldIsArray "externalFenceFeatures"
-               VkExternalFencePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFencePropertiesKHR, externalFenceFeatures}
-
-instance CanReadField "externalFenceFeatures"
-           VkExternalFencePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExternalFenceFeatures
-
-        {-# INLINE readField #-}
-        readField = readVkExternalFenceFeatures
-
-instance Show VkExternalFencePropertiesKHR where
-        showsPrec d x
-          = showString "VkExternalFencePropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkExportFromImportedHandleTypes = " .
-                            showsPrec d (vkExportFromImportedHandleTypes x) .
-                              showString ", " .
-                                showString "vkCompatibleHandleTypes = " .
-                                  showsPrec d (vkCompatibleHandleTypes x) .
-                                    showString ", " .
-                                      showString "vkExternalFenceFeatures = " .
-                                        showsPrec d (vkExternalFenceFeatures x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFormatANDROID.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFormatANDROID.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalFormatANDROID.hsc
@@ -0,0 +1,182 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalFormatANDROID
+       (VkExternalFormatANDROID(..)) where
+import           Foreign.Storable                                                (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType                      (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo                  (VkImageCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo (VkSamplerYcbcrConversionCreateInfo)
+import           System.IO.Unsafe                                                (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalFormatANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     uint64_t                           externalFormat;
+--   > } VkExternalFormatANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalFormatANDROID.html VkExternalFormatANDROID registry at www.khronos.org>
+data VkExternalFormatANDROID = VkExternalFormatANDROID## Addr##
+                                                        ByteArray##
+
+instance Eq VkExternalFormatANDROID where
+        (VkExternalFormatANDROID## a _) == x@(VkExternalFormatANDROID## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalFormatANDROID where
+        (VkExternalFormatANDROID## a _) `compare`
+          x@(VkExternalFormatANDROID## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalFormatANDROID where
+        unsafeAddr (VkExternalFormatANDROID## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalFormatANDROID## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalFormatANDROID## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatProperties.hsc
@@ -0,0 +1,201 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalImageFormatProperties
+       (VkExternalImageFormatProperties(..)) where
+import           Foreign.Storable                                        (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType              (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties (VkExternalMemoryProperties)
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2   (VkImageFormatProperties2)
+import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalImageFormatProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalMemoryProperties externalMemoryProperties;
+--   > } VkExternalImageFormatProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalImageFormatProperties.html VkExternalImageFormatProperties registry at www.khronos.org>
+data VkExternalImageFormatProperties = VkExternalImageFormatProperties## Addr##
+                                                                        ByteArray##
+
+instance Eq VkExternalImageFormatProperties where
+        (VkExternalImageFormatProperties## a _) ==
+          x@(VkExternalImageFormatProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalImageFormatProperties where
+        (VkExternalImageFormatProperties## a _) `compare`
+          x@(VkExternalImageFormatProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalImageFormatProperties where
+        unsafeAddr (VkExternalImageFormatProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalImageFormatProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalImageFormatProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesKHR
+       (VkExternalImageFormatProperties(..),
+        VkExternalImageFormatPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExternalImageFormatProperties (VkExternalImageFormatProperties (..))
+
+-- | Alias for `VkExternalImageFormatProperties`
+type VkExternalImageFormatPropertiesKHR =
+     VkExternalImageFormatProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesKHR.hsc
+++ /dev/null
@@ -1,245 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesKHR
-       (VkExternalImageFormatPropertiesKHR(..)) where
-import           Foreign.Storable                                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR (VkExternalMemoryPropertiesKHR)
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR   (VkImageFormatProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalImageFormatPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalMemoryPropertiesKHR externalMemoryProperties;
---   > } VkExternalImageFormatPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalImageFormatPropertiesKHR.html VkExternalImageFormatPropertiesKHR registry at www.khronos.org>
-data VkExternalImageFormatPropertiesKHR = VkExternalImageFormatPropertiesKHR## Addr##
-                                                                              ByteArray##
-
-instance Eq VkExternalImageFormatPropertiesKHR where
-        (VkExternalImageFormatPropertiesKHR## a _) ==
-          x@(VkExternalImageFormatPropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalImageFormatPropertiesKHR where
-        (VkExternalImageFormatPropertiesKHR## a _) `compare`
-          x@(VkExternalImageFormatPropertiesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalImageFormatPropertiesKHR where
-        sizeOf ~_ = #{size VkExternalImageFormatPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalImageFormatPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalImageFormatPropertiesKHR where
-        unsafeAddr (VkExternalImageFormatPropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalImageFormatPropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalImageFormatPropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalImageFormatPropertiesKHR where
-        type StructFields VkExternalImageFormatPropertiesKHR =
-             '["sType", "pNext", "externalMemoryProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalImageFormatPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalImageFormatPropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalImageFormatPropertiesKHR =
-             '[VkImageFormatProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalImageFormatPropertiesKHR where
-        type VkSTypeMType VkExternalImageFormatPropertiesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalImageFormatPropertiesKHR where
-        type FieldType "sType" VkExternalImageFormatPropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExternalImageFormatPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalImageFormatPropertiesKHR =
-             #{offset VkExternalImageFormatPropertiesKHR, sType}
-        type FieldIsArray "sType" VkExternalImageFormatPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesKHR, sType}
-
-instance CanReadField "sType" VkExternalImageFormatPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalImageFormatPropertiesKHR where
-        type VkPNextMType VkExternalImageFormatPropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalImageFormatPropertiesKHR where
-        type FieldType "pNext" VkExternalImageFormatPropertiesKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkExternalImageFormatPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalImageFormatPropertiesKHR =
-             #{offset VkExternalImageFormatPropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkExternalImageFormatPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesKHR, pNext}
-
-instance CanReadField "pNext" VkExternalImageFormatPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkExternalMemoryProperties VkExternalImageFormatPropertiesKHR
-         where
-        type VkExternalMemoryPropertiesMType
-               VkExternalImageFormatPropertiesKHR
-             = VkExternalMemoryPropertiesKHR
-
-        {-# NOINLINE vkExternalMemoryProperties #-}
-        vkExternalMemoryProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesKHR, externalMemoryProperties})
-
-        {-# INLINE vkExternalMemoryPropertiesByteOffset #-}
-        vkExternalMemoryPropertiesByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesKHR, externalMemoryProperties}
-
-        {-# INLINE readVkExternalMemoryProperties #-}
-        readVkExternalMemoryProperties p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesKHR, externalMemoryProperties}
-
-        {-# INLINE writeVkExternalMemoryProperties #-}
-        writeVkExternalMemoryProperties p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesKHR, externalMemoryProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryProperties"
-           VkExternalImageFormatPropertiesKHR
-         where
-        type FieldType "externalMemoryProperties"
-               VkExternalImageFormatPropertiesKHR
-             = VkExternalMemoryPropertiesKHR
-        type FieldOptional "externalMemoryProperties"
-               VkExternalImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryProperties"
-               VkExternalImageFormatPropertiesKHR
-             =
-             #{offset VkExternalImageFormatPropertiesKHR, externalMemoryProperties}
-        type FieldIsArray "externalMemoryProperties"
-               VkExternalImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesKHR, externalMemoryProperties}
-
-instance CanReadField "externalMemoryProperties"
-           VkExternalImageFormatPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExternalMemoryProperties
-
-        {-# INLINE readField #-}
-        readField = readVkExternalMemoryProperties
-
-instance Show VkExternalImageFormatPropertiesKHR where
-        showsPrec d x
-          = showString "VkExternalImageFormatPropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkExternalMemoryProperties = " .
-                            showsPrec d (vkExternalMemoryProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalImageFormatPropertiesNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesNV
        (VkExternalImageFormatPropertiesNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagsNV    (VkExternalMemoryFeatureFlagsNV)
 import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsNV (VkExternalMemoryHandleTypeFlagsNV)
 import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties         (VkImageFormatProperties)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExternalImageFormatPropertiesNV {
@@ -25,7 +25,7 @@
 --   >     VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
 --   > } VkExternalImageFormatPropertiesNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalImageFormatPropertiesNV.html VkExternalImageFormatPropertiesNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalImageFormatPropertiesNV.html VkExternalImageFormatPropertiesNV registry at www.khronos.org>
 data VkExternalImageFormatPropertiesNV = VkExternalImageFormatPropertiesNV## Addr##
                                                                             ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkExternalImageFormatPropertiesNV = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkImageFormatProperties VkExternalImageFormatPropertiesNV where
-        type VkImageFormatPropertiesMType VkExternalImageFormatPropertiesNV
-             = VkImageFormatProperties
-
-        {-# NOINLINE vkImageFormatProperties #-}
-        vkImageFormatProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties})
-
-        {-# INLINE vkImageFormatPropertiesByteOffset #-}
-        vkImageFormatPropertiesByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-
-        {-# INLINE readVkImageFormatProperties #-}
-        readVkImageFormatProperties p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-
-        {-# INLINE writeVkImageFormatProperties #-}
-        writeVkImageFormatProperties p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
          HasField "imageFormatProperties" VkExternalImageFormatPropertiesNV
          where
         type FieldType "imageFormatProperties"
@@ -126,37 +104,26 @@
         fieldOffset
           = #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
 
-instance CanReadField "imageFormatProperties"
+instance {-# OVERLAPPING #-}
+         CanReadField "imageFormatProperties"
            VkExternalImageFormatPropertiesNV
          where
-        {-# INLINE getField #-}
-        getField = vkImageFormatProperties
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties})
 
         {-# INLINE readField #-}
-        readField = readVkImageFormatProperties
+        readField p
+          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
 
 instance {-# OVERLAPPING #-}
-         HasVkExternalMemoryFeatures VkExternalImageFormatPropertiesNV where
-        type VkExternalMemoryFeaturesMType
-               VkExternalImageFormatPropertiesNV
-             = VkExternalMemoryFeatureFlagsNV
-
-        {-# NOINLINE vkExternalMemoryFeatures #-}
-        vkExternalMemoryFeatures x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures})
-
-        {-# INLINE vkExternalMemoryFeaturesByteOffset #-}
-        vkExternalMemoryFeaturesByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
-
-        {-# INLINE readVkExternalMemoryFeatures #-}
-        readVkExternalMemoryFeatures p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
-
-        {-# INLINE writeVkExternalMemoryFeatures #-}
-        writeVkExternalMemoryFeatures p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
+         CanWriteField "imageFormatProperties"
+           VkExternalImageFormatPropertiesNV
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
 
 instance {-# OVERLAPPING #-}
          HasField "externalMemoryFeatures" VkExternalImageFormatPropertiesNV
@@ -182,39 +149,26 @@
         fieldOffset
           = #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
 
-instance CanReadField "externalMemoryFeatures"
+instance {-# OVERLAPPING #-}
+         CanReadField "externalMemoryFeatures"
            VkExternalImageFormatPropertiesNV
          where
-        {-# INLINE getField #-}
-        getField = vkExternalMemoryFeatures
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures})
 
         {-# INLINE readField #-}
-        readField = readVkExternalMemoryFeatures
+        readField p
+          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
 
 instance {-# OVERLAPPING #-}
-         HasVkExportFromImportedHandleTypes
+         CanWriteField "externalMemoryFeatures"
            VkExternalImageFormatPropertiesNV
          where
-        type VkExportFromImportedHandleTypesMType
-               VkExternalImageFormatPropertiesNV
-             = VkExternalMemoryHandleTypeFlagsNV
-
-        {-# NOINLINE vkExportFromImportedHandleTypes #-}
-        vkExportFromImportedHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes})
-
-        {-# INLINE vkExportFromImportedHandleTypesByteOffset #-}
-        vkExportFromImportedHandleTypesByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
-
-        {-# INLINE readVkExportFromImportedHandleTypes #-}
-        readVkExportFromImportedHandleTypes p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
-
-        {-# INLINE writeVkExportFromImportedHandleTypes #-}
-        writeVkExportFromImportedHandleTypes p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
 
 instance {-# OVERLAPPING #-}
          HasField "exportFromImportedHandleTypes"
@@ -241,36 +195,26 @@
         fieldOffset
           = #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
 
-instance CanReadField "exportFromImportedHandleTypes"
+instance {-# OVERLAPPING #-}
+         CanReadField "exportFromImportedHandleTypes"
            VkExternalImageFormatPropertiesNV
          where
-        {-# INLINE getField #-}
-        getField = vkExportFromImportedHandleTypes
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes})
 
         {-# INLINE readField #-}
-        readField = readVkExportFromImportedHandleTypes
+        readField p
+          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
 
 instance {-# OVERLAPPING #-}
-         HasVkCompatibleHandleTypes VkExternalImageFormatPropertiesNV where
-        type VkCompatibleHandleTypesMType VkExternalImageFormatPropertiesNV
-             = VkExternalMemoryHandleTypeFlagsNV
-
-        {-# NOINLINE vkCompatibleHandleTypes #-}
-        vkCompatibleHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes})
-
-        {-# INLINE vkCompatibleHandleTypesByteOffset #-}
-        vkCompatibleHandleTypesByteOffset ~_
-          = #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
-
-        {-# INLINE readVkCompatibleHandleTypes #-}
-        readVkCompatibleHandleTypes p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
-
-        {-# INLINE writeVkCompatibleHandleTypes #-}
-        writeVkCompatibleHandleTypes p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
+         CanWriteField "exportFromImportedHandleTypes"
+           VkExternalImageFormatPropertiesNV
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
 
 instance {-# OVERLAPPING #-}
          HasField "compatibleHandleTypes" VkExternalImageFormatPropertiesNV
@@ -296,26 +240,38 @@
         fieldOffset
           = #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
 
-instance CanReadField "compatibleHandleTypes"
+instance {-# OVERLAPPING #-}
+         CanReadField "compatibleHandleTypes"
            VkExternalImageFormatPropertiesNV
          where
-        {-# INLINE getField #-}
-        getField = vkCompatibleHandleTypes
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes})
 
         {-# INLINE readField #-}
-        readField = readVkCompatibleHandleTypes
+        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 "vkImageFormatProperties = " .
-                showsPrec d (vkImageFormatProperties x) .
+              showString "imageFormatProperties = " .
+                showsPrec d (getField @"imageFormatProperties" x) .
                   showString ", " .
-                    showString "vkExternalMemoryFeatures = " .
-                      showsPrec d (vkExternalMemoryFeatures x) .
+                    showString "externalMemoryFeatures = " .
+                      showsPrec d (getField @"externalMemoryFeatures" x) .
                         showString ", " .
-                          showString "vkExportFromImportedHandleTypes = " .
-                            showsPrec d (vkExportFromImportedHandleTypes x) .
+                          showString "exportFromImportedHandleTypes = " .
+                            showsPrec d (getField @"exportFromImportedHandleTypes" x) .
                               showString ", " .
-                                showString "vkCompatibleHandleTypes = " .
-                                  showsPrec d (vkCompatibleHandleTypes x) . showChar '}'
+                                showString "compatibleHandleTypes = " .
+                                  showsPrec d (getField @"compatibleHandleTypes" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfo.hsc
@@ -0,0 +1,194 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfo
+       (VkExternalMemoryBufferCreateInfo(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo            (VkBufferCreateInfo)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalMemoryBufferCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlags handleTypes;
+--   > } VkExternalMemoryBufferCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalMemoryBufferCreateInfo.html VkExternalMemoryBufferCreateInfo registry at www.khronos.org>
+data VkExternalMemoryBufferCreateInfo = VkExternalMemoryBufferCreateInfo## Addr##
+                                                                          ByteArray##
+
+instance Eq VkExternalMemoryBufferCreateInfo where
+        (VkExternalMemoryBufferCreateInfo## a _) ==
+          x@(VkExternalMemoryBufferCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalMemoryBufferCreateInfo where
+        (VkExternalMemoryBufferCreateInfo## a _) `compare`
+          x@(VkExternalMemoryBufferCreateInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalMemoryBufferCreateInfo where
+        unsafeAddr (VkExternalMemoryBufferCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalMemoryBufferCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalMemoryBufferCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfoKHR
+       (VkExternalMemoryBufferCreateInfo(..),
+        VkExternalMemoryBufferCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfo (VkExternalMemoryBufferCreateInfo (..))
+
+-- | Alias for `VkExternalMemoryBufferCreateInfo`
+type VkExternalMemoryBufferCreateInfoKHR =
+     VkExternalMemoryBufferCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryBufferCreateInfoKHR.hsc
+++ /dev/null
@@ -1,255 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfoKHR
-       (VkExternalMemoryBufferCreateInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkBufferCreateInfo               (VkBufferCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalMemoryBufferCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagsKHR handleTypes;
---   > } VkExternalMemoryBufferCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalMemoryBufferCreateInfoKHR.html VkExternalMemoryBufferCreateInfoKHR registry at www.khronos.org>
-data VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfoKHR## Addr##
-                                                                                ByteArray##
-
-instance Eq VkExternalMemoryBufferCreateInfoKHR where
-        (VkExternalMemoryBufferCreateInfoKHR## a _) ==
-          x@(VkExternalMemoryBufferCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryBufferCreateInfoKHR where
-        (VkExternalMemoryBufferCreateInfoKHR## a _) `compare`
-          x@(VkExternalMemoryBufferCreateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryBufferCreateInfoKHR where
-        sizeOf ~_ = #{size VkExternalMemoryBufferCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalMemoryBufferCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalMemoryBufferCreateInfoKHR
-         where
-        unsafeAddr (VkExternalMemoryBufferCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalMemoryBufferCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalMemoryBufferCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalMemoryBufferCreateInfoKHR where
-        type StructFields VkExternalMemoryBufferCreateInfoKHR =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalMemoryBufferCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryBufferCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryBufferCreateInfoKHR =
-             '[VkBufferCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalMemoryBufferCreateInfoKHR where
-        type VkSTypeMType VkExternalMemoryBufferCreateInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryBufferCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalMemoryBufferCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalMemoryBufferCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalMemoryBufferCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalMemoryBufferCreateInfoKHR where
-        type FieldType "sType" VkExternalMemoryBufferCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExternalMemoryBufferCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalMemoryBufferCreateInfoKHR =
-             #{offset VkExternalMemoryBufferCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkExternalMemoryBufferCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryBufferCreateInfoKHR, sType}
-
-instance CanReadField "sType" VkExternalMemoryBufferCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExternalMemoryBufferCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalMemoryBufferCreateInfoKHR where
-        type VkPNextMType VkExternalMemoryBufferCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryBufferCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalMemoryBufferCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalMemoryBufferCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalMemoryBufferCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalMemoryBufferCreateInfoKHR where
-        type FieldType "pNext" VkExternalMemoryBufferCreateInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkExternalMemoryBufferCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalMemoryBufferCreateInfoKHR =
-             #{offset VkExternalMemoryBufferCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExternalMemoryBufferCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryBufferCreateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkExternalMemoryBufferCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExternalMemoryBufferCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExternalMemoryBufferCreateInfoKHR where
-        type VkHandleTypesMType VkExternalMemoryBufferCreateInfoKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryBufferCreateInfoKHR, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExternalMemoryBufferCreateInfoKHR, handleTypes}
-
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExternalMemoryBufferCreateInfoKHR, handleTypes}
-
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExternalMemoryBufferCreateInfoKHR, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExternalMemoryBufferCreateInfoKHR where
-        type FieldType "handleTypes" VkExternalMemoryBufferCreateInfoKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-        type FieldOptional "handleTypes"
-               VkExternalMemoryBufferCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExternalMemoryBufferCreateInfoKHR
-             =
-             #{offset VkExternalMemoryBufferCreateInfoKHR, handleTypes}
-        type FieldIsArray "handleTypes" VkExternalMemoryBufferCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryBufferCreateInfoKHR, handleTypes}
-
-instance CanReadField "handleTypes"
-           VkExternalMemoryBufferCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkHandleTypes
-
-instance CanWriteField "handleTypes"
-           VkExternalMemoryBufferCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
-
-instance Show VkExternalMemoryBufferCreateInfoKHR where
-        showsPrec d x
-          = showString "VkExternalMemoryBufferCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfo.hsc
@@ -0,0 +1,191 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfo
+       (VkExternalMemoryImageCreateInfo(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo             (VkImageCreateInfo)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalMemoryImageCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlags handleTypes;
+--   > } VkExternalMemoryImageCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalMemoryImageCreateInfo.html VkExternalMemoryImageCreateInfo registry at www.khronos.org>
+data VkExternalMemoryImageCreateInfo = VkExternalMemoryImageCreateInfo## Addr##
+                                                                        ByteArray##
+
+instance Eq VkExternalMemoryImageCreateInfo where
+        (VkExternalMemoryImageCreateInfo## a _) ==
+          x@(VkExternalMemoryImageCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalMemoryImageCreateInfo where
+        (VkExternalMemoryImageCreateInfo## a _) `compare`
+          x@(VkExternalMemoryImageCreateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalMemoryImageCreateInfo where
+        unsafeAddr (VkExternalMemoryImageCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalMemoryImageCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalMemoryImageCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoKHR
+       (VkExternalMemoryImageCreateInfo(..),
+        VkExternalMemoryImageCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfo (VkExternalMemoryImageCreateInfo (..))
+
+-- | Alias for `VkExternalMemoryImageCreateInfo`
+type VkExternalMemoryImageCreateInfoKHR =
+     VkExternalMemoryImageCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoKHR.hsc
+++ /dev/null
@@ -1,252 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoKHR
-       (VkExternalMemoryImageCreateInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo                (VkImageCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalMemoryImageCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagsKHR handleTypes;
---   > } VkExternalMemoryImageCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalMemoryImageCreateInfoKHR.html VkExternalMemoryImageCreateInfoKHR registry at www.khronos.org>
-data VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfoKHR## Addr##
-                                                                              ByteArray##
-
-instance Eq VkExternalMemoryImageCreateInfoKHR where
-        (VkExternalMemoryImageCreateInfoKHR## a _) ==
-          x@(VkExternalMemoryImageCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryImageCreateInfoKHR where
-        (VkExternalMemoryImageCreateInfoKHR## a _) `compare`
-          x@(VkExternalMemoryImageCreateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryImageCreateInfoKHR where
-        sizeOf ~_ = #{size VkExternalMemoryImageCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalMemoryImageCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalMemoryImageCreateInfoKHR where
-        unsafeAddr (VkExternalMemoryImageCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalMemoryImageCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalMemoryImageCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalMemoryImageCreateInfoKHR where
-        type StructFields VkExternalMemoryImageCreateInfoKHR =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalMemoryImageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryImageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryImageCreateInfoKHR =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalMemoryImageCreateInfoKHR where
-        type VkSTypeMType VkExternalMemoryImageCreateInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalMemoryImageCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalMemoryImageCreateInfoKHR where
-        type FieldType "sType" VkExternalMemoryImageCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExternalMemoryImageCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalMemoryImageCreateInfoKHR =
-             #{offset VkExternalMemoryImageCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkExternalMemoryImageCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfoKHR, sType}
-
-instance CanReadField "sType" VkExternalMemoryImageCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExternalMemoryImageCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalMemoryImageCreateInfoKHR where
-        type VkPNextMType VkExternalMemoryImageCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalMemoryImageCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalMemoryImageCreateInfoKHR where
-        type FieldType "pNext" VkExternalMemoryImageCreateInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkExternalMemoryImageCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalMemoryImageCreateInfoKHR =
-             #{offset VkExternalMemoryImageCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExternalMemoryImageCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkExternalMemoryImageCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExternalMemoryImageCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExternalMemoryImageCreateInfoKHR where
-        type VkHandleTypesMType VkExternalMemoryImageCreateInfoKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoKHR, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExternalMemoryImageCreateInfoKHR, handleTypes}
-
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoKHR, handleTypes}
-
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoKHR, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExternalMemoryImageCreateInfoKHR where
-        type FieldType "handleTypes" VkExternalMemoryImageCreateInfoKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-        type FieldOptional "handleTypes" VkExternalMemoryImageCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExternalMemoryImageCreateInfoKHR =
-             #{offset VkExternalMemoryImageCreateInfoKHR, handleTypes}
-        type FieldIsArray "handleTypes" VkExternalMemoryImageCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfoKHR, handleTypes}
-
-instance CanReadField "handleTypes"
-           VkExternalMemoryImageCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkHandleTypes
-
-instance CanWriteField "handleTypes"
-           VkExternalMemoryImageCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
-
-instance Show VkExternalMemoryImageCreateInfoKHR where
-        showsPrec d x
-          = showString "VkExternalMemoryImageCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryImageCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoNV
        (VkExternalMemoryImageCreateInfoNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsNV (VkExternalMemoryHandleTypeFlagsNV)
 import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo               (VkImageCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExternalMemoryImageCreateInfoNV {
@@ -24,7 +24,7 @@
 --   >     VkExternalMemoryHandleTypeFlagsNV handleTypes;
 --   > } VkExternalMemoryImageCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalMemoryImageCreateInfoNV.html VkExternalMemoryImageCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalMemoryImageCreateInfoNV.html VkExternalMemoryImageCreateInfoNV registry at www.khronos.org>
 data VkExternalMemoryImageCreateInfoNV = VkExternalMemoryImageCreateInfoNV## Addr##
                                                                             ByteArray##
 
@@ -80,28 +80,6 @@
              '[VkImageCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalMemoryImageCreateInfoNV where
-        type VkSTypeMType VkExternalMemoryImageCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalMemoryImageCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkExternalMemoryImageCreateInfoNV where
         type FieldType "sType" VkExternalMemoryImageCreateInfoNV =
              VkStructureType
@@ -119,39 +97,22 @@
         fieldOffset
           = #{offset VkExternalMemoryImageCreateInfoNV, sType}
 
-instance CanReadField "sType" VkExternalMemoryImageCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkExternalMemoryImageCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalMemoryImageCreateInfoNV where
-        type VkPNextMType VkExternalMemoryImageCreateInfoNV = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkExternalMemoryImageCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalMemoryImageCreateInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkExternalMemoryImageCreateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkExternalMemoryImageCreateInfoNV where
@@ -170,40 +131,22 @@
         fieldOffset
           = #{offset VkExternalMemoryImageCreateInfoNV, pNext}
 
-instance CanReadField "pNext" VkExternalMemoryImageCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkExternalMemoryImageCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleTypes VkExternalMemoryImageCreateInfoNV where
-        type VkHandleTypesMType VkExternalMemoryImageCreateInfoNV =
-             VkExternalMemoryHandleTypeFlagsNV
-
-        {-# NOINLINE vkHandleTypes #-}
-        vkHandleTypes x
+         CanReadField "pNext" VkExternalMemoryImageCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, handleTypes})
-
-        {-# INLINE vkHandleTypesByteOffset #-}
-        vkHandleTypesByteOffset ~_
-          = #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
+              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, pNext})
 
-        {-# INLINE readVkHandleTypes #-}
-        readVkHandleTypes p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, pNext}
 
-        {-# INLINE writeVkHandleTypes #-}
-        writeVkHandleTypes p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkExternalMemoryImageCreateInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "handleTypes" VkExternalMemoryImageCreateInfoNV where
@@ -223,29 +166,31 @@
         fieldOffset
           = #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
 
-instance CanReadField "handleTypes"
-           VkExternalMemoryImageCreateInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleTypes
+instance {-# OVERLAPPING #-}
+         CanReadField "handleTypes" VkExternalMemoryImageCreateInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, handleTypes})
 
         {-# INLINE readField #-}
-        readField = readVkHandleTypes
+        readField p
+          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
 
-instance CanWriteField "handleTypes"
-           VkExternalMemoryImageCreateInfoNV
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleTypes" VkExternalMemoryImageCreateInfoNV where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleTypes
+        writeField p
+          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
 
 instance Show VkExternalMemoryImageCreateInfoNV where
         showsPrec d x
           = showString "VkExternalMemoryImageCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkHandleTypes = " .
-                            showsPrec d (vkHandleTypes x) . showChar '}'
+                          showString "handleTypes = " .
+                            showsPrec d (getField @"handleTypes" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryProperties.hsc
@@ -0,0 +1,215 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties
+       (VkExternalMemoryProperties(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlags    (VkExternalMemoryFeatureFlags)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlags)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalMemoryProperties {
+--   >     VkExternalMemoryFeatureFlags  externalMemoryFeatures;
+--   >     VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
+--   >     VkExternalMemoryHandleTypeFlags compatibleHandleTypes;
+--   > } VkExternalMemoryProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalMemoryProperties.html VkExternalMemoryProperties registry at www.khronos.org>
+data VkExternalMemoryProperties = VkExternalMemoryProperties## Addr##
+                                                              ByteArray##
+
+instance Eq VkExternalMemoryProperties where
+        (VkExternalMemoryProperties## a _) ==
+          x@(VkExternalMemoryProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalMemoryProperties where
+        (VkExternalMemoryProperties## a _) `compare`
+          x@(VkExternalMemoryProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalMemoryProperties where
+        unsafeAddr (VkExternalMemoryProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalMemoryProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalMemoryProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryPropertiesKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR
+       (VkExternalMemoryProperties(..), VkExternalMemoryPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties (VkExternalMemoryProperties (..))
+
+-- | Alias for `VkExternalMemoryProperties`
+type VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryPropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalMemoryPropertiesKHR.hsc
+++ /dev/null
@@ -1,258 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR
-       (VkExternalMemoryPropertiesKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagsKHR    (VkExternalMemoryFeatureFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalMemoryPropertiesKHR {
---   >     VkExternalMemoryFeatureFlagsKHR  externalMemoryFeatures;
---   >     VkExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
---   >     VkExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
---   > } VkExternalMemoryPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalMemoryPropertiesKHR.html VkExternalMemoryPropertiesKHR registry at www.khronos.org>
-data VkExternalMemoryPropertiesKHR = VkExternalMemoryPropertiesKHR## Addr##
-                                                                    ByteArray##
-
-instance Eq VkExternalMemoryPropertiesKHR where
-        (VkExternalMemoryPropertiesKHR## a _) ==
-          x@(VkExternalMemoryPropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryPropertiesKHR where
-        (VkExternalMemoryPropertiesKHR## a _) `compare`
-          x@(VkExternalMemoryPropertiesKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryPropertiesKHR where
-        sizeOf ~_ = #{size VkExternalMemoryPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalMemoryPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalMemoryPropertiesKHR where
-        unsafeAddr (VkExternalMemoryPropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalMemoryPropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalMemoryPropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalMemoryPropertiesKHR where
-        type StructFields VkExternalMemoryPropertiesKHR =
-             '["externalMemoryFeatures", "exportFromImportedHandleTypes", -- ' closing tick for hsc2hs
-               "compatibleHandleTypes"]
-        type CUnionType VkExternalMemoryPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryPropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryPropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkExternalMemoryFeatures VkExternalMemoryPropertiesKHR where
-        type VkExternalMemoryFeaturesMType VkExternalMemoryPropertiesKHR =
-             VkExternalMemoryFeatureFlagsKHR
-
-        {-# NOINLINE vkExternalMemoryFeatures #-}
-        vkExternalMemoryFeatures x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryPropertiesKHR, externalMemoryFeatures})
-
-        {-# INLINE vkExternalMemoryFeaturesByteOffset #-}
-        vkExternalMemoryFeaturesByteOffset ~_
-          = #{offset VkExternalMemoryPropertiesKHR, externalMemoryFeatures}
-
-        {-# INLINE readVkExternalMemoryFeatures #-}
-        readVkExternalMemoryFeatures p
-          = peekByteOff p #{offset VkExternalMemoryPropertiesKHR, externalMemoryFeatures}
-
-        {-# INLINE writeVkExternalMemoryFeatures #-}
-        writeVkExternalMemoryFeatures p
-          = pokeByteOff p #{offset VkExternalMemoryPropertiesKHR, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryFeatures" VkExternalMemoryPropertiesKHR
-         where
-        type FieldType "externalMemoryFeatures"
-               VkExternalMemoryPropertiesKHR
-             = VkExternalMemoryFeatureFlagsKHR
-        type FieldOptional "externalMemoryFeatures"
-               VkExternalMemoryPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryFeatures"
-               VkExternalMemoryPropertiesKHR
-             =
-             #{offset VkExternalMemoryPropertiesKHR, externalMemoryFeatures}
-        type FieldIsArray "externalMemoryFeatures"
-               VkExternalMemoryPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryPropertiesKHR, externalMemoryFeatures}
-
-instance CanReadField "externalMemoryFeatures"
-           VkExternalMemoryPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExternalMemoryFeatures
-
-        {-# INLINE readField #-}
-        readField = readVkExternalMemoryFeatures
-
-instance {-# OVERLAPPING #-}
-         HasVkExportFromImportedHandleTypes VkExternalMemoryPropertiesKHR
-         where
-        type VkExportFromImportedHandleTypesMType
-               VkExternalMemoryPropertiesKHR
-             = VkExternalMemoryHandleTypeFlagsKHR
-
-        {-# NOINLINE vkExportFromImportedHandleTypes #-}
-        vkExportFromImportedHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryPropertiesKHR, exportFromImportedHandleTypes})
-
-        {-# INLINE vkExportFromImportedHandleTypesByteOffset #-}
-        vkExportFromImportedHandleTypesByteOffset ~_
-          = #{offset VkExternalMemoryPropertiesKHR, exportFromImportedHandleTypes}
-
-        {-# INLINE readVkExportFromImportedHandleTypes #-}
-        readVkExportFromImportedHandleTypes p
-          = peekByteOff p #{offset VkExternalMemoryPropertiesKHR, exportFromImportedHandleTypes}
-
-        {-# INLINE writeVkExportFromImportedHandleTypes #-}
-        writeVkExportFromImportedHandleTypes p
-          = pokeByteOff p #{offset VkExternalMemoryPropertiesKHR, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes"
-           VkExternalMemoryPropertiesKHR
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             = VkExternalMemoryHandleTypeFlagsKHR
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             =
-             #{offset VkExternalMemoryPropertiesKHR, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryPropertiesKHR, exportFromImportedHandleTypes}
-
-instance CanReadField "exportFromImportedHandleTypes"
-           VkExternalMemoryPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExportFromImportedHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkExportFromImportedHandleTypes
-
-instance {-# OVERLAPPING #-}
-         HasVkCompatibleHandleTypes VkExternalMemoryPropertiesKHR where
-        type VkCompatibleHandleTypesMType VkExternalMemoryPropertiesKHR =
-             VkExternalMemoryHandleTypeFlagsKHR
-
-        {-# NOINLINE vkCompatibleHandleTypes #-}
-        vkCompatibleHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryPropertiesKHR, compatibleHandleTypes})
-
-        {-# INLINE vkCompatibleHandleTypesByteOffset #-}
-        vkCompatibleHandleTypesByteOffset ~_
-          = #{offset VkExternalMemoryPropertiesKHR, compatibleHandleTypes}
-
-        {-# INLINE readVkCompatibleHandleTypes #-}
-        readVkCompatibleHandleTypes p
-          = peekByteOff p #{offset VkExternalMemoryPropertiesKHR, compatibleHandleTypes}
-
-        {-# INLINE writeVkCompatibleHandleTypes #-}
-        writeVkCompatibleHandleTypes p
-          = pokeByteOff p #{offset VkExternalMemoryPropertiesKHR, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalMemoryPropertiesKHR
-         where
-        type FieldType "compatibleHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             = VkExternalMemoryHandleTypeFlagsKHR
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             =
-             #{offset VkExternalMemoryPropertiesKHR, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes"
-               VkExternalMemoryPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryPropertiesKHR, compatibleHandleTypes}
-
-instance CanReadField "compatibleHandleTypes"
-           VkExternalMemoryPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCompatibleHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkCompatibleHandleTypes
-
-instance Show VkExternalMemoryPropertiesKHR where
-        showsPrec d x
-          = showString "VkExternalMemoryPropertiesKHR {" .
-              showString "vkExternalMemoryFeatures = " .
-                showsPrec d (vkExternalMemoryFeatures x) .
-                  showString ", " .
-                    showString "vkExportFromImportedHandleTypes = " .
-                      showsPrec d (vkExportFromImportedHandleTypes x) .
-                        showString ", " .
-                          showString "vkCompatibleHandleTypes = " .
-                            showsPrec d (vkCompatibleHandleTypes x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphoreProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphoreProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphoreProperties.hsc
@@ -0,0 +1,299 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties
+       (VkExternalSemaphoreProperties(..)) where
+import           Foreign.Storable                                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlags    (VkExternalSemaphoreFeatureFlags)
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+
+-- | > typedef struct VkExternalSemaphoreProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;
+--   >     VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes;
+--   >     VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures;
+--   > } VkExternalSemaphoreProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkExternalSemaphoreProperties.html VkExternalSemaphoreProperties registry at www.khronos.org>
+data VkExternalSemaphoreProperties = VkExternalSemaphoreProperties## Addr##
+                                                                    ByteArray##
+
+instance Eq VkExternalSemaphoreProperties where
+        (VkExternalSemaphoreProperties## a _) ==
+          x@(VkExternalSemaphoreProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkExternalSemaphoreProperties where
+        (VkExternalSemaphoreProperties## a _) `compare`
+          x@(VkExternalSemaphoreProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkExternalSemaphoreProperties where
+        unsafeAddr (VkExternalSemaphoreProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkExternalSemaphoreProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkExternalSemaphoreProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphorePropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphorePropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphorePropertiesKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkExternalSemaphorePropertiesKHR
+       (VkExternalSemaphoreProperties(..),
+        VkExternalSemaphorePropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties (VkExternalSemaphoreProperties (..))
+
+-- | Alias for `VkExternalSemaphoreProperties`
+type VkExternalSemaphorePropertiesKHR =
+     VkExternalSemaphoreProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphorePropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphorePropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkExternalSemaphorePropertiesKHR.hsc
+++ /dev/null
@@ -1,368 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkExternalSemaphorePropertiesKHR
-       (VkExternalSemaphorePropertiesKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagsKHR
-                                                                                   (VkExternalSemaphoreFeatureFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalSemaphorePropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
---   >     VkExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
---   >     VkExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
---   > } VkExternalSemaphorePropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkExternalSemaphorePropertiesKHR.html VkExternalSemaphorePropertiesKHR registry at www.khronos.org>
-data VkExternalSemaphorePropertiesKHR = VkExternalSemaphorePropertiesKHR## Addr##
-                                                                          ByteArray##
-
-instance Eq VkExternalSemaphorePropertiesKHR where
-        (VkExternalSemaphorePropertiesKHR## a _) ==
-          x@(VkExternalSemaphorePropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalSemaphorePropertiesKHR where
-        (VkExternalSemaphorePropertiesKHR## a _) `compare`
-          x@(VkExternalSemaphorePropertiesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalSemaphorePropertiesKHR where
-        sizeOf ~_ = #{size VkExternalSemaphorePropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalSemaphorePropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkExternalSemaphorePropertiesKHR where
-        unsafeAddr (VkExternalSemaphorePropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkExternalSemaphorePropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkExternalSemaphorePropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkExternalSemaphorePropertiesKHR where
-        type StructFields VkExternalSemaphorePropertiesKHR =
-             '["sType", "pNext", "exportFromImportedHandleTypes", -- ' closing tick for hsc2hs
-               "compatibleHandleTypes", "externalSemaphoreFeatures"]
-        type CUnionType VkExternalSemaphorePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalSemaphorePropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalSemaphorePropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkExternalSemaphorePropertiesKHR where
-        type VkSTypeMType VkExternalSemaphorePropertiesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphorePropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkExternalSemaphorePropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkExternalSemaphorePropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkExternalSemaphorePropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalSemaphorePropertiesKHR where
-        type FieldType "sType" VkExternalSemaphorePropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExternalSemaphorePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalSemaphorePropertiesKHR =
-             #{offset VkExternalSemaphorePropertiesKHR, sType}
-        type FieldIsArray "sType" VkExternalSemaphorePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphorePropertiesKHR, sType}
-
-instance CanReadField "sType" VkExternalSemaphorePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkExternalSemaphorePropertiesKHR where
-        type VkPNextMType VkExternalSemaphorePropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphorePropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkExternalSemaphorePropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkExternalSemaphorePropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkExternalSemaphorePropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalSemaphorePropertiesKHR where
-        type FieldType "pNext" VkExternalSemaphorePropertiesKHR = Ptr Void
-        type FieldOptional "pNext" VkExternalSemaphorePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalSemaphorePropertiesKHR =
-             #{offset VkExternalSemaphorePropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkExternalSemaphorePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphorePropertiesKHR, pNext}
-
-instance CanReadField "pNext" VkExternalSemaphorePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkExportFromImportedHandleTypes VkExternalSemaphorePropertiesKHR
-         where
-        type VkExportFromImportedHandleTypesMType
-               VkExternalSemaphorePropertiesKHR
-             = VkExternalSemaphoreHandleTypeFlagsKHR
-
-        {-# NOINLINE vkExportFromImportedHandleTypes #-}
-        vkExportFromImportedHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphorePropertiesKHR, exportFromImportedHandleTypes})
-
-        {-# INLINE vkExportFromImportedHandleTypesByteOffset #-}
-        vkExportFromImportedHandleTypesByteOffset ~_
-          = #{offset VkExternalSemaphorePropertiesKHR, exportFromImportedHandleTypes}
-
-        {-# INLINE readVkExportFromImportedHandleTypes #-}
-        readVkExportFromImportedHandleTypes p
-          = peekByteOff p #{offset VkExternalSemaphorePropertiesKHR, exportFromImportedHandleTypes}
-
-        {-# INLINE writeVkExportFromImportedHandleTypes #-}
-        writeVkExportFromImportedHandleTypes p
-          = pokeByteOff p #{offset VkExternalSemaphorePropertiesKHR, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes"
-           VkExternalSemaphorePropertiesKHR
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             = VkExternalSemaphoreHandleTypeFlagsKHR
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             =
-             #{offset VkExternalSemaphorePropertiesKHR, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphorePropertiesKHR, exportFromImportedHandleTypes}
-
-instance CanReadField "exportFromImportedHandleTypes"
-           VkExternalSemaphorePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExportFromImportedHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkExportFromImportedHandleTypes
-
-instance {-# OVERLAPPING #-}
-         HasVkCompatibleHandleTypes VkExternalSemaphorePropertiesKHR where
-        type VkCompatibleHandleTypesMType VkExternalSemaphorePropertiesKHR
-             = VkExternalSemaphoreHandleTypeFlagsKHR
-
-        {-# NOINLINE vkCompatibleHandleTypes #-}
-        vkCompatibleHandleTypes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphorePropertiesKHR, compatibleHandleTypes})
-
-        {-# INLINE vkCompatibleHandleTypesByteOffset #-}
-        vkCompatibleHandleTypesByteOffset ~_
-          = #{offset VkExternalSemaphorePropertiesKHR, compatibleHandleTypes}
-
-        {-# INLINE readVkCompatibleHandleTypes #-}
-        readVkCompatibleHandleTypes p
-          = peekByteOff p #{offset VkExternalSemaphorePropertiesKHR, compatibleHandleTypes}
-
-        {-# INLINE writeVkCompatibleHandleTypes #-}
-        writeVkCompatibleHandleTypes p
-          = pokeByteOff p #{offset VkExternalSemaphorePropertiesKHR, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalSemaphorePropertiesKHR
-         where
-        type FieldType "compatibleHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             = VkExternalSemaphoreHandleTypeFlagsKHR
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             =
-             #{offset VkExternalSemaphorePropertiesKHR, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes"
-               VkExternalSemaphorePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphorePropertiesKHR, compatibleHandleTypes}
-
-instance CanReadField "compatibleHandleTypes"
-           VkExternalSemaphorePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCompatibleHandleTypes
-
-        {-# INLINE readField #-}
-        readField = readVkCompatibleHandleTypes
-
-instance {-# OVERLAPPING #-}
-         HasVkExternalSemaphoreFeatures VkExternalSemaphorePropertiesKHR
-         where
-        type VkExternalSemaphoreFeaturesMType
-               VkExternalSemaphorePropertiesKHR
-             = VkExternalSemaphoreFeatureFlagsKHR
-
-        {-# NOINLINE vkExternalSemaphoreFeatures #-}
-        vkExternalSemaphoreFeatures x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphorePropertiesKHR, externalSemaphoreFeatures})
-
-        {-# INLINE vkExternalSemaphoreFeaturesByteOffset #-}
-        vkExternalSemaphoreFeaturesByteOffset ~_
-          = #{offset VkExternalSemaphorePropertiesKHR, externalSemaphoreFeatures}
-
-        {-# INLINE readVkExternalSemaphoreFeatures #-}
-        readVkExternalSemaphoreFeatures p
-          = peekByteOff p #{offset VkExternalSemaphorePropertiesKHR, externalSemaphoreFeatures}
-
-        {-# INLINE writeVkExternalSemaphoreFeatures #-}
-        writeVkExternalSemaphoreFeatures p
-          = pokeByteOff p #{offset VkExternalSemaphorePropertiesKHR, externalSemaphoreFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalSemaphoreFeatures"
-           VkExternalSemaphorePropertiesKHR
-         where
-        type FieldType "externalSemaphoreFeatures"
-               VkExternalSemaphorePropertiesKHR
-             = VkExternalSemaphoreFeatureFlagsKHR
-        type FieldOptional "externalSemaphoreFeatures"
-               VkExternalSemaphorePropertiesKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "externalSemaphoreFeatures"
-               VkExternalSemaphorePropertiesKHR
-             =
-             #{offset VkExternalSemaphorePropertiesKHR, externalSemaphoreFeatures}
-        type FieldIsArray "externalSemaphoreFeatures"
-               VkExternalSemaphorePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphorePropertiesKHR, externalSemaphoreFeatures}
-
-instance CanReadField "externalSemaphoreFeatures"
-           VkExternalSemaphorePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkExternalSemaphoreFeatures
-
-        {-# INLINE readField #-}
-        readField = readVkExternalSemaphoreFeatures
-
-instance Show VkExternalSemaphorePropertiesKHR where
-        showsPrec d x
-          = showString "VkExternalSemaphorePropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkExportFromImportedHandleTypes = " .
-                            showsPrec d (vkExportFromImportedHandleTypes x) .
-                              showString ", " .
-                                showString "vkCompatibleHandleTypes = " .
-                                  showsPrec d (vkCompatibleHandleTypes x) .
-                                    showString ", " .
-                                      showString "vkExternalSemaphoreFeatures = " .
-                                        showsPrec d (vkExternalSemaphoreFeatures x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFenceCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFenceCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkFenceCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFenceCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkFenceCreateInfo
        (VkFenceCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkFenceCreateFlags (VkFenceCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFenceCreateInfo {
@@ -23,7 +23,7 @@
 --   >     VkFenceCreateFlags     flags;
 --   > } VkFenceCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFenceCreateInfo.html VkFenceCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFenceCreateInfo.html VkFenceCreateInfo registry at www.khronos.org>
 data VkFenceCreateInfo = VkFenceCreateInfo## Addr## ByteArray##
 
 instance Eq VkFenceCreateInfo where
@@ -70,26 +70,6 @@
         type ReturnedOnly VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkFenceCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkFenceCreateInfo where
-        type VkSTypeMType VkFenceCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkFenceCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkFenceCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkFenceCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkFenceCreateInfo
          where
         type FieldType "sType" VkFenceCreateInfo = VkStructureType
@@ -104,36 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceCreateInfo, sType}
 
-instance CanReadField "sType" VkFenceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkFenceCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkFenceCreateInfo, sType}
 
-instance CanWriteField "sType" VkFenceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkFenceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkFenceCreateInfo where
-        type VkPNextMType VkFenceCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkFenceCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkFenceCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkFenceCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkFenceCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkFenceCreateInfo
          where
@@ -149,36 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceCreateInfo, pNext}
 
-instance CanReadField "pNext" VkFenceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkFenceCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkFenceCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkFenceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkFenceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkFenceCreateInfo where
-        type VkFlagsMType VkFenceCreateInfo = VkFenceCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkFenceCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkFenceCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkFenceCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkFenceCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkFenceCreateInfo
          where
@@ -194,24 +146,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceCreateInfo, flags}
 
-instance CanReadField "flags" VkFenceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-} CanReadField "flags" VkFenceCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkFenceCreateInfo, flags}
 
-instance CanWriteField "flags" VkFenceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkFenceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        writeField p
+          = pokeByteOff p #{offset VkFenceCreateInfo, flags}
 
 instance Show VkFenceCreateInfo where
         showsPrec d x
           = showString "VkFenceCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " . showsPrec d (vkFlags x) . showChar '}'
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetFdInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetFdInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetFdInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetFdInfoKHR.hsc
@@ -5,27 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkFenceGetFdInfoKHR
        (VkFenceGetFdInfoKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
+import           Foreign.Storable                                          (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                (VkFence)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                             (VkFence)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFenceGetFdInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                            pNext;
 --   >     VkFence                                fence;
---   >     VkExternalFenceHandleTypeFlagBitsKHR   handleType;
+--   >     VkExternalFenceHandleTypeFlagBits   handleType;
 --   > } VkFenceGetFdInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFenceGetFdInfoKHR.html VkFenceGetFdInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFenceGetFdInfoKHR.html VkFenceGetFdInfoKHR registry at www.khronos.org>
 data VkFenceGetFdInfoKHR = VkFenceGetFdInfoKHR## Addr## ByteArray##
 
 instance Eq VkFenceGetFdInfoKHR where
@@ -73,26 +73,6 @@
         type ReturnedOnly VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkFenceGetFdInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkFenceGetFdInfoKHR where
-        type VkSTypeMType VkFenceGetFdInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkFenceGetFdInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkFenceGetFdInfoKHR
          where
         type FieldType "sType" VkFenceGetFdInfoKHR = VkStructureType
@@ -107,36 +87,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceGetFdInfoKHR, sType}
 
-instance CanReadField "sType" VkFenceGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkFenceGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkFenceGetFdInfoKHR, sType}
 
-instance CanWriteField "sType" VkFenceGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkFenceGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkFenceGetFdInfoKHR where
-        type VkPNextMType VkFenceGetFdInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkFenceGetFdInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkFenceGetFdInfoKHR
          where
@@ -152,36 +118,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceGetFdInfoKHR, pNext}
 
-instance CanReadField "pNext" VkFenceGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkFenceGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkFenceGetFdInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkFenceGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkFenceGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFence VkFenceGetFdInfoKHR where
-        type VkFenceMType VkFenceGetFdInfoKHR = VkFence
-
-        {-# NOINLINE vkFence #-}
-        vkFence x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, fence})
-
-        {-# INLINE vkFenceByteOffset #-}
-        vkFenceByteOffset ~_
-          = #{offset VkFenceGetFdInfoKHR, fence}
-
-        {-# INLINE readVkFence #-}
-        readVkFence p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, fence}
-
-        {-# INLINE writeVkFence #-}
-        writeVkFence p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, fence}
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-} HasField "fence" VkFenceGetFdInfoKHR
          where
@@ -197,43 +149,27 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceGetFdInfoKHR, fence}
 
-instance CanReadField "fence" VkFenceGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFence
+instance {-# OVERLAPPING #-}
+         CanReadField "fence" VkFenceGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, fence})
 
         {-# INLINE readField #-}
-        readField = readVkFence
+        readField p
+          = peekByteOff p #{offset VkFenceGetFdInfoKHR, fence}
 
-instance CanWriteField "fence" VkFenceGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "fence" VkFenceGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFence
-
-instance {-# OVERLAPPING #-} HasVkHandleType VkFenceGetFdInfoKHR
-         where
-        type VkHandleTypeMType VkFenceGetFdInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkFenceGetFdInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, handleType}
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, fence}
 
 instance {-# OVERLAPPING #-}
          HasField "handleType" VkFenceGetFdInfoKHR where
         type FieldType "handleType" VkFenceGetFdInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
+             VkExternalFenceHandleTypeFlagBits
         type FieldOptional "handleType" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkFenceGetFdInfoKHR =
              #{offset VkFenceGetFdInfoKHR, handleType}
@@ -245,28 +181,34 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFenceGetFdInfoKHR, handleType}
 
-instance CanReadField "handleType" VkFenceGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkFenceGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkFenceGetFdInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkFenceGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkFenceGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, handleType}
 
 instance Show VkFenceGetFdInfoKHR where
         showsPrec d x
           = showString "VkFenceGetFdInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFence = " .
-                            showsPrec d (vkFence x) .
+                          showString "fence = " .
+                            showsPrec d (getField @"fence" x) .
                               showString ", " .
-                                showString "vkHandleType = " .
-                                  showsPrec d (vkHandleType x) . showChar '}'
+                                showString "handleType = " .
+                                  showsPrec d (getField @"handleType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFenceGetWin32HandleInfoKHR.hsc
@@ -5,27 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkFenceGetWin32HandleInfoKHR
        (VkFenceGetWin32HandleInfoKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
+import           Foreign.Storable                                          (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                (VkFence)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                             (VkFence)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFenceGetWin32HandleInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                            pNext;
 --   >     VkFence                                fence;
---   >     VkExternalFenceHandleTypeFlagBitsKHR   handleType;
+--   >     VkExternalFenceHandleTypeFlagBits   handleType;
 --   > } VkFenceGetWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFenceGetWin32HandleInfoKHR.html VkFenceGetWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFenceGetWin32HandleInfoKHR.html VkFenceGetWin32HandleInfoKHR registry at www.khronos.org>
 data VkFenceGetWin32HandleInfoKHR = VkFenceGetWin32HandleInfoKHR## Addr##
                                                                   ByteArray##
 
@@ -79,27 +79,6 @@
         type StructExtends VkFenceGetWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkFenceGetWin32HandleInfoKHR where
-        type VkSTypeMType VkFenceGetWin32HandleInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkFenceGetWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkFenceGetWin32HandleInfoKHR where
         type FieldType "sType" VkFenceGetWin32HandleInfoKHR =
              VkStructureType
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkFenceGetWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkFenceGetWin32HandleInfoKHR where
-        type VkPNextMType VkFenceGetWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkFenceGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkFenceGetWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkFenceGetWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkFenceGetWin32HandleInfoKHR where
@@ -162,37 +126,22 @@
         fieldOffset
           = #{offset VkFenceGetWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFence VkFenceGetWin32HandleInfoKHR where
-        type VkFenceMType VkFenceGetWin32HandleInfoKHR = VkFence
-
-        {-# NOINLINE vkFence #-}
-        vkFence x
+         CanReadField "pNext" VkFenceGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, fence})
-
-        {-# INLINE vkFenceByteOffset #-}
-        vkFenceByteOffset ~_
-          = #{offset VkFenceGetWin32HandleInfoKHR, fence}
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkFence #-}
-        readVkFence p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, fence}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkFence #-}
-        writeVkFence p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, fence}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkFenceGetWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "fence" VkFenceGetWin32HandleInfoKHR where
@@ -209,43 +158,27 @@
         fieldOffset
           = #{offset VkFenceGetWin32HandleInfoKHR, fence}
 
-instance CanReadField "fence" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFence
-
-        {-# INLINE readField #-}
-        readField = readVkFence
-
-instance CanWriteField "fence" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFence
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkFenceGetWin32HandleInfoKHR where
-        type VkHandleTypeMType VkFenceGetWin32HandleInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "fence" VkFenceGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkFenceGetWin32HandleInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, fence})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, fence}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, handleType}
+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 =
-             VkExternalFenceHandleTypeFlagBitsKHR
+             VkExternalFenceHandleTypeFlagBits
         type FieldOptional "handleType" VkFenceGetWin32HandleInfoKHR =
              'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkFenceGetWin32HandleInfoKHR =
@@ -260,30 +193,34 @@
         fieldOffset
           = #{offset VkFenceGetWin32HandleInfoKHR, handleType}
 
-instance CanReadField "handleType" VkFenceGetWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkFenceGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkFenceGetWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkFenceGetWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
+        writeField p
+          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, handleType}
 
 instance Show VkFenceGetWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkFenceGetWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFence = " .
-                            showsPrec d (vkFence x) .
+                          showString "fence = " .
+                            showsPrec d (getField @"fence" x) .
                               showString ", " .
-                                showString "vkHandleType = " .
-                                  showsPrec d (vkHandleType x) . showChar '}'
+                                showString "handleType = " .
+                                  showsPrec d (getField @"handleType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkFormatProperties
        (VkFormatProperties(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags (VkFormatFeatureFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFormatProperties {
@@ -22,7 +22,7 @@
 --   >     VkFormatFeatureFlags   bufferFeatures;
 --   > } VkFormatProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFormatProperties.html VkFormatProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFormatProperties.html VkFormatProperties registry at www.khronos.org>
 data VkFormatProperties = VkFormatProperties## Addr## ByteArray##
 
 instance Eq VkFormatProperties where
@@ -72,28 +72,6 @@
         type StructExtends VkFormatProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkLinearTilingFeatures VkFormatProperties where
-        type VkLinearTilingFeaturesMType VkFormatProperties =
-             VkFormatFeatureFlags
-
-        {-# NOINLINE vkLinearTilingFeatures #-}
-        vkLinearTilingFeatures x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, linearTilingFeatures})
-
-        {-# INLINE vkLinearTilingFeaturesByteOffset #-}
-        vkLinearTilingFeaturesByteOffset ~_
-          = #{offset VkFormatProperties, linearTilingFeatures}
-
-        {-# INLINE readVkLinearTilingFeatures #-}
-        readVkLinearTilingFeatures p
-          = peekByteOff p #{offset VkFormatProperties, linearTilingFeatures}
-
-        {-# INLINE writeVkLinearTilingFeatures #-}
-        writeVkLinearTilingFeatures p
-          = pokeByteOff p #{offset VkFormatProperties, linearTilingFeatures}
-
-instance {-# OVERLAPPING #-}
          HasField "linearTilingFeatures" VkFormatProperties where
         type FieldType "linearTilingFeatures" VkFormatProperties =
              VkFormatFeatureFlags
@@ -111,35 +89,22 @@
         fieldOffset
           = #{offset VkFormatProperties, linearTilingFeatures}
 
-instance CanReadField "linearTilingFeatures" VkFormatProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkLinearTilingFeatures
-
-        {-# INLINE readField #-}
-        readField = readVkLinearTilingFeatures
-
 instance {-# OVERLAPPING #-}
-         HasVkOptimalTilingFeatures VkFormatProperties where
-        type VkOptimalTilingFeaturesMType VkFormatProperties =
-             VkFormatFeatureFlags
-
-        {-# NOINLINE vkOptimalTilingFeatures #-}
-        vkOptimalTilingFeatures x
+         CanReadField "linearTilingFeatures" VkFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, optimalTilingFeatures})
-
-        {-# INLINE vkOptimalTilingFeaturesByteOffset #-}
-        vkOptimalTilingFeaturesByteOffset ~_
-          = #{offset VkFormatProperties, optimalTilingFeatures}
+              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, linearTilingFeatures})
 
-        {-# INLINE readVkOptimalTilingFeatures #-}
-        readVkOptimalTilingFeatures p
-          = peekByteOff p #{offset VkFormatProperties, optimalTilingFeatures}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFormatProperties, linearTilingFeatures}
 
-        {-# INLINE writeVkOptimalTilingFeatures #-}
-        writeVkOptimalTilingFeatures p
-          = pokeByteOff p #{offset VkFormatProperties, optimalTilingFeatures}
+instance {-# OVERLAPPING #-}
+         CanWriteField "linearTilingFeatures" VkFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFormatProperties, linearTilingFeatures}
 
 instance {-# OVERLAPPING #-}
          HasField "optimalTilingFeatures" VkFormatProperties where
@@ -159,35 +124,22 @@
         fieldOffset
           = #{offset VkFormatProperties, optimalTilingFeatures}
 
-instance CanReadField "optimalTilingFeatures" VkFormatProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkOptimalTilingFeatures
-
-        {-# INLINE readField #-}
-        readField = readVkOptimalTilingFeatures
-
-instance {-# OVERLAPPING #-} HasVkBufferFeatures VkFormatProperties
-         where
-        type VkBufferFeaturesMType VkFormatProperties =
-             VkFormatFeatureFlags
-
-        {-# NOINLINE vkBufferFeatures #-}
-        vkBufferFeatures x
+instance {-# OVERLAPPING #-}
+         CanReadField "optimalTilingFeatures" VkFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, bufferFeatures})
-
-        {-# INLINE vkBufferFeaturesByteOffset #-}
-        vkBufferFeaturesByteOffset ~_
-          = #{offset VkFormatProperties, bufferFeatures}
+              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, optimalTilingFeatures})
 
-        {-# INLINE readVkBufferFeatures #-}
-        readVkBufferFeatures p
-          = peekByteOff p #{offset VkFormatProperties, bufferFeatures}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFormatProperties, optimalTilingFeatures}
 
-        {-# INLINE writeVkBufferFeatures #-}
-        writeVkBufferFeatures p
-          = pokeByteOff p #{offset VkFormatProperties, bufferFeatures}
+instance {-# OVERLAPPING #-}
+         CanWriteField "optimalTilingFeatures" VkFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFormatProperties, optimalTilingFeatures}
 
 instance {-# OVERLAPPING #-}
          HasField "bufferFeatures" VkFormatProperties where
@@ -205,21 +157,31 @@
         fieldOffset
           = #{offset VkFormatProperties, bufferFeatures}
 
-instance CanReadField "bufferFeatures" VkFormatProperties where
-        {-# INLINE getField #-}
-        getField = vkBufferFeatures
+instance {-# OVERLAPPING #-}
+         CanReadField "bufferFeatures" VkFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, bufferFeatures})
 
         {-# INLINE readField #-}
-        readField = readVkBufferFeatures
+        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 "vkLinearTilingFeatures = " .
-                showsPrec d (vkLinearTilingFeatures x) .
+              showString "linearTilingFeatures = " .
+                showsPrec d (getField @"linearTilingFeatures" x) .
                   showString ", " .
-                    showString "vkOptimalTilingFeatures = " .
-                      showsPrec d (vkOptimalTilingFeatures x) .
+                    showString "optimalTilingFeatures = " .
+                      showsPrec d (getField @"optimalTilingFeatures" x) .
                         showString ", " .
-                          showString "vkBufferFeatures = " .
-                            showsPrec d (vkBufferFeatures x) . showChar '}'
+                          showString "bufferFeatures = " .
+                            showsPrec d (getField @"bufferFeatures" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2.hsc
@@ -0,0 +1,179 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkFormatProperties2
+       (VkFormatProperties2(..)) where
+import           Foreign.Storable                                (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkFormatProperties (VkFormatProperties)
+import           System.IO.Unsafe                                (unsafeDupablePerformIO)
+
+-- | > typedef struct VkFormatProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkFormatProperties               formatProperties;
+--   > } VkFormatProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFormatProperties2.html VkFormatProperties2 registry at www.khronos.org>
+data VkFormatProperties2 = VkFormatProperties2## Addr## ByteArray##
+
+instance Eq VkFormatProperties2 where
+        (VkFormatProperties2## a _) == x@(VkFormatProperties2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkFormatProperties2 where
+        (VkFormatProperties2## a _) `compare` x@(VkFormatProperties2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkFormatProperties2 where
+        unsafeAddr (VkFormatProperties2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkFormatProperties2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkFormatProperties2## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2KHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkFormatProperties2KHR
+       (VkFormatProperties2(..), VkFormatProperties2KHR) where
+import           Graphics.Vulkan.Types.Struct.VkFormatProperties2 (VkFormatProperties2 (..))
+
+-- | Alias for `VkFormatProperties2`
+type VkFormatProperties2KHR = VkFormatProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkFormatProperties2KHR.hsc
+++ /dev/null
@@ -1,217 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkFormatProperties2KHR
-       (VkFormatProperties2KHR(..)) where
-import           Foreign.Storable                                (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkFormatProperties (VkFormatProperties)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                (unsafeDupablePerformIO)
-
--- | > typedef struct VkFormatProperties2KHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkFormatProperties               formatProperties;
---   > } VkFormatProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFormatProperties2KHR.html VkFormatProperties2KHR registry at www.khronos.org>
-data VkFormatProperties2KHR = VkFormatProperties2KHR## Addr##
-                                                      ByteArray##
-
-instance Eq VkFormatProperties2KHR where
-        (VkFormatProperties2KHR## a _) == x@(VkFormatProperties2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFormatProperties2KHR where
-        (VkFormatProperties2KHR## a _) `compare`
-          x@(VkFormatProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkFormatProperties2KHR where
-        sizeOf ~_ = #{size VkFormatProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkFormatProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkFormatProperties2KHR where
-        unsafeAddr (VkFormatProperties2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkFormatProperties2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkFormatProperties2KHR## (plusAddr## (byteArrayContents## b) off) b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkFormatProperties2KHR where
-        type StructFields VkFormatProperties2KHR =
-             '["sType", "pNext", "formatProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFormatProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkFormatProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkFormatProperties2KHR
-         where
-        type VkSTypeMType VkFormatProperties2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkFormatProperties2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkFormatProperties2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkFormatProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkFormatProperties2KHR where
-        type FieldType "sType" VkFormatProperties2KHR = VkStructureType
-        type FieldOptional "sType" VkFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkFormatProperties2KHR =
-             #{offset VkFormatProperties2KHR, sType}
-        type FieldIsArray "sType" VkFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFormatProperties2KHR, sType}
-
-instance CanReadField "sType" VkFormatProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkFormatProperties2KHR
-         where
-        type VkPNextMType VkFormatProperties2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkFormatProperties2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkFormatProperties2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkFormatProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkFormatProperties2KHR where
-        type FieldType "pNext" VkFormatProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkFormatProperties2KHR =
-             #{offset VkFormatProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFormatProperties2KHR, pNext}
-
-instance CanReadField "pNext" VkFormatProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFormatProperties VkFormatProperties2KHR where
-        type VkFormatPropertiesMType VkFormatProperties2KHR =
-             VkFormatProperties
-
-        {-# NOINLINE vkFormatProperties #-}
-        vkFormatProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties2KHR, formatProperties})
-
-        {-# INLINE vkFormatPropertiesByteOffset #-}
-        vkFormatPropertiesByteOffset ~_
-          = #{offset VkFormatProperties2KHR, formatProperties}
-
-        {-# INLINE readVkFormatProperties #-}
-        readVkFormatProperties p
-          = peekByteOff p #{offset VkFormatProperties2KHR, formatProperties}
-
-        {-# INLINE writeVkFormatProperties #-}
-        writeVkFormatProperties p
-          = pokeByteOff p #{offset VkFormatProperties2KHR, formatProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "formatProperties" VkFormatProperties2KHR where
-        type FieldType "formatProperties" VkFormatProperties2KHR =
-             VkFormatProperties
-        type FieldOptional "formatProperties" VkFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "formatProperties" VkFormatProperties2KHR =
-             #{offset VkFormatProperties2KHR, formatProperties}
-        type FieldIsArray "formatProperties" VkFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFormatProperties2KHR, formatProperties}
-
-instance CanReadField "formatProperties" VkFormatProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFormatProperties
-
-        {-# INLINE readField #-}
-        readField = readVkFormatProperties
-
-instance Show VkFormatProperties2KHR where
-        showsPrec d x
-          = showString "VkFormatProperties2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFormatProperties = " .
-                            showsPrec d (vkFormatProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkFramebufferCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkFramebufferCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkFramebufferCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkFramebufferCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkFramebufferCreateInfo
        (VkFramebufferCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkImageView,
                                                              VkRenderPass)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFramebufferCreateInfo {
@@ -31,7 +31,7 @@
 --   >     uint32_t               layers;
 --   > } VkFramebufferCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkFramebufferCreateInfo.html VkFramebufferCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkFramebufferCreateInfo.html VkFramebufferCreateInfo registry at www.khronos.org>
 data VkFramebufferCreateInfo = VkFramebufferCreateInfo## Addr##
                                                         ByteArray##
 
@@ -81,27 +81,6 @@
         type ReturnedOnly VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkFramebufferCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkFramebufferCreateInfo
-         where
-        type VkSTypeMType VkFramebufferCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkFramebufferCreateInfo where
         type FieldType "sType" VkFramebufferCreateInfo = VkStructureType
@@ -116,37 +95,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFramebufferCreateInfo, sType}
 
-instance CanReadField "sType" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, sType}
 
-instance CanWriteField "sType" VkFramebufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkFramebufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkFramebufferCreateInfo
-         where
-        type VkPNextMType VkFramebufferCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkFramebufferCreateInfo where
@@ -162,38 +126,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFramebufferCreateInfo, pNext}
 
-instance CanReadField "pNext" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkFramebufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkFramebufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkFramebufferCreateInfo
-         where
-        type VkFlagsMType VkFramebufferCreateInfo =
-             VkFramebufferCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkFramebufferCreateInfo where
@@ -210,37 +158,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFramebufferCreateInfo, flags}
 
-instance CanReadField "flags" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkRenderPass VkFramebufferCreateInfo where
-        type VkRenderPassMType VkFramebufferCreateInfo = VkRenderPass
-
-        {-# NOINLINE vkRenderPass #-}
-        vkRenderPass x
+         CanReadField "flags" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, renderPass})
-
-        {-# INLINE vkRenderPassByteOffset #-}
-        vkRenderPassByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, renderPass}
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, flags})
 
-        {-# INLINE readVkRenderPass #-}
-        readVkRenderPass p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, renderPass}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, flags}
 
-        {-# INLINE writeVkRenderPass #-}
-        writeVkRenderPass p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, renderPass}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkFramebufferCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "renderPass" VkFramebufferCreateInfo where
@@ -257,37 +190,22 @@
         fieldOffset
           = #{offset VkFramebufferCreateInfo, renderPass}
 
-instance CanReadField "renderPass" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkRenderPass
-
-        {-# INLINE readField #-}
-        readField = readVkRenderPass
-
-instance CanWriteField "renderPass" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkRenderPass
-
 instance {-# OVERLAPPING #-}
-         HasVkAttachmentCount VkFramebufferCreateInfo where
-        type VkAttachmentCountMType VkFramebufferCreateInfo = Word32
-
-        {-# NOINLINE vkAttachmentCount #-}
-        vkAttachmentCount x
+         CanReadField "renderPass" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, attachmentCount})
-
-        {-# INLINE vkAttachmentCountByteOffset #-}
-        vkAttachmentCountByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, attachmentCount}
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, renderPass})
 
-        {-# INLINE readVkAttachmentCount #-}
-        readVkAttachmentCount p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, attachmentCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, renderPass}
 
-        {-# INLINE writeVkAttachmentCount #-}
-        writeVkAttachmentCount p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, attachmentCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "renderPass" VkFramebufferCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, renderPass}
 
 instance {-# OVERLAPPING #-}
          HasField "attachmentCount" VkFramebufferCreateInfo where
@@ -306,39 +224,22 @@
         fieldOffset
           = #{offset VkFramebufferCreateInfo, attachmentCount}
 
-instance CanReadField "attachmentCount" VkFramebufferCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkAttachmentCount
-
-        {-# INLINE readField #-}
-        readField = readVkAttachmentCount
-
-instance CanWriteField "attachmentCount" VkFramebufferCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkAttachmentCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPAttachments VkFramebufferCreateInfo where
-        type VkPAttachmentsMType VkFramebufferCreateInfo = Ptr VkImageView
-
-        {-# NOINLINE vkPAttachments #-}
-        vkPAttachments x
+         CanReadField "attachmentCount" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, pAttachments})
-
-        {-# INLINE vkPAttachmentsByteOffset #-}
-        vkPAttachmentsByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, pAttachments}
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, attachmentCount})
 
-        {-# INLINE readVkPAttachments #-}
-        readVkPAttachments p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, pAttachments}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, attachmentCount}
 
-        {-# INLINE writeVkPAttachments #-}
-        writeVkPAttachments p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, pAttachments}
+instance {-# OVERLAPPING #-}
+         CanWriteField "attachmentCount" VkFramebufferCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, attachmentCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttachments" VkFramebufferCreateInfo where
@@ -356,37 +257,22 @@
         fieldOffset
           = #{offset VkFramebufferCreateInfo, pAttachments}
 
-instance CanReadField "pAttachments" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPAttachments
+instance {-# OVERLAPPING #-}
+         CanReadField "pAttachments" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, pAttachments})
 
         {-# INLINE readField #-}
-        readField = readVkPAttachments
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, pAttachments}
 
-instance CanWriteField "pAttachments" VkFramebufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttachments" VkFramebufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPAttachments
-
-instance {-# OVERLAPPING #-} HasVkWidth VkFramebufferCreateInfo
-         where
-        type VkWidthMType VkFramebufferCreateInfo = Word32
-
-        {-# NOINLINE vkWidth #-}
-        vkWidth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, width})
-
-        {-# INLINE vkWidthByteOffset #-}
-        vkWidthByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, width}
-
-        {-# INLINE readVkWidth #-}
-        readVkWidth p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, width}
-
-        {-# INLINE writeVkWidth #-}
-        writeVkWidth p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, width}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, pAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "width" VkFramebufferCreateInfo where
@@ -402,37 +288,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFramebufferCreateInfo, width}
 
-instance CanReadField "width" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkWidth
+instance {-# OVERLAPPING #-}
+         CanReadField "width" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, width})
 
         {-# INLINE readField #-}
-        readField = readVkWidth
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, width}
 
-instance CanWriteField "width" VkFramebufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "width" VkFramebufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkWidth
-
-instance {-# OVERLAPPING #-} HasVkHeight VkFramebufferCreateInfo
-         where
-        type VkHeightMType VkFramebufferCreateInfo = Word32
-
-        {-# NOINLINE vkHeight #-}
-        vkHeight x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, height})
-
-        {-# INLINE vkHeightByteOffset #-}
-        vkHeightByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, height}
-
-        {-# INLINE readVkHeight #-}
-        readVkHeight p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, height}
-
-        {-# INLINE writeVkHeight #-}
-        writeVkHeight p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, height}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, width}
 
 instance {-# OVERLAPPING #-}
          HasField "height" VkFramebufferCreateInfo where
@@ -448,37 +319,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFramebufferCreateInfo, height}
 
-instance CanReadField "height" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkHeight
+instance {-# OVERLAPPING #-}
+         CanReadField "height" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, height})
 
         {-# INLINE readField #-}
-        readField = readVkHeight
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, height}
 
-instance CanWriteField "height" VkFramebufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "height" VkFramebufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkHeight
-
-instance {-# OVERLAPPING #-} HasVkLayers VkFramebufferCreateInfo
-         where
-        type VkLayersMType VkFramebufferCreateInfo = Word32
-
-        {-# NOINLINE vkLayers #-}
-        vkLayers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, layers})
-
-        {-# INLINE vkLayersByteOffset #-}
-        vkLayersByteOffset ~_
-          = #{offset VkFramebufferCreateInfo, layers}
-
-        {-# INLINE readVkLayers #-}
-        readVkLayers p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, layers}
-
-        {-# INLINE writeVkLayers #-}
-        writeVkLayers p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, layers}
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, height}
 
 instance {-# OVERLAPPING #-}
          HasField "layers" VkFramebufferCreateInfo where
@@ -494,44 +350,50 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkFramebufferCreateInfo, layers}
 
-instance CanReadField "layers" VkFramebufferCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkLayers
+instance {-# OVERLAPPING #-}
+         CanReadField "layers" VkFramebufferCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, layers})
 
         {-# INLINE readField #-}
-        readField = readVkLayers
+        readField p
+          = peekByteOff p #{offset VkFramebufferCreateInfo, layers}
 
-instance CanWriteField "layers" VkFramebufferCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "layers" VkFramebufferCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkLayers
+        writeField p
+          = pokeByteOff p #{offset VkFramebufferCreateInfo, layers}
 
 instance Show VkFramebufferCreateInfo where
         showsPrec d x
           = showString "VkFramebufferCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkRenderPass = " .
-                                  showsPrec d (vkRenderPass x) .
+                                showString "renderPass = " .
+                                  showsPrec d (getField @"renderPass" x) .
                                     showString ", " .
-                                      showString "vkAttachmentCount = " .
-                                        showsPrec d (vkAttachmentCount x) .
+                                      showString "attachmentCount = " .
+                                        showsPrec d (getField @"attachmentCount" x) .
                                           showString ", " .
-                                            showString "vkPAttachments = " .
-                                              showsPrec d (vkPAttachments x) .
+                                            showString "pAttachments = " .
+                                              showsPrec d (getField @"pAttachments" x) .
                                                 showString ", " .
-                                                  showString "vkWidth = " .
-                                                    showsPrec d (vkWidth x) .
+                                                  showString "width = " .
+                                                    showsPrec d (getField @"width" x) .
                                                       showString ", " .
-                                                        showString "vkHeight = " .
-                                                          showsPrec d (vkHeight x) .
+                                                        showString "height = " .
+                                                          showsPrec d (getField @"height" x) .
                                                             showString ", " .
-                                                              showString "vkLayers = " .
-                                                                showsPrec d (vkLayers x) .
+                                                              showString "layers = " .
+                                                                showsPrec d (getField @"layers" x) .
                                                                   showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkGraphicsPipelineCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkGraphicsPipelineCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkGraphicsPipelineCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkGraphicsPipelineCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo
        (VkGraphicsPipelineCreateInfo(..)) where
@@ -41,7 +42,6 @@
                                                                                       (VkPipelineVertexInputStateCreateInfo)
 import           Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo
                                                                                       (VkPipelineViewportStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                       (unsafeDupablePerformIO)
 
@@ -67,7 +67,7 @@
 --   >     int32_t                basePipelineIndex;
 --   > } VkGraphicsPipelineCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkGraphicsPipelineCreateInfo.html VkGraphicsPipelineCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkGraphicsPipelineCreateInfo.html VkGraphicsPipelineCreateInfo registry at www.khronos.org>
 data VkGraphicsPipelineCreateInfo = VkGraphicsPipelineCreateInfo## Addr##
                                                                   ByteArray##
 
@@ -126,27 +126,6 @@
         type StructExtends VkGraphicsPipelineCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkGraphicsPipelineCreateInfo where
-        type VkSTypeMType VkGraphicsPipelineCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkGraphicsPipelineCreateInfo where
         type FieldType "sType" VkGraphicsPipelineCreateInfo =
              VkStructureType
@@ -162,37 +141,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, sType}
 
-instance CanReadField "sType" VkGraphicsPipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkGraphicsPipelineCreateInfo where
-        type VkPNextMType VkGraphicsPipelineCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkGraphicsPipelineCreateInfo where
@@ -209,38 +173,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pNext}
 
-instance CanReadField "pNext" VkGraphicsPipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkGraphicsPipelineCreateInfo where
-        type VkFlagsMType VkGraphicsPipelineCreateInfo =
-             VkPipelineCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkGraphicsPipelineCreateInfo where
@@ -258,37 +206,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, flags}
 
-instance CanReadField "flags" VkGraphicsPipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkStageCount VkGraphicsPipelineCreateInfo where
-        type VkStageCountMType VkGraphicsPipelineCreateInfo = Word32
-
-        {-# NOINLINE vkStageCount #-}
-        vkStageCount x
+         CanReadField "flags" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, stageCount})
-
-        {-# INLINE vkStageCountByteOffset #-}
-        vkStageCountByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, stageCount}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, flags})
 
-        {-# INLINE readVkStageCount #-}
-        readVkStageCount p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, stageCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, flags}
 
-        {-# INLINE writeVkStageCount #-}
-        writeVkStageCount p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, stageCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "stageCount" VkGraphicsPipelineCreateInfo where
@@ -307,40 +240,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, stageCount}
 
-instance CanReadField "stageCount" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkStageCount
-
-        {-# INLINE readField #-}
-        readField = readVkStageCount
-
-instance CanWriteField "stageCount" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStageCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPStages VkGraphicsPipelineCreateInfo where
-        type VkPStagesMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineShaderStageCreateInfo
-
-        {-# NOINLINE vkPStages #-}
-        vkPStages x
+         CanReadField "stageCount" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pStages})
-
-        {-# INLINE vkPStagesByteOffset #-}
-        vkPStagesByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pStages}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, stageCount})
 
-        {-# INLINE readVkPStages #-}
-        readVkPStages p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pStages}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, stageCount}
 
-        {-# INLINE writeVkPStages #-}
-        writeVkPStages p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pStages}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stageCount" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, stageCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pStages" VkGraphicsPipelineCreateInfo where
@@ -358,38 +273,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pStages}
 
-instance CanReadField "pStages" VkGraphicsPipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPStages
-
-        {-# INLINE readField #-}
-        readField = readVkPStages
-
-instance CanWriteField "pStages" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPStages
-
 instance {-# OVERLAPPING #-}
-         HasVkPVertexInputState VkGraphicsPipelineCreateInfo where
-        type VkPVertexInputStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineVertexInputStateCreateInfo
-
-        {-# NOINLINE vkPVertexInputState #-}
-        vkPVertexInputState x
+         CanReadField "pStages" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pVertexInputState})
-
-        {-# INLINE vkPVertexInputStateByteOffset #-}
-        vkPVertexInputStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pStages})
 
-        {-# INLINE readVkPVertexInputState #-}
-        readVkPVertexInputState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pStages}
 
-        {-# INLINE writeVkPVertexInputState #-}
-        writeVkPVertexInputState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pStages" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pStages}
 
 instance {-# OVERLAPPING #-}
          HasField "pVertexInputState" VkGraphicsPipelineCreateInfo where
@@ -409,42 +308,23 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
 
-instance CanReadField "pVertexInputState"
-           VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPVertexInputState
+instance {-# OVERLAPPING #-}
+         CanReadField "pVertexInputState" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pVertexInputState})
 
         {-# INLINE readField #-}
-        readField = readVkPVertexInputState
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
 
-instance CanWriteField "pVertexInputState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pVertexInputState" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPVertexInputState
-
-instance {-# OVERLAPPING #-}
-         HasVkPInputAssemblyState VkGraphicsPipelineCreateInfo where
-        type VkPInputAssemblyStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineInputAssemblyStateCreateInfo
-
-        {-# NOINLINE vkPInputAssemblyState #-}
-        vkPInputAssemblyState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState})
-
-        {-# INLINE vkPInputAssemblyStateByteOffset #-}
-        vkPInputAssemblyStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
-
-        {-# INLINE readVkPInputAssemblyState #-}
-        readVkPInputAssemblyState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
-
-        {-# INLINE writeVkPInputAssemblyState #-}
-        writeVkPInputAssemblyState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
 
 instance {-# OVERLAPPING #-}
          HasField "pInputAssemblyState" VkGraphicsPipelineCreateInfo where
@@ -467,42 +347,24 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
 
-instance CanReadField "pInputAssemblyState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pInputAssemblyState" VkGraphicsPipelineCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPInputAssemblyState
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState})
 
         {-# INLINE readField #-}
-        readField = readVkPInputAssemblyState
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
 
-instance CanWriteField "pInputAssemblyState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pInputAssemblyState" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPInputAssemblyState
-
-instance {-# OVERLAPPING #-}
-         HasVkPTessellationState VkGraphicsPipelineCreateInfo where
-        type VkPTessellationStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineTessellationStateCreateInfo
-
-        {-# NOINLINE vkPTessellationState #-}
-        vkPTessellationState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pTessellationState})
-
-        {-# INLINE vkPTessellationStateByteOffset #-}
-        vkPTessellationStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
-
-        {-# INLINE readVkPTessellationState #-}
-        readVkPTessellationState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
-
-        {-# INLINE writeVkPTessellationState #-}
-        writeVkPTessellationState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
 
 instance {-# OVERLAPPING #-}
          HasField "pTessellationState" VkGraphicsPipelineCreateInfo where
@@ -524,42 +386,24 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
 
-instance CanReadField "pTessellationState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pTessellationState" VkGraphicsPipelineCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPTessellationState
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pTessellationState})
 
         {-# INLINE readField #-}
-        readField = readVkPTessellationState
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
 
-instance CanWriteField "pTessellationState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pTessellationState" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPTessellationState
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewportState VkGraphicsPipelineCreateInfo where
-        type VkPViewportStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineViewportStateCreateInfo
-
-        {-# NOINLINE vkPViewportState #-}
-        vkPViewportState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pViewportState})
-
-        {-# INLINE vkPViewportStateByteOffset #-}
-        vkPViewportStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pViewportState}
-
-        {-# INLINE readVkPViewportState #-}
-        readVkPViewportState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pViewportState}
-
-        {-# INLINE writeVkPViewportState #-}
-        writeVkPViewportState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pViewportState}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
 
 instance {-# OVERLAPPING #-}
          HasField "pViewportState" VkGraphicsPipelineCreateInfo where
@@ -579,41 +423,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pViewportState}
 
-instance CanReadField "pViewportState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPViewportState
-
-        {-# INLINE readField #-}
-        readField = readVkPViewportState
-
-instance CanWriteField "pViewportState"
-           VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPViewportState
-
 instance {-# OVERLAPPING #-}
-         HasVkPRasterizationState VkGraphicsPipelineCreateInfo where
-        type VkPRasterizationStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineRasterizationStateCreateInfo
-
-        {-# NOINLINE vkPRasterizationState #-}
-        vkPRasterizationState x
+         CanReadField "pViewportState" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pRasterizationState})
-
-        {-# INLINE vkPRasterizationStateByteOffset #-}
-        vkPRasterizationStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pViewportState})
 
-        {-# INLINE readVkPRasterizationState #-}
-        readVkPRasterizationState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pViewportState}
 
-        {-# INLINE writeVkPRasterizationState #-}
-        writeVkPRasterizationState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pViewportState" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pViewportState}
 
 instance {-# OVERLAPPING #-}
          HasField "pRasterizationState" VkGraphicsPipelineCreateInfo where
@@ -636,42 +461,24 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
 
-instance CanReadField "pRasterizationState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pRasterizationState" VkGraphicsPipelineCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPRasterizationState
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pRasterizationState})
 
         {-# INLINE readField #-}
-        readField = readVkPRasterizationState
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
 
-instance CanWriteField "pRasterizationState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pRasterizationState" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPRasterizationState
-
-instance {-# OVERLAPPING #-}
-         HasVkPMultisampleState VkGraphicsPipelineCreateInfo where
-        type VkPMultisampleStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineMultisampleStateCreateInfo
-
-        {-# NOINLINE vkPMultisampleState #-}
-        vkPMultisampleState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pMultisampleState})
-
-        {-# INLINE vkPMultisampleStateByteOffset #-}
-        vkPMultisampleStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
-
-        {-# INLINE readVkPMultisampleState #-}
-        readVkPMultisampleState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
-
-        {-# INLINE writeVkPMultisampleState #-}
-        writeVkPMultisampleState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
 
 instance {-# OVERLAPPING #-}
          HasField "pMultisampleState" VkGraphicsPipelineCreateInfo where
@@ -691,42 +498,23 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
 
-instance CanReadField "pMultisampleState"
-           VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPMultisampleState
+instance {-# OVERLAPPING #-}
+         CanReadField "pMultisampleState" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pMultisampleState})
 
         {-# INLINE readField #-}
-        readField = readVkPMultisampleState
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
 
-instance CanWriteField "pMultisampleState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pMultisampleState" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPMultisampleState
-
-instance {-# OVERLAPPING #-}
-         HasVkPDepthStencilState VkGraphicsPipelineCreateInfo where
-        type VkPDepthStencilStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineDepthStencilStateCreateInfo
-
-        {-# NOINLINE vkPDepthStencilState #-}
-        vkPDepthStencilState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState})
-
-        {-# INLINE vkPDepthStencilStateByteOffset #-}
-        vkPDepthStencilStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
-
-        {-# INLINE readVkPDepthStencilState #-}
-        readVkPDepthStencilState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
-
-        {-# INLINE writeVkPDepthStencilState #-}
-        writeVkPDepthStencilState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
 
 instance {-# OVERLAPPING #-}
          HasField "pDepthStencilState" VkGraphicsPipelineCreateInfo where
@@ -748,42 +536,24 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
 
-instance CanReadField "pDepthStencilState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pDepthStencilState" VkGraphicsPipelineCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPDepthStencilState
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState})
 
         {-# INLINE readField #-}
-        readField = readVkPDepthStencilState
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
 
-instance CanWriteField "pDepthStencilState"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDepthStencilState" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPDepthStencilState
-
-instance {-# OVERLAPPING #-}
-         HasVkPColorBlendState VkGraphicsPipelineCreateInfo where
-        type VkPColorBlendStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineColorBlendStateCreateInfo
-
-        {-# NOINLINE vkPColorBlendState #-}
-        vkPColorBlendState x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pColorBlendState})
-
-        {-# INLINE vkPColorBlendStateByteOffset #-}
-        vkPColorBlendStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
-
-        {-# INLINE readVkPColorBlendState #-}
-        readVkPColorBlendState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
-
-        {-# INLINE writeVkPColorBlendState #-}
-        writeVkPColorBlendState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
 
 instance {-# OVERLAPPING #-}
          HasField "pColorBlendState" VkGraphicsPipelineCreateInfo where
@@ -803,42 +573,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
 
-instance CanReadField "pColorBlendState"
-           VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPColorBlendState
-
-        {-# INLINE readField #-}
-        readField = readVkPColorBlendState
-
-instance CanWriteField "pColorBlendState"
-           VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPColorBlendState
-
 instance {-# OVERLAPPING #-}
-         HasVkPDynamicState VkGraphicsPipelineCreateInfo where
-        type VkPDynamicStateMType VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineDynamicStateCreateInfo
-
-        {-# NOINLINE vkPDynamicState #-}
-        vkPDynamicState x
+         CanReadField "pColorBlendState" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pDynamicState})
-
-        {-# INLINE vkPDynamicStateByteOffset #-}
-        vkPDynamicStateByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pColorBlendState})
 
-        {-# INLINE readVkPDynamicState #-}
-        readVkPDynamicState p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
 
-        {-# INLINE writeVkPDynamicState #-}
-        writeVkPDynamicState p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pColorBlendState" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
 
 instance {-# OVERLAPPING #-}
          HasField "pDynamicState" VkGraphicsPipelineCreateInfo where
@@ -858,39 +608,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
 
-instance CanReadField "pDynamicState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPDynamicState
-
-        {-# INLINE readField #-}
-        readField = readVkPDynamicState
-
-instance CanWriteField "pDynamicState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDynamicState
-
 instance {-# OVERLAPPING #-}
-         HasVkLayout VkGraphicsPipelineCreateInfo where
-        type VkLayoutMType VkGraphicsPipelineCreateInfo = VkPipelineLayout
-
-        {-# NOINLINE vkLayout #-}
-        vkLayout x
+         CanReadField "pDynamicState" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, layout})
-
-        {-# INLINE vkLayoutByteOffset #-}
-        vkLayoutByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, layout}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pDynamicState})
 
-        {-# INLINE readVkLayout #-}
-        readVkLayout p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, layout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
 
-        {-# INLINE writeVkLayout #-}
-        writeVkLayout p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, layout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDynamicState" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
 
 instance {-# OVERLAPPING #-}
          HasField "layout" VkGraphicsPipelineCreateInfo where
@@ -908,37 +641,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, layout}
 
-instance CanReadField "layout" VkGraphicsPipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkLayout
-
-        {-# INLINE readField #-}
-        readField = readVkLayout
-
-instance CanWriteField "layout" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkLayout
-
 instance {-# OVERLAPPING #-}
-         HasVkRenderPass VkGraphicsPipelineCreateInfo where
-        type VkRenderPassMType VkGraphicsPipelineCreateInfo = VkRenderPass
-
-        {-# NOINLINE vkRenderPass #-}
-        vkRenderPass x
+         CanReadField "layout" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, renderPass})
-
-        {-# INLINE vkRenderPassByteOffset #-}
-        vkRenderPassByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, renderPass}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, layout})
 
-        {-# INLINE readVkRenderPass #-}
-        readVkRenderPass p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, renderPass}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, layout}
 
-        {-# INLINE writeVkRenderPass #-}
-        writeVkRenderPass p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, renderPass}
+instance {-# OVERLAPPING #-}
+         CanWriteField "layout" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, layout}
 
 instance {-# OVERLAPPING #-}
          HasField "renderPass" VkGraphicsPipelineCreateInfo where
@@ -958,39 +676,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, renderPass}
 
-instance CanReadField "renderPass" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkRenderPass
-
-        {-# INLINE readField #-}
-        readField = readVkRenderPass
-
-instance CanWriteField "renderPass" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkRenderPass
-
 instance {-# OVERLAPPING #-}
-         HasVkSubpass VkGraphicsPipelineCreateInfo where
-        type VkSubpassMType VkGraphicsPipelineCreateInfo = Word32
-
-        {-# NOINLINE vkSubpass #-}
-        vkSubpass x
+         CanReadField "renderPass" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, subpass})
-
-        {-# INLINE vkSubpassByteOffset #-}
-        vkSubpassByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, subpass}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, renderPass})
 
-        {-# INLINE readVkSubpass #-}
-        readVkSubpass p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, subpass}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, renderPass}
 
-        {-# INLINE writeVkSubpass #-}
-        writeVkSubpass p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, subpass}
+instance {-# OVERLAPPING #-}
+         CanWriteField "renderPass" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, renderPass}
 
 instance {-# OVERLAPPING #-}
          HasField "subpass" VkGraphicsPipelineCreateInfo where
@@ -1007,38 +708,22 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, subpass}
 
-instance CanReadField "subpass" VkGraphicsPipelineCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSubpass
-
-        {-# INLINE readField #-}
-        readField = readVkSubpass
-
-instance CanWriteField "subpass" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkSubpass
-
 instance {-# OVERLAPPING #-}
-         HasVkBasePipelineHandle VkGraphicsPipelineCreateInfo where
-        type VkBasePipelineHandleMType VkGraphicsPipelineCreateInfo =
-             VkPipeline
-
-        {-# NOINLINE vkBasePipelineHandle #-}
-        vkBasePipelineHandle x
+         CanReadField "subpass" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle})
-
-        {-# INLINE vkBasePipelineHandleByteOffset #-}
-        vkBasePipelineHandleByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, subpass})
 
-        {-# INLINE readVkBasePipelineHandle #-}
-        readVkBasePipelineHandle p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, subpass}
 
-        {-# INLINE writeVkBasePipelineHandle #-}
-        writeVkBasePipelineHandle p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
+instance {-# OVERLAPPING #-}
+         CanWriteField "subpass" VkGraphicsPipelineCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, subpass}
 
 instance {-# OVERLAPPING #-}
          HasField "basePipelineHandle" VkGraphicsPipelineCreateInfo where
@@ -1060,41 +745,24 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
 
-instance CanReadField "basePipelineHandle"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "basePipelineHandle" VkGraphicsPipelineCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkBasePipelineHandle
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle})
 
         {-# INLINE readField #-}
-        readField = readVkBasePipelineHandle
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
 
-instance CanWriteField "basePipelineHandle"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "basePipelineHandle" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkBasePipelineHandle
-
-instance {-# OVERLAPPING #-}
-         HasVkBasePipelineIndex VkGraphicsPipelineCreateInfo where
-        type VkBasePipelineIndexMType VkGraphicsPipelineCreateInfo = Int32
-
-        {-# NOINLINE vkBasePipelineIndex #-}
-        vkBasePipelineIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex})
-
-        {-# INLINE vkBasePipelineIndexByteOffset #-}
-        vkBasePipelineIndexByteOffset ~_
-          = #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
-
-        {-# INLINE readVkBasePipelineIndex #-}
-        readVkBasePipelineIndex p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
-
-        {-# INLINE writeVkBasePipelineIndex #-}
-        writeVkBasePipelineIndex p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
 
 instance {-# OVERLAPPING #-}
          HasField "basePipelineIndex" VkGraphicsPipelineCreateInfo where
@@ -1114,146 +782,165 @@
         fieldOffset
           = #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
 
-instance CanReadField "basePipelineIndex"
-           VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBasePipelineIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "basePipelineIndex" VkGraphicsPipelineCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex})
 
         {-# INLINE readField #-}
-        readField = readVkBasePipelineIndex
+        readField p
+          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
 
-instance CanWriteField "basePipelineIndex"
-           VkGraphicsPipelineCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "basePipelineIndex" VkGraphicsPipelineCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkBasePipelineIndex
+        writeField p
+          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
 
 instance Show VkGraphicsPipelineCreateInfo where
         showsPrec d x
           = showString "VkGraphicsPipelineCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkStageCount = " .
-                                  showsPrec d (vkStageCount x) .
+                                showString "stageCount = " .
+                                  showsPrec d (getField @"stageCount" x) .
                                     showString ", " .
-                                      showString "vkPStages = " .
-                                        showsPrec d (vkPStages x) .
+                                      showString "pStages = " .
+                                        showsPrec d (getField @"pStages" x) .
                                           showString ", " .
-                                            showString "vkPVertexInputState = " .
-                                              showsPrec d (vkPVertexInputState x) .
+                                            showString "pVertexInputState = " .
+                                              showsPrec d (getField @"pVertexInputState" x) .
                                                 showString ", " .
-                                                  showString "vkPInputAssemblyState = " .
-                                                    showsPrec d (vkPInputAssemblyState x) .
+                                                  showString "pInputAssemblyState = " .
+                                                    showsPrec d (getField @"pInputAssemblyState" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkPTessellationState = " .
-                                                          showsPrec d (vkPTessellationState x) .
+                                                        showString "pTessellationState = " .
+                                                          showsPrec d
+                                                            (getField @"pTessellationState" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkPViewportState = " .
-                                                                showsPrec d (vkPViewportState x) .
+                                                              showString "pViewportState = " .
+                                                                showsPrec d
+                                                                  (getField @"pViewportState" x)
+                                                                  .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkPRasterizationState = "
+                                                                      "pRasterizationState = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkPRasterizationState x)
+                                                                        (getField
+                                                                           @"pRasterizationState"
+                                                                           x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkPMultisampleState = "
+                                                                            "pMultisampleState = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkPMultisampleState
+                                                                              (getField
+                                                                                 @"pMultisampleState"
                                                                                  x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkPDepthStencilState = "
+                                                                                  "pDepthStencilState = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkPDepthStencilState
+                                                                                    (getField
+                                                                                       @"pDepthStencilState"
                                                                                        x)
                                                                                     .
                                                                                     showString ", "
                                                                                       .
                                                                                       showString
-                                                                                        "vkPColorBlendState = "
+                                                                                        "pColorBlendState = "
                                                                                         .
                                                                                         showsPrec d
-                                                                                          (vkPColorBlendState
+                                                                                          (getField
+                                                                                             @"pColorBlendState"
                                                                                              x)
                                                                                           .
                                                                                           showString
                                                                                             ", "
                                                                                             .
                                                                                             showString
-                                                                                              "vkPDynamicState = "
+                                                                                              "pDynamicState = "
                                                                                               .
                                                                                               showsPrec
                                                                                                 d
-                                                                                                (vkPDynamicState
+                                                                                                (getField
+                                                                                                   @"pDynamicState"
                                                                                                    x)
                                                                                                 .
                                                                                                 showString
                                                                                                   ", "
                                                                                                   .
                                                                                                   showString
-                                                                                                    "vkLayout = "
+                                                                                                    "layout = "
                                                                                                     .
                                                                                                     showsPrec
                                                                                                       d
-                                                                                                      (vkLayout
+                                                                                                      (getField
+                                                                                                         @"layout"
                                                                                                          x)
                                                                                                       .
                                                                                                       showString
                                                                                                         ", "
                                                                                                         .
                                                                                                         showString
-                                                                                                          "vkRenderPass = "
+                                                                                                          "renderPass = "
                                                                                                           .
                                                                                                           showsPrec
                                                                                                             d
-                                                                                                            (vkRenderPass
+                                                                                                            (getField
+                                                                                                               @"renderPass"
                                                                                                                x)
                                                                                                             .
                                                                                                             showString
                                                                                                               ", "
                                                                                                               .
                                                                                                               showString
-                                                                                                                "vkSubpass = "
+                                                                                                                "subpass = "
                                                                                                                 .
                                                                                                                 showsPrec
                                                                                                                   d
-                                                                                                                  (vkSubpass
+                                                                                                                  (getField
+                                                                                                                     @"subpass"
                                                                                                                      x)
                                                                                                                   .
                                                                                                                   showString
                                                                                                                     ", "
                                                                                                                     .
                                                                                                                     showString
-                                                                                                                      "vkBasePipelineHandle = "
+                                                                                                                      "basePipelineHandle = "
                                                                                                                       .
                                                                                                                       showsPrec
                                                                                                                         d
-                                                                                                                        (vkBasePipelineHandle
+                                                                                                                        (getField
+                                                                                                                           @"basePipelineHandle"
                                                                                                                            x)
                                                                                                                         .
                                                                                                                         showString
                                                                                                                           ", "
                                                                                                                           .
                                                                                                                           showString
-                                                                                                                            "vkBasePipelineIndex = "
+                                                                                                                            "basePipelineIndex = "
                                                                                                                             .
                                                                                                                             showsPrec
                                                                                                                               d
-                                                                                                                              (vkBasePipelineIndex
+                                                                                                                              (getField
+                                                                                                                                 @"basePipelineIndex"
                                                                                                                                  x)
                                                                                                                               .
                                                                                                                               showChar
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkHdrMetadataEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkHdrMetadataEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkHdrMetadataEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkHdrMetadataEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkHdrMetadataEXT
        (VkHdrMetadataEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkXYColorEXT  (VkXYColorEXT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkHdrMetadataEXT {
@@ -30,7 +30,7 @@
 --   >     float          maxFrameAverageLightLevel;
 --   > } VkHdrMetadataEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkHdrMetadataEXT.html VkHdrMetadataEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkHdrMetadataEXT.html VkHdrMetadataEXT registry at www.khronos.org>
 data VkHdrMetadataEXT = VkHdrMetadataEXT## Addr## ByteArray##
 
 instance Eq VkHdrMetadataEXT where
@@ -80,26 +80,6 @@
         type ReturnedOnly VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkHdrMetadataEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkHdrMetadataEXT where
-        type VkSTypeMType VkHdrMetadataEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkHdrMetadataEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkHdrMetadataEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkHdrMetadataEXT
          where
         type FieldType "sType" VkHdrMetadataEXT = VkStructureType
@@ -114,36 +94,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkHdrMetadataEXT, sType}
 
-instance CanReadField "sType" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkHdrMetadataEXT
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, sType}
 
-instance CanWriteField "sType" VkHdrMetadataEXT where
+instance {-# OVERLAPPING #-} CanWriteField "sType" VkHdrMetadataEXT
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkHdrMetadataEXT where
-        type VkPNextMType VkHdrMetadataEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkHdrMetadataEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkHdrMetadataEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkHdrMetadataEXT
          where
@@ -159,37 +125,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkHdrMetadataEXT, pNext}
 
-instance CanReadField "pNext" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkHdrMetadataEXT
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, pNext}
 
-instance CanWriteField "pNext" VkHdrMetadataEXT where
+instance {-# OVERLAPPING #-} CanWriteField "pNext" VkHdrMetadataEXT
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDisplayPrimaryRed VkHdrMetadataEXT where
-        type VkDisplayPrimaryRedMType VkHdrMetadataEXT = VkXYColorEXT
-
-        {-# NOINLINE vkDisplayPrimaryRed #-}
-        vkDisplayPrimaryRed x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryRed})
-
-        {-# INLINE vkDisplayPrimaryRedByteOffset #-}
-        vkDisplayPrimaryRedByteOffset ~_
-          = #{offset VkHdrMetadataEXT, displayPrimaryRed}
-
-        {-# INLINE readVkDisplayPrimaryRed #-}
-        readVkDisplayPrimaryRed p
-          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryRed}
-
-        {-# INLINE writeVkDisplayPrimaryRed #-}
-        writeVkDisplayPrimaryRed p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryRed}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "displayPrimaryRed" VkHdrMetadataEXT where
@@ -206,37 +157,22 @@
         fieldOffset
           = #{offset VkHdrMetadataEXT, displayPrimaryRed}
 
-instance CanReadField "displayPrimaryRed" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkDisplayPrimaryRed
-
-        {-# INLINE readField #-}
-        readField = readVkDisplayPrimaryRed
-
-instance CanWriteField "displayPrimaryRed" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkDisplayPrimaryRed
-
 instance {-# OVERLAPPING #-}
-         HasVkDisplayPrimaryGreen VkHdrMetadataEXT where
-        type VkDisplayPrimaryGreenMType VkHdrMetadataEXT = VkXYColorEXT
-
-        {-# NOINLINE vkDisplayPrimaryGreen #-}
-        vkDisplayPrimaryGreen x
+         CanReadField "displayPrimaryRed" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryGreen})
-
-        {-# INLINE vkDisplayPrimaryGreenByteOffset #-}
-        vkDisplayPrimaryGreenByteOffset ~_
-          = #{offset VkHdrMetadataEXT, displayPrimaryGreen}
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryRed})
 
-        {-# INLINE readVkDisplayPrimaryGreen #-}
-        readVkDisplayPrimaryGreen p
-          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryGreen}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryRed}
 
-        {-# INLINE writeVkDisplayPrimaryGreen #-}
-        writeVkDisplayPrimaryGreen p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryGreen}
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayPrimaryRed" VkHdrMetadataEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryRed}
 
 instance {-# OVERLAPPING #-}
          HasField "displayPrimaryGreen" VkHdrMetadataEXT where
@@ -254,37 +190,22 @@
         fieldOffset
           = #{offset VkHdrMetadataEXT, displayPrimaryGreen}
 
-instance CanReadField "displayPrimaryGreen" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkDisplayPrimaryGreen
-
-        {-# INLINE readField #-}
-        readField = readVkDisplayPrimaryGreen
-
-instance CanWriteField "displayPrimaryGreen" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkDisplayPrimaryGreen
-
 instance {-# OVERLAPPING #-}
-         HasVkDisplayPrimaryBlue VkHdrMetadataEXT where
-        type VkDisplayPrimaryBlueMType VkHdrMetadataEXT = VkXYColorEXT
-
-        {-# NOINLINE vkDisplayPrimaryBlue #-}
-        vkDisplayPrimaryBlue x
+         CanReadField "displayPrimaryGreen" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryBlue})
-
-        {-# INLINE vkDisplayPrimaryBlueByteOffset #-}
-        vkDisplayPrimaryBlueByteOffset ~_
-          = #{offset VkHdrMetadataEXT, displayPrimaryBlue}
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryGreen})
 
-        {-# INLINE readVkDisplayPrimaryBlue #-}
-        readVkDisplayPrimaryBlue p
-          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryBlue}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryGreen}
 
-        {-# INLINE writeVkDisplayPrimaryBlue #-}
-        writeVkDisplayPrimaryBlue p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryBlue}
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayPrimaryGreen" VkHdrMetadataEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryGreen}
 
 instance {-# OVERLAPPING #-}
          HasField "displayPrimaryBlue" VkHdrMetadataEXT where
@@ -301,36 +222,22 @@
         fieldOffset
           = #{offset VkHdrMetadataEXT, displayPrimaryBlue}
 
-instance CanReadField "displayPrimaryBlue" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkDisplayPrimaryBlue
+instance {-# OVERLAPPING #-}
+         CanReadField "displayPrimaryBlue" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryBlue})
 
         {-# INLINE readField #-}
-        readField = readVkDisplayPrimaryBlue
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryBlue}
 
-instance CanWriteField "displayPrimaryBlue" VkHdrMetadataEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "displayPrimaryBlue" VkHdrMetadataEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkDisplayPrimaryBlue
-
-instance {-# OVERLAPPING #-} HasVkWhitePoint VkHdrMetadataEXT where
-        type VkWhitePointMType VkHdrMetadataEXT = VkXYColorEXT
-
-        {-# NOINLINE vkWhitePoint #-}
-        vkWhitePoint x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, whitePoint})
-
-        {-# INLINE vkWhitePointByteOffset #-}
-        vkWhitePointByteOffset ~_
-          = #{offset VkHdrMetadataEXT, whitePoint}
-
-        {-# INLINE readVkWhitePoint #-}
-        readVkWhitePoint p
-          = peekByteOff p #{offset VkHdrMetadataEXT, whitePoint}
-
-        {-# INLINE writeVkWhitePoint #-}
-        writeVkWhitePoint p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, whitePoint}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryBlue}
 
 instance {-# OVERLAPPING #-} HasField "whitePoint" VkHdrMetadataEXT
          where
@@ -346,38 +253,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkHdrMetadataEXT, whitePoint}
 
-instance CanReadField "whitePoint" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkWhitePoint
+instance {-# OVERLAPPING #-}
+         CanReadField "whitePoint" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, whitePoint})
 
         {-# INLINE readField #-}
-        readField = readVkWhitePoint
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, whitePoint}
 
-instance CanWriteField "whitePoint" VkHdrMetadataEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "whitePoint" VkHdrMetadataEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkWhitePoint
-
-instance {-# OVERLAPPING #-} HasVkMaxLuminance VkHdrMetadataEXT
-         where
-        type VkMaxLuminanceMType VkHdrMetadataEXT =
-             #{type float}
-
-        {-# NOINLINE vkMaxLuminance #-}
-        vkMaxLuminance x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxLuminance})
-
-        {-# INLINE vkMaxLuminanceByteOffset #-}
-        vkMaxLuminanceByteOffset ~_
-          = #{offset VkHdrMetadataEXT, maxLuminance}
-
-        {-# INLINE readVkMaxLuminance #-}
-        readVkMaxLuminance p
-          = peekByteOff p #{offset VkHdrMetadataEXT, maxLuminance}
-
-        {-# INLINE writeVkMaxLuminance #-}
-        writeVkMaxLuminance p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, maxLuminance}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, whitePoint}
 
 instance {-# OVERLAPPING #-}
          HasField "maxLuminance" VkHdrMetadataEXT where
@@ -394,38 +285,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkHdrMetadataEXT, maxLuminance}
 
-instance CanReadField "maxLuminance" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkMaxLuminance
+instance {-# OVERLAPPING #-}
+         CanReadField "maxLuminance" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxLuminance})
 
         {-# INLINE readField #-}
-        readField = readVkMaxLuminance
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, maxLuminance}
 
-instance CanWriteField "maxLuminance" VkHdrMetadataEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxLuminance" VkHdrMetadataEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxLuminance
-
-instance {-# OVERLAPPING #-} HasVkMinLuminance VkHdrMetadataEXT
-         where
-        type VkMinLuminanceMType VkHdrMetadataEXT =
-             #{type float}
-
-        {-# NOINLINE vkMinLuminance #-}
-        vkMinLuminance x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, minLuminance})
-
-        {-# INLINE vkMinLuminanceByteOffset #-}
-        vkMinLuminanceByteOffset ~_
-          = #{offset VkHdrMetadataEXT, minLuminance}
-
-        {-# INLINE readVkMinLuminance #-}
-        readVkMinLuminance p
-          = peekByteOff p #{offset VkHdrMetadataEXT, minLuminance}
-
-        {-# INLINE writeVkMinLuminance #-}
-        writeVkMinLuminance p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, minLuminance}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, maxLuminance}
 
 instance {-# OVERLAPPING #-}
          HasField "minLuminance" VkHdrMetadataEXT where
@@ -442,38 +317,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkHdrMetadataEXT, minLuminance}
 
-instance CanReadField "minLuminance" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkMinLuminance
-
-        {-# INLINE readField #-}
-        readField = readVkMinLuminance
-
-instance CanWriteField "minLuminance" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkMinLuminance
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxContentLightLevel VkHdrMetadataEXT where
-        type VkMaxContentLightLevelMType VkHdrMetadataEXT =
-             #{type float}
-
-        {-# NOINLINE vkMaxContentLightLevel #-}
-        vkMaxContentLightLevel x
+         CanReadField "minLuminance" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxContentLightLevel})
-
-        {-# INLINE vkMaxContentLightLevelByteOffset #-}
-        vkMaxContentLightLevelByteOffset ~_
-          = #{offset VkHdrMetadataEXT, maxContentLightLevel}
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, minLuminance})
 
-        {-# INLINE readVkMaxContentLightLevel #-}
-        readVkMaxContentLightLevel p
-          = peekByteOff p #{offset VkHdrMetadataEXT, maxContentLightLevel}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, minLuminance}
 
-        {-# INLINE writeVkMaxContentLightLevel #-}
-        writeVkMaxContentLightLevel p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, maxContentLightLevel}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minLuminance" VkHdrMetadataEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, minLuminance}
 
 instance {-# OVERLAPPING #-}
          HasField "maxContentLightLevel" VkHdrMetadataEXT where
@@ -491,39 +350,22 @@
         fieldOffset
           = #{offset VkHdrMetadataEXT, maxContentLightLevel}
 
-instance CanReadField "maxContentLightLevel" VkHdrMetadataEXT where
-        {-# INLINE getField #-}
-        getField = vkMaxContentLightLevel
-
-        {-# INLINE readField #-}
-        readField = readVkMaxContentLightLevel
-
-instance CanWriteField "maxContentLightLevel" VkHdrMetadataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMaxContentLightLevel
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxFrameAverageLightLevel VkHdrMetadataEXT where
-        type VkMaxFrameAverageLightLevelMType VkHdrMetadataEXT =
-             #{type float}
-
-        {-# NOINLINE vkMaxFrameAverageLightLevel #-}
-        vkMaxFrameAverageLightLevel x
+         CanReadField "maxContentLightLevel" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel})
-
-        {-# INLINE vkMaxFrameAverageLightLevelByteOffset #-}
-        vkMaxFrameAverageLightLevelByteOffset ~_
-          = #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxContentLightLevel})
 
-        {-# INLINE readVkMaxFrameAverageLightLevel #-}
-        readVkMaxFrameAverageLightLevel p
-          = peekByteOff p #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, maxContentLightLevel}
 
-        {-# INLINE writeVkMaxFrameAverageLightLevel #-}
-        writeVkMaxFrameAverageLightLevel p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxContentLightLevel" VkHdrMetadataEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, maxContentLightLevel}
 
 instance {-# OVERLAPPING #-}
          HasField "maxFrameAverageLightLevel" VkHdrMetadataEXT where
@@ -543,56 +385,61 @@
         fieldOffset
           = #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
 
-instance CanReadField "maxFrameAverageLightLevel" VkHdrMetadataEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFrameAverageLightLevel
+instance {-# OVERLAPPING #-}
+         CanReadField "maxFrameAverageLightLevel" VkHdrMetadataEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel})
 
         {-# INLINE readField #-}
-        readField = readVkMaxFrameAverageLightLevel
+        readField p
+          = peekByteOff p #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
 
-instance CanWriteField "maxFrameAverageLightLevel" VkHdrMetadataEXT
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxFrameAverageLightLevel" VkHdrMetadataEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxFrameAverageLightLevel
+        writeField p
+          = pokeByteOff p #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
 
 instance Show VkHdrMetadataEXT where
         showsPrec d x
           = showString "VkHdrMetadataEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDisplayPrimaryRed = " .
-                            showsPrec d (vkDisplayPrimaryRed x) .
+                          showString "displayPrimaryRed = " .
+                            showsPrec d (getField @"displayPrimaryRed" x) .
                               showString ", " .
-                                showString "vkDisplayPrimaryGreen = " .
-                                  showsPrec d (vkDisplayPrimaryGreen x) .
+                                showString "displayPrimaryGreen = " .
+                                  showsPrec d (getField @"displayPrimaryGreen" x) .
                                     showString ", " .
-                                      showString "vkDisplayPrimaryBlue = " .
-                                        showsPrec d (vkDisplayPrimaryBlue x) .
+                                      showString "displayPrimaryBlue = " .
+                                        showsPrec d (getField @"displayPrimaryBlue" x) .
                                           showString ", " .
-                                            showString "vkWhitePoint = " .
-                                              showsPrec d (vkWhitePoint x) .
+                                            showString "whitePoint = " .
+                                              showsPrec d (getField @"whitePoint" x) .
                                                 showString ", " .
-                                                  showString "vkMaxLuminance = " .
-                                                    showsPrec d (vkMaxLuminance x) .
+                                                  showString "maxLuminance = " .
+                                                    showsPrec d (getField @"maxLuminance" x) .
                                                       showString ", " .
-                                                        showString "vkMinLuminance = " .
-                                                          showsPrec d (vkMinLuminance x) .
+                                                        showString "minLuminance = " .
+                                                          showsPrec d (getField @"minLuminance" x) .
                                                             showString ", " .
-                                                              showString "vkMaxContentLightLevel = "
-                                                                .
+                                                              showString "maxContentLightLevel = " .
                                                                 showsPrec d
-                                                                  (vkMaxContentLightLevel x)
+                                                                  (getField @"maxContentLightLevel"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkMaxFrameAverageLightLevel = "
+                                                                      "maxFrameAverageLightLevel = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkMaxFrameAverageLightLevel
+                                                                        (getField
+                                                                           @"maxFrameAverageLightLevel"
                                                                            x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkIOSSurfaceCreateInfoMVK.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkIOSSurfaceCreateInfoMVK.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkIOSSurfaceCreateInfoMVK.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkIOSSurfaceCreateInfoMVK.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkIOSSurfaceCreateInfoMVK
        (VkIOSSurfaceCreateInfoMVK(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkIOSSurfaceCreateFlagsMVK)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkIOSSurfaceCreateInfoMVK {
@@ -24,7 +24,7 @@
 --   >     const void*                                    pView;
 --   > } VkIOSSurfaceCreateInfoMVK;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkIOSSurfaceCreateInfoMVK.html VkIOSSurfaceCreateInfoMVK registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkIOSSurfaceCreateInfoMVK.html VkIOSSurfaceCreateInfoMVK registry at www.khronos.org>
 data VkIOSSurfaceCreateInfoMVK = VkIOSSurfaceCreateInfoMVK## Addr##
                                                             ByteArray##
 
@@ -74,27 +74,6 @@
         type ReturnedOnly VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
         type StructExtends VkIOSSurfaceCreateInfoMVK = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkIOSSurfaceCreateInfoMVK
-         where
-        type VkSTypeMType VkIOSSurfaceCreateInfoMVK = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkIOSSurfaceCreateInfoMVK, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkIOSSurfaceCreateInfoMVK where
         type FieldType "sType" VkIOSSurfaceCreateInfoMVK = VkStructureType
@@ -110,37 +89,22 @@
         fieldOffset
           = #{offset VkIOSSurfaceCreateInfoMVK, sType}
 
-instance CanReadField "sType" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkIOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, sType}
 
-instance CanWriteField "sType" VkIOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkIOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkIOSSurfaceCreateInfoMVK
-         where
-        type VkPNextMType VkIOSSurfaceCreateInfoMVK = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkIOSSurfaceCreateInfoMVK, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkIOSSurfaceCreateInfoMVK where
@@ -157,38 +121,22 @@
         fieldOffset
           = #{offset VkIOSSurfaceCreateInfoMVK, pNext}
 
-instance CanReadField "pNext" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkIOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pNext}
 
-instance CanWriteField "pNext" VkIOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkIOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkIOSSurfaceCreateInfoMVK
-         where
-        type VkFlagsMType VkIOSSurfaceCreateInfoMVK =
-             VkIOSSurfaceCreateFlagsMVK
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkIOSSurfaceCreateInfoMVK, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, flags}
+        writeField p
+          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkIOSSurfaceCreateInfoMVK where
@@ -206,37 +154,22 @@
         fieldOffset
           = #{offset VkIOSSurfaceCreateInfoMVK, flags}
 
-instance CanReadField "flags" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkIOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, flags}
 
-instance CanWriteField "flags" VkIOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkIOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkPView VkIOSSurfaceCreateInfoMVK
-         where
-        type VkPViewMType VkIOSSurfaceCreateInfoMVK = Ptr Void
-
-        {-# NOINLINE vkPView #-}
-        vkPView x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, pView})
-
-        {-# INLINE vkPViewByteOffset #-}
-        vkPViewByteOffset ~_
-          = #{offset VkIOSSurfaceCreateInfoMVK, pView}
-
-        {-# INLINE readVkPView #-}
-        readVkPView p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pView}
-
-        {-# INLINE writeVkPView #-}
-        writeVkPView p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pView}
+        writeField p
+          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pView" VkIOSSurfaceCreateInfoMVK where
@@ -253,27 +186,34 @@
         fieldOffset
           = #{offset VkIOSSurfaceCreateInfoMVK, pView}
 
-instance CanReadField "pView" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkPView
+instance {-# OVERLAPPING #-}
+         CanReadField "pView" VkIOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, pView})
 
         {-# INLINE readField #-}
-        readField = readVkPView
+        readField p
+          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pView}
 
-instance CanWriteField "pView" VkIOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pView" VkIOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkPView
+        writeField p
+          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pView}
 
 instance Show VkIOSSurfaceCreateInfoMVK where
         showsPrec d x
           = showString "VkIOSSurfaceCreateInfoMVK {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkPView = " . showsPrec d (vkPView x) . showChar '}'
+                                showString "pView = " .
+                                  showsPrec d (getField @"pView" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageBlit.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageBlit.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageBlit.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageBlit.hsc
@@ -8,6 +8,7 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkImageBlit (VkImageBlit(..))
@@ -20,7 +21,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers (VkImageSubresourceLayers)
 import           Graphics.Vulkan.Types.Struct.VkOffset3D               (VkOffset3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageBlit {
@@ -30,7 +30,7 @@
 --   >     VkOffset3D             dstOffsets[2];
 --   > } VkImageBlit;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageBlit.html VkImageBlit registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageBlit.html VkImageBlit registry at www.khronos.org>
 data VkImageBlit = VkImageBlit## Addr## ByteArray##
 
 instance Eq VkImageBlit where
@@ -78,26 +78,6 @@
         type ReturnedOnly VkImageBlit = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageBlit = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSrcSubresource VkImageBlit where
-        type VkSrcSubresourceMType VkImageBlit = VkImageSubresourceLayers
-
-        {-# NOINLINE vkSrcSubresource #-}
-        vkSrcSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageBlit, srcSubresource})
-
-        {-# INLINE vkSrcSubresourceByteOffset #-}
-        vkSrcSubresourceByteOffset ~_
-          = #{offset VkImageBlit, srcSubresource}
-
-        {-# INLINE readVkSrcSubresource #-}
-        readVkSrcSubresource p
-          = peekByteOff p #{offset VkImageBlit, srcSubresource}
-
-        {-# INLINE writeVkSrcSubresource #-}
-        writeVkSrcSubresource p
-          = pokeByteOff p #{offset VkImageBlit, srcSubresource}
-
 instance {-# OVERLAPPING #-} HasField "srcSubresource" VkImageBlit
          where
         type FieldType "srcSubresource" VkImageBlit =
@@ -113,42 +93,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageBlit, srcSubresource}
 
-instance CanReadField "srcSubresource" VkImageBlit where
-        {-# INLINE getField #-}
-        getField = vkSrcSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "srcSubresource" VkImageBlit where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageBlit, srcSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkSrcSubresource
+        readField p
+          = peekByteOff p #{offset VkImageBlit, srcSubresource}
 
-instance CanWriteField "srcSubresource" VkImageBlit where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcSubresource" VkImageBlit where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcSubresource
-
-instance {-# OVERLAPPING #-} HasVkSrcOffsetsArray VkImageBlit where
-        type VkSrcOffsetsArrayMType VkImageBlit = VkOffset3D
-
-        {-# NOINLINE vkSrcOffsetsArray #-}
-        vkSrcOffsetsArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: VkOffset3D) +
-                    #{offset VkImageBlit, srcOffsets}))
-
-        {-# INLINE vkSrcOffsetsArrayByteOffset #-}
-        vkSrcOffsetsArrayByteOffset ~_
-          = #{offset VkImageBlit, srcOffsets}
-
-        {-# INLINE readVkSrcOffsetsArray #-}
-        readVkSrcOffsetsArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: VkOffset3D) +
-                 #{offset VkImageBlit, srcOffsets})
-
-        {-# INLINE writeVkSrcOffsetsArray #-}
-        writeVkSrcOffsetsArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: VkOffset3D) +
-                 #{offset VkImageBlit, srcOffsets})
+        writeField p
+          = pokeByteOff p #{offset VkImageBlit, srcSubresource}
 
 instance {-# OVERLAPPING #-} HasField "srcOffsets" VkImageBlit
          where
@@ -164,8 +124,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageBlit, srcOffsets}
 
-instance (KnownNat idx,
-          IndexInBounds "srcOffsets" idx VkImageBlit) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "srcOffsets" idx VkImageBlit) =>
          CanReadFieldArray "srcOffsets" idx VkImageBlit
          where
         {-# SPECIALISE instance
@@ -179,17 +139,23 @@
         fieldArrayLength = 2
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkSrcOffsetsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkImageBlit, srcOffsets} +
+                      sizeOf (undefined :: VkOffset3D) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkSrcOffsetsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkImageBlit, srcOffsets} +
+                 sizeOf (undefined :: VkOffset3D) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
-          IndexInBounds "srcOffsets" idx VkImageBlit) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "srcOffsets" idx VkImageBlit) =>
          CanWriteFieldArray "srcOffsets" idx VkImageBlit
          where
         {-# SPECIALISE instance
@@ -199,29 +165,11 @@
                        CanWriteFieldArray "srcOffsets" 1 VkImageBlit #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkSrcOffsetsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkDstSubresource VkImageBlit where
-        type VkDstSubresourceMType VkImageBlit = VkImageSubresourceLayers
-
-        {-# NOINLINE vkDstSubresource #-}
-        vkDstSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageBlit, dstSubresource})
-
-        {-# INLINE vkDstSubresourceByteOffset #-}
-        vkDstSubresourceByteOffset ~_
-          = #{offset VkImageBlit, dstSubresource}
-
-        {-# INLINE readVkDstSubresource #-}
-        readVkDstSubresource p
-          = peekByteOff p #{offset VkImageBlit, dstSubresource}
-
-        {-# INLINE writeVkDstSubresource #-}
-        writeVkDstSubresource p
-          = pokeByteOff p #{offset VkImageBlit, dstSubresource}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkImageBlit, srcOffsets} +
+                 sizeOf (undefined :: VkOffset3D) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageBlit
          where
@@ -238,42 +186,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageBlit, dstSubresource}
 
-instance CanReadField "dstSubresource" VkImageBlit where
-        {-# INLINE getField #-}
-        getField = vkDstSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "dstSubresource" VkImageBlit where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageBlit, dstSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkDstSubresource
+        readField p
+          = peekByteOff p #{offset VkImageBlit, dstSubresource}
 
-instance CanWriteField "dstSubresource" VkImageBlit where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstSubresource" VkImageBlit where
         {-# INLINE writeField #-}
-        writeField = writeVkDstSubresource
-
-instance {-# OVERLAPPING #-} HasVkDstOffsetsArray VkImageBlit where
-        type VkDstOffsetsArrayMType VkImageBlit = VkOffset3D
-
-        {-# NOINLINE vkDstOffsetsArray #-}
-        vkDstOffsetsArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: VkOffset3D) +
-                    #{offset VkImageBlit, dstOffsets}))
-
-        {-# INLINE vkDstOffsetsArrayByteOffset #-}
-        vkDstOffsetsArrayByteOffset ~_
-          = #{offset VkImageBlit, dstOffsets}
-
-        {-# INLINE readVkDstOffsetsArray #-}
-        readVkDstOffsetsArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: VkOffset3D) +
-                 #{offset VkImageBlit, dstOffsets})
-
-        {-# INLINE writeVkDstOffsetsArray #-}
-        writeVkDstOffsetsArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: VkOffset3D) +
-                 #{offset VkImageBlit, dstOffsets})
+        writeField p
+          = pokeByteOff p #{offset VkImageBlit, dstSubresource}
 
 instance {-# OVERLAPPING #-} HasField "dstOffsets" VkImageBlit
          where
@@ -289,8 +217,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageBlit, dstOffsets}
 
-instance (KnownNat idx,
-          IndexInBounds "dstOffsets" idx VkImageBlit) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "dstOffsets" idx VkImageBlit) =>
          CanReadFieldArray "dstOffsets" idx VkImageBlit
          where
         {-# SPECIALISE instance
@@ -304,17 +232,23 @@
         fieldArrayLength = 2
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkDstOffsetsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkImageBlit, dstOffsets} +
+                      sizeOf (undefined :: VkOffset3D) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkDstOffsetsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkImageBlit, dstOffsets} +
+                 sizeOf (undefined :: VkOffset3D) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
-          IndexInBounds "dstOffsets" idx VkImageBlit) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "dstOffsets" idx VkImageBlit) =>
          CanWriteFieldArray "dstOffsets" idx VkImageBlit
          where
         {-# SPECIALISE instance
@@ -324,23 +258,43 @@
                        CanWriteFieldArray "dstOffsets" 1 VkImageBlit #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkDstOffsetsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkImageBlit, dstOffsets} +
+                 sizeOf (undefined :: VkOffset3D) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance Show VkImageBlit where
         showsPrec d x
           = showString "VkImageBlit {" .
-              showString "vkSrcSubresource = " .
-                showsPrec d (vkSrcSubresource x) .
+              showString "srcSubresource = " .
+                showsPrec d (getField @"srcSubresource" x) .
                   showString ", " .
-                    showString "vkSrcOffsetsArray = [" .
-                      showsPrec d (map (vkSrcOffsetsArray x) [1 .. 2]) .
-                        showChar ']' .
-                          showString ", " .
-                            showString "vkDstSubresource = " .
-                              showsPrec d (vkDstSubresource x) .
-                                showString ", " .
-                                  showString "vkDstOffsetsArray = [" .
-                                    showsPrec d (map (vkDstOffsetsArray x) [1 .. 2]) .
-                                      showChar ']' . showChar '}'
+                    (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageCopy.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageCopy.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageCopy.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageCopy.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageCopy (VkImageCopy(..))
        where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Struct.VkExtent3D               (VkExtent3D)
 import           Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers (VkImageSubresourceLayers)
 import           Graphics.Vulkan.Types.Struct.VkOffset3D               (VkOffset3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageCopy {
@@ -26,7 +26,7 @@
 --   >     VkExtent3D             extent;
 --   > } VkImageCopy;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageCopy.html VkImageCopy registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageCopy.html VkImageCopy registry at www.khronos.org>
 data VkImageCopy = VkImageCopy## Addr## ByteArray##
 
 instance Eq VkImageCopy where
@@ -75,26 +75,6 @@
         type ReturnedOnly VkImageCopy = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageCopy = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSrcSubresource VkImageCopy where
-        type VkSrcSubresourceMType VkImageCopy = VkImageSubresourceLayers
-
-        {-# NOINLINE vkSrcSubresource #-}
-        vkSrcSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, srcSubresource})
-
-        {-# INLINE vkSrcSubresourceByteOffset #-}
-        vkSrcSubresourceByteOffset ~_
-          = #{offset VkImageCopy, srcSubresource}
-
-        {-# INLINE readVkSrcSubresource #-}
-        readVkSrcSubresource p
-          = peekByteOff p #{offset VkImageCopy, srcSubresource}
-
-        {-# INLINE writeVkSrcSubresource #-}
-        writeVkSrcSubresource p
-          = pokeByteOff p #{offset VkImageCopy, srcSubresource}
-
 instance {-# OVERLAPPING #-} HasField "srcSubresource" VkImageCopy
          where
         type FieldType "srcSubresource" VkImageCopy =
@@ -110,36 +90,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCopy, srcSubresource}
 
-instance CanReadField "srcSubresource" VkImageCopy where
-        {-# INLINE getField #-}
-        getField = vkSrcSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "srcSubresource" VkImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCopy, srcSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkSrcSubresource
+        readField p
+          = peekByteOff p #{offset VkImageCopy, srcSubresource}
 
-instance CanWriteField "srcSubresource" VkImageCopy where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcSubresource" VkImageCopy where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcSubresource
-
-instance {-# OVERLAPPING #-} HasVkSrcOffset VkImageCopy where
-        type VkSrcOffsetMType VkImageCopy = VkOffset3D
-
-        {-# NOINLINE vkSrcOffset #-}
-        vkSrcOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, srcOffset})
-
-        {-# INLINE vkSrcOffsetByteOffset #-}
-        vkSrcOffsetByteOffset ~_
-          = #{offset VkImageCopy, srcOffset}
-
-        {-# INLINE readVkSrcOffset #-}
-        readVkSrcOffset p
-          = peekByteOff p #{offset VkImageCopy, srcOffset}
-
-        {-# INLINE writeVkSrcOffset #-}
-        writeVkSrcOffset p
-          = pokeByteOff p #{offset VkImageCopy, srcOffset}
+        writeField p
+          = pokeByteOff p #{offset VkImageCopy, srcSubresource}
 
 instance {-# OVERLAPPING #-} HasField "srcOffset" VkImageCopy where
         type FieldType "srcOffset" VkImageCopy = VkOffset3D
@@ -154,36 +120,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCopy, srcOffset}
 
-instance CanReadField "srcOffset" VkImageCopy where
-        {-# INLINE getField #-}
-        getField = vkSrcOffset
+instance {-# OVERLAPPING #-} CanReadField "srcOffset" VkImageCopy
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCopy, srcOffset})
 
         {-# INLINE readField #-}
-        readField = readVkSrcOffset
+        readField p
+          = peekByteOff p #{offset VkImageCopy, srcOffset}
 
-instance CanWriteField "srcOffset" VkImageCopy where
+instance {-# OVERLAPPING #-} CanWriteField "srcOffset" VkImageCopy
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcOffset
-
-instance {-# OVERLAPPING #-} HasVkDstSubresource VkImageCopy where
-        type VkDstSubresourceMType VkImageCopy = VkImageSubresourceLayers
-
-        {-# NOINLINE vkDstSubresource #-}
-        vkDstSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, dstSubresource})
-
-        {-# INLINE vkDstSubresourceByteOffset #-}
-        vkDstSubresourceByteOffset ~_
-          = #{offset VkImageCopy, dstSubresource}
-
-        {-# INLINE readVkDstSubresource #-}
-        readVkDstSubresource p
-          = peekByteOff p #{offset VkImageCopy, dstSubresource}
-
-        {-# INLINE writeVkDstSubresource #-}
-        writeVkDstSubresource p
-          = pokeByteOff p #{offset VkImageCopy, dstSubresource}
+        writeField p
+          = pokeByteOff p #{offset VkImageCopy, srcOffset}
 
 instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageCopy
          where
@@ -200,36 +152,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCopy, dstSubresource}
 
-instance CanReadField "dstSubresource" VkImageCopy where
-        {-# INLINE getField #-}
-        getField = vkDstSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "dstSubresource" VkImageCopy where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCopy, dstSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkDstSubresource
+        readField p
+          = peekByteOff p #{offset VkImageCopy, dstSubresource}
 
-instance CanWriteField "dstSubresource" VkImageCopy where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstSubresource" VkImageCopy where
         {-# INLINE writeField #-}
-        writeField = writeVkDstSubresource
-
-instance {-# OVERLAPPING #-} HasVkDstOffset VkImageCopy where
-        type VkDstOffsetMType VkImageCopy = VkOffset3D
-
-        {-# NOINLINE vkDstOffset #-}
-        vkDstOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, dstOffset})
-
-        {-# INLINE vkDstOffsetByteOffset #-}
-        vkDstOffsetByteOffset ~_
-          = #{offset VkImageCopy, dstOffset}
-
-        {-# INLINE readVkDstOffset #-}
-        readVkDstOffset p
-          = peekByteOff p #{offset VkImageCopy, dstOffset}
-
-        {-# INLINE writeVkDstOffset #-}
-        writeVkDstOffset p
-          = pokeByteOff p #{offset VkImageCopy, dstOffset}
+        writeField p
+          = pokeByteOff p #{offset VkImageCopy, dstSubresource}
 
 instance {-# OVERLAPPING #-} HasField "dstOffset" VkImageCopy where
         type FieldType "dstOffset" VkImageCopy = VkOffset3D
@@ -244,35 +182,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCopy, dstOffset}
 
-instance CanReadField "dstOffset" VkImageCopy where
-        {-# INLINE getField #-}
-        getField = vkDstOffset
+instance {-# OVERLAPPING #-} CanReadField "dstOffset" VkImageCopy
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCopy, dstOffset})
 
         {-# INLINE readField #-}
-        readField = readVkDstOffset
+        readField p
+          = peekByteOff p #{offset VkImageCopy, dstOffset}
 
-instance CanWriteField "dstOffset" VkImageCopy where
+instance {-# OVERLAPPING #-} CanWriteField "dstOffset" VkImageCopy
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkDstOffset
-
-instance {-# OVERLAPPING #-} HasVkExtent VkImageCopy where
-        type VkExtentMType VkImageCopy = VkExtent3D
-
-        {-# NOINLINE vkExtent #-}
-        vkExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, extent})
-
-        {-# INLINE vkExtentByteOffset #-}
-        vkExtentByteOffset ~_ = #{offset VkImageCopy, extent}
-
-        {-# INLINE readVkExtent #-}
-        readVkExtent p
-          = peekByteOff p #{offset VkImageCopy, extent}
-
-        {-# INLINE writeVkExtent #-}
-        writeVkExtent p
-          = pokeByteOff p #{offset VkImageCopy, extent}
+        writeField p
+          = pokeByteOff p #{offset VkImageCopy, dstOffset}
 
 instance {-# OVERLAPPING #-} HasField "extent" VkImageCopy where
         type FieldType "extent" VkImageCopy = VkExtent3D
@@ -287,31 +212,37 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCopy, extent}
 
-instance CanReadField "extent" VkImageCopy where
-        {-# INLINE getField #-}
-        getField = vkExtent
+instance {-# OVERLAPPING #-} CanReadField "extent" VkImageCopy
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCopy, extent})
 
         {-# INLINE readField #-}
-        readField = readVkExtent
+        readField p
+          = peekByteOff p #{offset VkImageCopy, extent}
 
-instance CanWriteField "extent" VkImageCopy where
+instance {-# OVERLAPPING #-} CanWriteField "extent" VkImageCopy
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkExtent
+        writeField p
+          = pokeByteOff p #{offset VkImageCopy, extent}
 
 instance Show VkImageCopy where
         showsPrec d x
           = showString "VkImageCopy {" .
-              showString "vkSrcSubresource = " .
-                showsPrec d (vkSrcSubresource x) .
+              showString "srcSubresource = " .
+                showsPrec d (getField @"srcSubresource" x) .
                   showString ", " .
-                    showString "vkSrcOffset = " .
-                      showsPrec d (vkSrcOffset x) .
+                    showString "srcOffset = " .
+                      showsPrec d (getField @"srcOffset" x) .
                         showString ", " .
-                          showString "vkDstSubresource = " .
-                            showsPrec d (vkDstSubresource x) .
+                          showString "dstSubresource = " .
+                            showsPrec d (getField @"dstSubresource" x) .
                               showString ", " .
-                                showString "vkDstOffset = " .
-                                  showsPrec d (vkDstOffset x) .
+                                showString "dstOffset = " .
+                                  showsPrec d (getField @"dstOffset" x) .
                                     showString ", " .
-                                      showString "vkExtent = " .
-                                        showsPrec d (vkExtent x) . showChar '}'
+                                      showString "extent = " .
+                                        showsPrec d (getField @"extent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageCreateInfo
        (VkImageCreateInfo(..)) where
@@ -22,7 +23,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSharingMode      (VkSharingMode)
 import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkExtent3D       (VkExtent3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageCreateInfo {
@@ -43,7 +43,7 @@
 --   >     VkImageLayout          initialLayout;
 --   > } VkImageCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageCreateInfo.html VkImageCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageCreateInfo.html VkImageCreateInfo registry at www.khronos.org>
 data VkImageCreateInfo = VkImageCreateInfo## Addr## ByteArray##
 
 instance Eq VkImageCreateInfo where
@@ -94,26 +94,6 @@
         type ReturnedOnly VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkImageCreateInfo where
-        type VkSTypeMType VkImageCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkImageCreateInfo
          where
         type FieldType "sType" VkImageCreateInfo = VkStructureType
@@ -128,36 +108,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, sType}
 
-instance CanReadField "sType" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkImageCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, sType}
 
-instance CanWriteField "sType" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImageCreateInfo where
-        type VkPNextMType VkImageCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkImageCreateInfo
          where
@@ -173,36 +139,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, pNext}
 
-instance CanReadField "pNext" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkImageCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkImageCreateInfo where
-        type VkFlagsMType VkImageCreateInfo = VkImageCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkImageCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkImageCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkImageCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkImageCreateInfo
          where
@@ -218,36 +170,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, flags}
 
-instance CanReadField "flags" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-} CanReadField "flags" VkImageCreateInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, flags}
 
-instance CanWriteField "flags" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkImageType VkImageCreateInfo where
-        type VkImageTypeMType VkImageCreateInfo = VkImageType
-
-        {-# NOINLINE vkImageType #-}
-        vkImageType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, imageType})
-
-        {-# INLINE vkImageTypeByteOffset #-}
-        vkImageTypeByteOffset ~_
-          = #{offset VkImageCreateInfo, imageType}
-
-        {-# INLINE readVkImageType #-}
-        readVkImageType p
-          = peekByteOff p #{offset VkImageCreateInfo, imageType}
-
-        {-# INLINE writeVkImageType #-}
-        writeVkImageType p
-          = pokeByteOff p #{offset VkImageCreateInfo, imageType}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, flags}
 
 instance {-# OVERLAPPING #-} HasField "imageType" VkImageCreateInfo
          where
@@ -263,36 +201,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, imageType}
 
-instance CanReadField "imageType" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkImageType
+instance {-# OVERLAPPING #-}
+         CanReadField "imageType" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, imageType})
 
         {-# INLINE readField #-}
-        readField = readVkImageType
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, imageType}
 
-instance CanWriteField "imageType" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageType" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkImageType
-
-instance {-# OVERLAPPING #-} HasVkFormat VkImageCreateInfo where
-        type VkFormatMType VkImageCreateInfo = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkImageCreateInfo, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkImageCreateInfo, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkImageCreateInfo, format}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, imageType}
 
 instance {-# OVERLAPPING #-} HasField "format" VkImageCreateInfo
          where
@@ -308,36 +232,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, format}
 
-instance CanReadField "format" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFormat
+instance {-# OVERLAPPING #-}
+         CanReadField "format" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, format})
 
         {-# INLINE readField #-}
-        readField = readVkFormat
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, format}
 
-instance CanWriteField "format" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "format" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-} HasVkExtent VkImageCreateInfo where
-        type VkExtentMType VkImageCreateInfo = VkExtent3D
-
-        {-# NOINLINE vkExtent #-}
-        vkExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, extent})
-
-        {-# INLINE vkExtentByteOffset #-}
-        vkExtentByteOffset ~_
-          = #{offset VkImageCreateInfo, extent}
-
-        {-# INLINE readVkExtent #-}
-        readVkExtent p
-          = peekByteOff p #{offset VkImageCreateInfo, extent}
-
-        {-# INLINE writeVkExtent #-}
-        writeVkExtent p
-          = pokeByteOff p #{offset VkImageCreateInfo, extent}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, format}
 
 instance {-# OVERLAPPING #-} HasField "extent" VkImageCreateInfo
          where
@@ -353,36 +263,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, extent}
 
-instance CanReadField "extent" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkExtent
+instance {-# OVERLAPPING #-}
+         CanReadField "extent" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, extent})
 
         {-# INLINE readField #-}
-        readField = readVkExtent
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, extent}
 
-instance CanWriteField "extent" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "extent" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkExtent
-
-instance {-# OVERLAPPING #-} HasVkMipLevels VkImageCreateInfo where
-        type VkMipLevelsMType VkImageCreateInfo = Word32
-
-        {-# NOINLINE vkMipLevels #-}
-        vkMipLevels x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, mipLevels})
-
-        {-# INLINE vkMipLevelsByteOffset #-}
-        vkMipLevelsByteOffset ~_
-          = #{offset VkImageCreateInfo, mipLevels}
-
-        {-# INLINE readVkMipLevels #-}
-        readVkMipLevels p
-          = peekByteOff p #{offset VkImageCreateInfo, mipLevels}
-
-        {-# INLINE writeVkMipLevels #-}
-        writeVkMipLevels p
-          = pokeByteOff p #{offset VkImageCreateInfo, mipLevels}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, extent}
 
 instance {-# OVERLAPPING #-} HasField "mipLevels" VkImageCreateInfo
          where
@@ -398,37 +294,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, mipLevels}
 
-instance CanReadField "mipLevels" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMipLevels
+instance {-# OVERLAPPING #-}
+         CanReadField "mipLevels" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, mipLevels})
 
         {-# INLINE readField #-}
-        readField = readVkMipLevels
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, mipLevels}
 
-instance CanWriteField "mipLevels" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "mipLevels" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMipLevels
-
-instance {-# OVERLAPPING #-} HasVkArrayLayers VkImageCreateInfo
-         where
-        type VkArrayLayersMType VkImageCreateInfo = Word32
-
-        {-# NOINLINE vkArrayLayers #-}
-        vkArrayLayers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, arrayLayers})
-
-        {-# INLINE vkArrayLayersByteOffset #-}
-        vkArrayLayersByteOffset ~_
-          = #{offset VkImageCreateInfo, arrayLayers}
-
-        {-# INLINE readVkArrayLayers #-}
-        readVkArrayLayers p
-          = peekByteOff p #{offset VkImageCreateInfo, arrayLayers}
-
-        {-# INLINE writeVkArrayLayers #-}
-        writeVkArrayLayers p
-          = pokeByteOff p #{offset VkImageCreateInfo, arrayLayers}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, mipLevels}
 
 instance {-# OVERLAPPING #-}
          HasField "arrayLayers" VkImageCreateInfo where
@@ -444,36 +325,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, arrayLayers}
 
-instance CanReadField "arrayLayers" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkArrayLayers
+instance {-# OVERLAPPING #-}
+         CanReadField "arrayLayers" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, arrayLayers})
 
         {-# INLINE readField #-}
-        readField = readVkArrayLayers
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, arrayLayers}
 
-instance CanWriteField "arrayLayers" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "arrayLayers" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkArrayLayers
-
-instance {-# OVERLAPPING #-} HasVkSamples VkImageCreateInfo where
-        type VkSamplesMType VkImageCreateInfo = VkSampleCountFlagBits
-
-        {-# NOINLINE vkSamples #-}
-        vkSamples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, samples})
-
-        {-# INLINE vkSamplesByteOffset #-}
-        vkSamplesByteOffset ~_
-          = #{offset VkImageCreateInfo, samples}
-
-        {-# INLINE readVkSamples #-}
-        readVkSamples p
-          = peekByteOff p #{offset VkImageCreateInfo, samples}
-
-        {-# INLINE writeVkSamples #-}
-        writeVkSamples p
-          = pokeByteOff p #{offset VkImageCreateInfo, samples}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, arrayLayers}
 
 instance {-# OVERLAPPING #-} HasField "samples" VkImageCreateInfo
          where
@@ -489,36 +356,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, samples}
 
-instance CanReadField "samples" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSamples
+instance {-# OVERLAPPING #-}
+         CanReadField "samples" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, samples})
 
         {-# INLINE readField #-}
-        readField = readVkSamples
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, samples}
 
-instance CanWriteField "samples" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "samples" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSamples
-
-instance {-# OVERLAPPING #-} HasVkTiling VkImageCreateInfo where
-        type VkTilingMType VkImageCreateInfo = VkImageTiling
-
-        {-# NOINLINE vkTiling #-}
-        vkTiling x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, tiling})
-
-        {-# INLINE vkTilingByteOffset #-}
-        vkTilingByteOffset ~_
-          = #{offset VkImageCreateInfo, tiling}
-
-        {-# INLINE readVkTiling #-}
-        readVkTiling p
-          = peekByteOff p #{offset VkImageCreateInfo, tiling}
-
-        {-# INLINE writeVkTiling #-}
-        writeVkTiling p
-          = pokeByteOff p #{offset VkImageCreateInfo, tiling}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, samples}
 
 instance {-# OVERLAPPING #-} HasField "tiling" VkImageCreateInfo
          where
@@ -534,36 +387,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, tiling}
 
-instance CanReadField "tiling" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkTiling
+instance {-# OVERLAPPING #-}
+         CanReadField "tiling" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, tiling})
 
         {-# INLINE readField #-}
-        readField = readVkTiling
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, tiling}
 
-instance CanWriteField "tiling" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "tiling" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkTiling
-
-instance {-# OVERLAPPING #-} HasVkUsage VkImageCreateInfo where
-        type VkUsageMType VkImageCreateInfo = VkImageUsageFlags
-
-        {-# NOINLINE vkUsage #-}
-        vkUsage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, usage})
-
-        {-# INLINE vkUsageByteOffset #-}
-        vkUsageByteOffset ~_
-          = #{offset VkImageCreateInfo, usage}
-
-        {-# INLINE readVkUsage #-}
-        readVkUsage p
-          = peekByteOff p #{offset VkImageCreateInfo, usage}
-
-        {-# INLINE writeVkUsage #-}
-        writeVkUsage p
-          = pokeByteOff p #{offset VkImageCreateInfo, usage}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, tiling}
 
 instance {-# OVERLAPPING #-} HasField "usage" VkImageCreateInfo
          where
@@ -579,37 +418,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, usage}
 
-instance CanReadField "usage" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkUsage
-
-        {-# INLINE readField #-}
-        readField = readVkUsage
-
-instance CanWriteField "usage" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkUsage
-
-instance {-# OVERLAPPING #-} HasVkSharingMode VkImageCreateInfo
+instance {-# OVERLAPPING #-} CanReadField "usage" VkImageCreateInfo
          where
-        type VkSharingModeMType VkImageCreateInfo = VkSharingMode
-
-        {-# NOINLINE vkSharingMode #-}
-        vkSharingMode x
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, sharingMode})
-
-        {-# INLINE vkSharingModeByteOffset #-}
-        vkSharingModeByteOffset ~_
-          = #{offset VkImageCreateInfo, sharingMode}
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, usage})
 
-        {-# INLINE readVkSharingMode #-}
-        readVkSharingMode p
-          = peekByteOff p #{offset VkImageCreateInfo, sharingMode}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, usage}
 
-        {-# INLINE writeVkSharingMode #-}
-        writeVkSharingMode p
-          = pokeByteOff p #{offset VkImageCreateInfo, sharingMode}
+instance {-# OVERLAPPING #-}
+         CanWriteField "usage" VkImageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, usage}
 
 instance {-# OVERLAPPING #-}
          HasField "sharingMode" VkImageCreateInfo where
@@ -625,37 +449,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageCreateInfo, sharingMode}
 
-instance CanReadField "sharingMode" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSharingMode
-
-        {-# INLINE readField #-}
-        readField = readVkSharingMode
-
-instance CanWriteField "sharingMode" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkSharingMode
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueFamilyIndexCount VkImageCreateInfo where
-        type VkQueueFamilyIndexCountMType VkImageCreateInfo = Word32
-
-        {-# NOINLINE vkQueueFamilyIndexCount #-}
-        vkQueueFamilyIndexCount x
+         CanReadField "sharingMode" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, queueFamilyIndexCount})
-
-        {-# INLINE vkQueueFamilyIndexCountByteOffset #-}
-        vkQueueFamilyIndexCountByteOffset ~_
-          = #{offset VkImageCreateInfo, queueFamilyIndexCount}
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, sharingMode})
 
-        {-# INLINE readVkQueueFamilyIndexCount #-}
-        readVkQueueFamilyIndexCount p
-          = peekByteOff p #{offset VkImageCreateInfo, queueFamilyIndexCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, sharingMode}
 
-        {-# INLINE writeVkQueueFamilyIndexCount #-}
-        writeVkQueueFamilyIndexCount p
-          = pokeByteOff p #{offset VkImageCreateInfo, queueFamilyIndexCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sharingMode" VkImageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, sharingMode}
 
 instance {-# OVERLAPPING #-}
          HasField "queueFamilyIndexCount" VkImageCreateInfo where
@@ -674,39 +483,22 @@
         fieldOffset
           = #{offset VkImageCreateInfo, queueFamilyIndexCount}
 
-instance CanReadField "queueFamilyIndexCount" VkImageCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueFamilyIndexCount
-
-        {-# INLINE readField #-}
-        readField = readVkQueueFamilyIndexCount
-
-instance CanWriteField "queueFamilyIndexCount" VkImageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueueFamilyIndexCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPQueueFamilyIndices VkImageCreateInfo where
-        type VkPQueueFamilyIndicesMType VkImageCreateInfo = Ptr Word32
-
-        {-# NOINLINE vkPQueueFamilyIndices #-}
-        vkPQueueFamilyIndices x
+         CanReadField "queueFamilyIndexCount" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, pQueueFamilyIndices})
-
-        {-# INLINE vkPQueueFamilyIndicesByteOffset #-}
-        vkPQueueFamilyIndicesByteOffset ~_
-          = #{offset VkImageCreateInfo, pQueueFamilyIndices}
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, queueFamilyIndexCount})
 
-        {-# INLINE readVkPQueueFamilyIndices #-}
-        readVkPQueueFamilyIndices p
-          = peekByteOff p #{offset VkImageCreateInfo, pQueueFamilyIndices}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, queueFamilyIndexCount}
 
-        {-# INLINE writeVkPQueueFamilyIndices #-}
-        writeVkPQueueFamilyIndices p
-          = pokeByteOff p #{offset VkImageCreateInfo, pQueueFamilyIndices}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueFamilyIndexCount" VkImageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, queueFamilyIndexCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pQueueFamilyIndices" VkImageCreateInfo where
@@ -723,38 +515,22 @@
         fieldOffset
           = #{offset VkImageCreateInfo, pQueueFamilyIndices}
 
-instance CanReadField "pQueueFamilyIndices" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPQueueFamilyIndices
+instance {-# OVERLAPPING #-}
+         CanReadField "pQueueFamilyIndices" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, pQueueFamilyIndices})
 
         {-# INLINE readField #-}
-        readField = readVkPQueueFamilyIndices
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, pQueueFamilyIndices}
 
-instance CanWriteField "pQueueFamilyIndices" VkImageCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pQueueFamilyIndices" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPQueueFamilyIndices
-
-instance {-# OVERLAPPING #-} HasVkInitialLayout VkImageCreateInfo
-         where
-        type VkInitialLayoutMType VkImageCreateInfo = VkImageLayout
-
-        {-# NOINLINE vkInitialLayout #-}
-        vkInitialLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, initialLayout})
-
-        {-# INLINE vkInitialLayoutByteOffset #-}
-        vkInitialLayoutByteOffset ~_
-          = #{offset VkImageCreateInfo, initialLayout}
-
-        {-# INLINE readVkInitialLayout #-}
-        readVkInitialLayout p
-          = peekByteOff p #{offset VkImageCreateInfo, initialLayout}
-
-        {-# INLINE writeVkInitialLayout #-}
-        writeVkInitialLayout p
-          = pokeByteOff p #{offset VkImageCreateInfo, initialLayout}
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, pQueueFamilyIndices}
 
 instance {-# OVERLAPPING #-}
          HasField "initialLayout" VkImageCreateInfo where
@@ -771,90 +547,104 @@
         fieldOffset
           = #{offset VkImageCreateInfo, initialLayout}
 
-instance CanReadField "initialLayout" VkImageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkInitialLayout
+instance {-# OVERLAPPING #-}
+         CanReadField "initialLayout" VkImageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, initialLayout})
 
         {-# INLINE readField #-}
-        readField = readVkInitialLayout
+        readField p
+          = peekByteOff p #{offset VkImageCreateInfo, initialLayout}
 
-instance CanWriteField "initialLayout" VkImageCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "initialLayout" VkImageCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkInitialLayout
+        writeField p
+          = pokeByteOff p #{offset VkImageCreateInfo, initialLayout}
 
 instance Show VkImageCreateInfo where
         showsPrec d x
           = showString "VkImageCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkImageType = " .
-                                  showsPrec d (vkImageType x) .
+                                showString "imageType = " .
+                                  showsPrec d (getField @"imageType" x) .
                                     showString ", " .
-                                      showString "vkFormat = " .
-                                        showsPrec d (vkFormat x) .
+                                      showString "format = " .
+                                        showsPrec d (getField @"format" x) .
                                           showString ", " .
-                                            showString "vkExtent = " .
-                                              showsPrec d (vkExtent x) .
+                                            showString "extent = " .
+                                              showsPrec d (getField @"extent" x) .
                                                 showString ", " .
-                                                  showString "vkMipLevels = " .
-                                                    showsPrec d (vkMipLevels x) .
+                                                  showString "mipLevels = " .
+                                                    showsPrec d (getField @"mipLevels" x) .
                                                       showString ", " .
-                                                        showString "vkArrayLayers = " .
-                                                          showsPrec d (vkArrayLayers x) .
+                                                        showString "arrayLayers = " .
+                                                          showsPrec d (getField @"arrayLayers" x) .
                                                             showString ", " .
-                                                              showString "vkSamples = " .
-                                                                showsPrec d (vkSamples x) .
+                                                              showString "samples = " .
+                                                                showsPrec d (getField @"samples" x)
+                                                                  .
                                                                   showString ", " .
-                                                                    showString "vkTiling = " .
-                                                                      showsPrec d (vkTiling x) .
+                                                                    showString "tiling = " .
+                                                                      showsPrec d
+                                                                        (getField @"tiling" x)
+                                                                        .
                                                                         showString ", " .
-                                                                          showString "vkUsage = " .
-                                                                            showsPrec d (vkUsage x)
+                                                                          showString "usage = " .
+                                                                            showsPrec d
+                                                                              (getField @"usage" x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkSharingMode = "
+                                                                                  "sharingMode = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkSharingMode
+                                                                                    (getField
+                                                                                       @"sharingMode"
                                                                                        x)
                                                                                     .
                                                                                     showString ", "
                                                                                       .
                                                                                       showString
-                                                                                        "vkQueueFamilyIndexCount = "
+                                                                                        "queueFamilyIndexCount = "
                                                                                         .
                                                                                         showsPrec d
-                                                                                          (vkQueueFamilyIndexCount
+                                                                                          (getField
+                                                                                             @"queueFamilyIndexCount"
                                                                                              x)
                                                                                           .
                                                                                           showString
                                                                                             ", "
                                                                                             .
                                                                                             showString
-                                                                                              "vkPQueueFamilyIndices = "
+                                                                                              "pQueueFamilyIndices = "
                                                                                               .
                                                                                               showsPrec
                                                                                                 d
-                                                                                                (vkPQueueFamilyIndices
+                                                                                                (getField
+                                                                                                   @"pQueueFamilyIndices"
                                                                                                    x)
                                                                                                 .
                                                                                                 showString
                                                                                                   ", "
                                                                                                   .
                                                                                                   showString
-                                                                                                    "vkInitialLayout = "
+                                                                                                    "initialLayout = "
                                                                                                     .
                                                                                                     showsPrec
                                                                                                       d
-                                                                                                      (vkInitialLayout
+                                                                                                      (getField
+                                                                                                         @"initialLayout"
                                                                                                          x)
                                                                                                       .
                                                                                                       showChar
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatListCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatListCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatListCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatListCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageFormatListCreateInfoKHR
        (VkImageFormatListCreateInfoKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkFormat            (VkFormat)
 import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo (VkImageCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageFormatListCreateInfoKHR {
@@ -25,7 +25,7 @@
 --   >     const VkFormat*      pViewFormats;
 --   > } VkImageFormatListCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageFormatListCreateInfoKHR.html VkImageFormatListCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageFormatListCreateInfoKHR.html VkImageFormatListCreateInfoKHR registry at www.khronos.org>
 data VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfoKHR## Addr##
                                                                       ByteArray##
 
@@ -80,27 +80,6 @@
              '[VkImageCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkImageFormatListCreateInfoKHR where
-        type VkSTypeMType VkImageFormatListCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageFormatListCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkImageFormatListCreateInfoKHR where
         type FieldType "sType" VkImageFormatListCreateInfoKHR =
              VkStructureType
@@ -116,37 +95,22 @@
         fieldOffset
           = #{offset VkImageFormatListCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkImageFormatListCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImageFormatListCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkImageFormatListCreateInfoKHR where
-        type VkPNextMType VkImageFormatListCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkImageFormatListCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageFormatListCreateInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImageFormatListCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImageFormatListCreateInfoKHR where
@@ -163,37 +127,22 @@
         fieldOffset
           = #{offset VkImageFormatListCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImageFormatListCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImageFormatListCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkViewFormatCount VkImageFormatListCreateInfoKHR where
-        type VkViewFormatCountMType VkImageFormatListCreateInfoKHR = Word32
-
-        {-# NOINLINE vkViewFormatCount #-}
-        vkViewFormatCount x
+         CanReadField "pNext" VkImageFormatListCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, viewFormatCount})
-
-        {-# INLINE vkViewFormatCountByteOffset #-}
-        vkViewFormatCountByteOffset ~_
-          = #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, pNext})
 
-        {-# INLINE readVkViewFormatCount #-}
-        readVkViewFormatCount p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, pNext}
 
-        {-# INLINE writeVkViewFormatCount #-}
-        writeVkViewFormatCount p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImageFormatListCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "viewFormatCount" VkImageFormatListCreateInfoKHR where
@@ -213,42 +162,23 @@
         fieldOffset
           = #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
 
-instance CanReadField "viewFormatCount"
-           VkImageFormatListCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkViewFormatCount
+instance {-# OVERLAPPING #-}
+         CanReadField "viewFormatCount" VkImageFormatListCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, viewFormatCount})
 
         {-# INLINE readField #-}
-        readField = readVkViewFormatCount
+        readField p
+          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
 
-instance CanWriteField "viewFormatCount"
-           VkImageFormatListCreateInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "viewFormatCount" VkImageFormatListCreateInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkViewFormatCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewFormats VkImageFormatListCreateInfoKHR where
-        type VkPViewFormatsMType VkImageFormatListCreateInfoKHR =
-             Ptr VkFormat
-
-        {-# NOINLINE vkPViewFormats #-}
-        vkPViewFormats x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, pViewFormats})
-
-        {-# INLINE vkPViewFormatsByteOffset #-}
-        vkPViewFormatsByteOffset ~_
-          = #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
-
-        {-# INLINE readVkPViewFormats #-}
-        readVkPViewFormats p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
-
-        {-# INLINE writeVkPViewFormats #-}
-        writeVkPViewFormats p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pViewFormats" VkImageFormatListCreateInfoKHR where
@@ -268,31 +198,34 @@
         fieldOffset
           = #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
 
-instance CanReadField "pViewFormats" VkImageFormatListCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPViewFormats
+instance {-# OVERLAPPING #-}
+         CanReadField "pViewFormats" VkImageFormatListCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, pViewFormats})
 
         {-# INLINE readField #-}
-        readField = readVkPViewFormats
+        readField p
+          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
 
-instance CanWriteField "pViewFormats"
-           VkImageFormatListCreateInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pViewFormats" VkImageFormatListCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPViewFormats
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
 
 instance Show VkImageFormatListCreateInfoKHR where
         showsPrec d x
           = showString "VkImageFormatListCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkViewFormatCount = " .
-                            showsPrec d (vkViewFormatCount x) .
+                          showString "viewFormatCount = " .
+                            showsPrec d (getField @"viewFormatCount" x) .
                               showString ", " .
-                                showString "vkPViewFormats = " .
-                                  showsPrec d (vkPViewFormats x) . showChar '}'
+                                showString "pViewFormats = " .
+                                  showsPrec d (getField @"pViewFormats" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageFormatProperties
        (VkImageFormatProperties(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
 import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags (VkSampleCountFlags)
 import           Graphics.Vulkan.Types.Struct.VkExtent3D       (VkExtent3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageFormatProperties {
@@ -26,7 +26,7 @@
 --   >     VkDeviceSize           maxResourceSize;
 --   > } VkImageFormatProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageFormatProperties.html VkImageFormatProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageFormatProperties.html VkImageFormatProperties registry at www.khronos.org>
 data VkImageFormatProperties = VkImageFormatProperties## Addr##
                                                         ByteArray##
 
@@ -76,27 +76,6 @@
         type ReturnedOnly VkImageFormatProperties = 'True -- ' closing tick for hsc2hs
         type StructExtends VkImageFormatProperties = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkMaxExtent VkImageFormatProperties
-         where
-        type VkMaxExtentMType VkImageFormatProperties = VkExtent3D
-
-        {-# NOINLINE vkMaxExtent #-}
-        vkMaxExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxExtent})
-
-        {-# INLINE vkMaxExtentByteOffset #-}
-        vkMaxExtentByteOffset ~_
-          = #{offset VkImageFormatProperties, maxExtent}
-
-        {-# INLINE readVkMaxExtent #-}
-        readVkMaxExtent p
-          = peekByteOff p #{offset VkImageFormatProperties, maxExtent}
-
-        {-# INLINE writeVkMaxExtent #-}
-        writeVkMaxExtent p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxExtent}
-
 instance {-# OVERLAPPING #-}
          HasField "maxExtent" VkImageFormatProperties where
         type FieldType "maxExtent" VkImageFormatProperties = VkExtent3D
@@ -112,33 +91,22 @@
         fieldOffset
           = #{offset VkImageFormatProperties, maxExtent}
 
-instance CanReadField "maxExtent" VkImageFormatProperties where
-        {-# INLINE getField #-}
-        getField = vkMaxExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMaxExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxMipLevels VkImageFormatProperties where
-        type VkMaxMipLevelsMType VkImageFormatProperties = Word32
-
-        {-# NOINLINE vkMaxMipLevels #-}
-        vkMaxMipLevels x
+         CanReadField "maxExtent" VkImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxMipLevels})
-
-        {-# INLINE vkMaxMipLevelsByteOffset #-}
-        vkMaxMipLevelsByteOffset ~_
-          = #{offset VkImageFormatProperties, maxMipLevels}
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxExtent})
 
-        {-# INLINE readVkMaxMipLevels #-}
-        readVkMaxMipLevels p
-          = peekByteOff p #{offset VkImageFormatProperties, maxMipLevels}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageFormatProperties, maxExtent}
 
-        {-# INLINE writeVkMaxMipLevels #-}
-        writeVkMaxMipLevels p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxMipLevels}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxExtent" VkImageFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatProperties, maxExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxMipLevels" VkImageFormatProperties where
@@ -155,33 +123,22 @@
         fieldOffset
           = #{offset VkImageFormatProperties, maxMipLevels}
 
-instance CanReadField "maxMipLevels" VkImageFormatProperties where
-        {-# INLINE getField #-}
-        getField = vkMaxMipLevels
-
-        {-# INLINE readField #-}
-        readField = readVkMaxMipLevels
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxArrayLayers VkImageFormatProperties where
-        type VkMaxArrayLayersMType VkImageFormatProperties = Word32
-
-        {-# NOINLINE vkMaxArrayLayers #-}
-        vkMaxArrayLayers x
+         CanReadField "maxMipLevels" VkImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxArrayLayers})
-
-        {-# INLINE vkMaxArrayLayersByteOffset #-}
-        vkMaxArrayLayersByteOffset ~_
-          = #{offset VkImageFormatProperties, maxArrayLayers}
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxMipLevels})
 
-        {-# INLINE readVkMaxArrayLayers #-}
-        readVkMaxArrayLayers p
-          = peekByteOff p #{offset VkImageFormatProperties, maxArrayLayers}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageFormatProperties, maxMipLevels}
 
-        {-# INLINE writeVkMaxArrayLayers #-}
-        writeVkMaxArrayLayers p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxArrayLayers}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxMipLevels" VkImageFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatProperties, maxMipLevels}
 
 instance {-# OVERLAPPING #-}
          HasField "maxArrayLayers" VkImageFormatProperties where
@@ -199,35 +156,22 @@
         fieldOffset
           = #{offset VkImageFormatProperties, maxArrayLayers}
 
-instance CanReadField "maxArrayLayers" VkImageFormatProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxArrayLayers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxArrayLayers
-
 instance {-# OVERLAPPING #-}
-         HasVkSampleCounts VkImageFormatProperties where
-        type VkSampleCountsMType VkImageFormatProperties =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkSampleCounts #-}
-        vkSampleCounts x
+         CanReadField "maxArrayLayers" VkImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, sampleCounts})
-
-        {-# INLINE vkSampleCountsByteOffset #-}
-        vkSampleCountsByteOffset ~_
-          = #{offset VkImageFormatProperties, sampleCounts}
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxArrayLayers})
 
-        {-# INLINE readVkSampleCounts #-}
-        readVkSampleCounts p
-          = peekByteOff p #{offset VkImageFormatProperties, sampleCounts}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageFormatProperties, maxArrayLayers}
 
-        {-# INLINE writeVkSampleCounts #-}
-        writeVkSampleCounts p
-          = pokeByteOff p #{offset VkImageFormatProperties, sampleCounts}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxArrayLayers" VkImageFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatProperties, maxArrayLayers}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleCounts" VkImageFormatProperties where
@@ -245,33 +189,22 @@
         fieldOffset
           = #{offset VkImageFormatProperties, sampleCounts}
 
-instance CanReadField "sampleCounts" VkImageFormatProperties where
-        {-# INLINE getField #-}
-        getField = vkSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkSampleCounts
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxResourceSize VkImageFormatProperties where
-        type VkMaxResourceSizeMType VkImageFormatProperties = VkDeviceSize
-
-        {-# NOINLINE vkMaxResourceSize #-}
-        vkMaxResourceSize x
+         CanReadField "sampleCounts" VkImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxResourceSize})
-
-        {-# INLINE vkMaxResourceSizeByteOffset #-}
-        vkMaxResourceSizeByteOffset ~_
-          = #{offset VkImageFormatProperties, maxResourceSize}
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, sampleCounts})
 
-        {-# INLINE readVkMaxResourceSize #-}
-        readVkMaxResourceSize p
-          = peekByteOff p #{offset VkImageFormatProperties, maxResourceSize}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageFormatProperties, sampleCounts}
 
-        {-# INLINE writeVkMaxResourceSize #-}
-        writeVkMaxResourceSize p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxResourceSize}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleCounts" VkImageFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageFormatProperties, sampleCounts}
 
 instance {-# OVERLAPPING #-}
          HasField "maxResourceSize" VkImageFormatProperties where
@@ -291,28 +224,37 @@
         fieldOffset
           = #{offset VkImageFormatProperties, maxResourceSize}
 
-instance CanReadField "maxResourceSize" VkImageFormatProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxResourceSize
+instance {-# OVERLAPPING #-}
+         CanReadField "maxResourceSize" VkImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxResourceSize})
 
         {-# INLINE readField #-}
-        readField = readVkMaxResourceSize
+        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 "vkMaxExtent = " .
-                showsPrec d (vkMaxExtent x) .
+              showString "maxExtent = " .
+                showsPrec d (getField @"maxExtent" x) .
                   showString ", " .
-                    showString "vkMaxMipLevels = " .
-                      showsPrec d (vkMaxMipLevels x) .
+                    showString "maxMipLevels = " .
+                      showsPrec d (getField @"maxMipLevels" x) .
                         showString ", " .
-                          showString "vkMaxArrayLayers = " .
-                            showsPrec d (vkMaxArrayLayers x) .
+                          showString "maxArrayLayers = " .
+                            showsPrec d (getField @"maxArrayLayers" x) .
                               showString ", " .
-                                showString "vkSampleCounts = " .
-                                  showsPrec d (vkSampleCounts x) .
+                                showString "sampleCounts = " .
+                                  showsPrec d (getField @"sampleCounts" x) .
                                     showString ", " .
-                                      showString "vkMaxResourceSize = " .
-                                        showsPrec d (vkMaxResourceSize x) . showChar '}'
+                                      showString "maxResourceSize = " .
+                                        showsPrec d (getField @"maxResourceSize" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2.hsc
@@ -0,0 +1,184 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2
+       (VkImageFormatProperties2(..)) where
+import           Foreign.Storable                                     (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties (VkImageFormatProperties)
+import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImageFormatProperties2 {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkImageFormatProperties          imageFormatProperties;
+--   > } VkImageFormatProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageFormatProperties2.html VkImageFormatProperties2 registry at www.khronos.org>
+data VkImageFormatProperties2 = VkImageFormatProperties2## Addr##
+                                                          ByteArray##
+
+instance Eq VkImageFormatProperties2 where
+        (VkImageFormatProperties2## a _) ==
+          x@(VkImageFormatProperties2## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImageFormatProperties2 where
+        (VkImageFormatProperties2## a _) `compare`
+          x@(VkImageFormatProperties2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImageFormatProperties2 where
+        unsafeAddr (VkImageFormatProperties2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImageFormatProperties2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImageFormatProperties2## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2KHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
+       (VkImageFormatProperties2(..), VkImageFormatProperties2KHR) where
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2 (VkImageFormatProperties2 (..))
+
+-- | Alias for `VkImageFormatProperties2`
+type VkImageFormatProperties2KHR = VkImageFormatProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageFormatProperties2KHR.hsc
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
-       (VkImageFormatProperties2KHR(..)) where
-import           Foreign.Storable                                     (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties (VkImageFormatProperties)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
-
--- | > typedef struct VkImageFormatProperties2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkImageFormatProperties          imageFormatProperties;
---   > } VkImageFormatProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageFormatProperties2KHR.html VkImageFormatProperties2KHR registry at www.khronos.org>
-data VkImageFormatProperties2KHR = VkImageFormatProperties2KHR## Addr##
-                                                                ByteArray##
-
-instance Eq VkImageFormatProperties2KHR where
-        (VkImageFormatProperties2KHR## a _) ==
-          x@(VkImageFormatProperties2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageFormatProperties2KHR where
-        (VkImageFormatProperties2KHR## a _) `compare`
-          x@(VkImageFormatProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageFormatProperties2KHR where
-        sizeOf ~_ = #{size VkImageFormatProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageFormatProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkImageFormatProperties2KHR where
-        unsafeAddr (VkImageFormatProperties2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkImageFormatProperties2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkImageFormatProperties2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkImageFormatProperties2KHR where
-        type StructFields VkImageFormatProperties2KHR =
-             '["sType", "pNext", "imageFormatProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageFormatProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkImageFormatProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkImageFormatProperties2KHR
-         where
-        type VkSTypeMType VkImageFormatProperties2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageFormatProperties2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageFormatProperties2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageFormatProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageFormatProperties2KHR where
-        type FieldType "sType" VkImageFormatProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkImageFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageFormatProperties2KHR =
-             #{offset VkImageFormatProperties2KHR, sType}
-        type FieldIsArray "sType" VkImageFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties2KHR, sType}
-
-instance CanReadField "sType" VkImageFormatProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImageFormatProperties2KHR
-         where
-        type VkPNextMType VkImageFormatProperties2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageFormatProperties2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageFormatProperties2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageFormatProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageFormatProperties2KHR where
-        type FieldType "pNext" VkImageFormatProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkImageFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageFormatProperties2KHR =
-             #{offset VkImageFormatProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkImageFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties2KHR, pNext}
-
-instance CanReadField "pNext" VkImageFormatProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkImageFormatProperties VkImageFormatProperties2KHR where
-        type VkImageFormatPropertiesMType VkImageFormatProperties2KHR =
-             VkImageFormatProperties
-
-        {-# NOINLINE vkImageFormatProperties #-}
-        vkImageFormatProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties2KHR, imageFormatProperties})
-
-        {-# INLINE vkImageFormatPropertiesByteOffset #-}
-        vkImageFormatPropertiesByteOffset ~_
-          = #{offset VkImageFormatProperties2KHR, imageFormatProperties}
-
-        {-# INLINE readVkImageFormatProperties #-}
-        readVkImageFormatProperties p
-          = peekByteOff p #{offset VkImageFormatProperties2KHR, imageFormatProperties}
-
-        {-# INLINE writeVkImageFormatProperties #-}
-        writeVkImageFormatProperties p
-          = pokeByteOff p #{offset VkImageFormatProperties2KHR, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageFormatProperties" VkImageFormatProperties2KHR where
-        type FieldType "imageFormatProperties" VkImageFormatProperties2KHR
-             = VkImageFormatProperties
-        type FieldOptional "imageFormatProperties"
-               VkImageFormatProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageFormatProperties"
-               VkImageFormatProperties2KHR
-             =
-             #{offset VkImageFormatProperties2KHR, imageFormatProperties}
-        type FieldIsArray "imageFormatProperties"
-               VkImageFormatProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties2KHR, imageFormatProperties}
-
-instance CanReadField "imageFormatProperties"
-           VkImageFormatProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImageFormatProperties
-
-        {-# INLINE readField #-}
-        readField = readVkImageFormatProperties
-
-instance Show VkImageFormatProperties2KHR where
-        showsPrec d x
-          = showString "VkImageFormatProperties2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkImageFormatProperties = " .
-                            showsPrec d (vkImageFormatProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryBarrier.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryBarrier.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryBarrier.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryBarrier.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier
        (VkImageMemoryBarrier(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                        (VkImage)
 import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange (VkImageSubresourceRange)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageMemoryBarrier {
@@ -33,7 +33,7 @@
 --   >     VkImageSubresourceRange subresourceRange;
 --   > } VkImageMemoryBarrier;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageMemoryBarrier.html VkImageMemoryBarrier registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageMemoryBarrier.html VkImageMemoryBarrier registry at www.khronos.org>
 data VkImageMemoryBarrier = VkImageMemoryBarrier## Addr## ByteArray##
 
 instance Eq VkImageMemoryBarrier where
@@ -83,26 +83,6 @@
         type ReturnedOnly VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageMemoryBarrier = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkImageMemoryBarrier where
-        type VkSTypeMType VkImageMemoryBarrier = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageMemoryBarrier, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageMemoryBarrier, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkImageMemoryBarrier
          where
         type FieldType "sType" VkImageMemoryBarrier = VkStructureType
@@ -117,36 +97,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageMemoryBarrier, sType}
 
-instance CanReadField "sType" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, sType}
 
-instance CanWriteField "sType" VkImageMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImageMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImageMemoryBarrier where
-        type VkPNextMType VkImageMemoryBarrier = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageMemoryBarrier, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageMemoryBarrier, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkImageMemoryBarrier
          where
@@ -162,37 +128,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageMemoryBarrier, pNext}
 
-instance CanReadField "pNext" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSrcAccessMask VkImageMemoryBarrier where
-        type VkSrcAccessMaskMType VkImageMemoryBarrier = VkAccessFlags
-
-        {-# NOINLINE vkSrcAccessMask #-}
-        vkSrcAccessMask x
+         CanReadField "pNext" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, srcAccessMask})
-
-        {-# INLINE vkSrcAccessMaskByteOffset #-}
-        vkSrcAccessMaskByteOffset ~_
-          = #{offset VkImageMemoryBarrier, srcAccessMask}
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, pNext})
 
-        {-# INLINE readVkSrcAccessMask #-}
-        readVkSrcAccessMask p
-          = peekByteOff p #{offset VkImageMemoryBarrier, srcAccessMask}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, pNext}
 
-        {-# INLINE writeVkSrcAccessMask #-}
-        writeVkSrcAccessMask p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, srcAccessMask}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImageMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "srcAccessMask" VkImageMemoryBarrier where
@@ -209,37 +160,22 @@
         fieldOffset
           = #{offset VkImageMemoryBarrier, srcAccessMask}
 
-instance CanReadField "srcAccessMask" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSrcAccessMask
-
-        {-# INLINE readField #-}
-        readField = readVkSrcAccessMask
-
-instance CanWriteField "srcAccessMask" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkSrcAccessMask
-
 instance {-# OVERLAPPING #-}
-         HasVkDstAccessMask VkImageMemoryBarrier where
-        type VkDstAccessMaskMType VkImageMemoryBarrier = VkAccessFlags
-
-        {-# NOINLINE vkDstAccessMask #-}
-        vkDstAccessMask x
+         CanReadField "srcAccessMask" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, dstAccessMask})
-
-        {-# INLINE vkDstAccessMaskByteOffset #-}
-        vkDstAccessMaskByteOffset ~_
-          = #{offset VkImageMemoryBarrier, dstAccessMask}
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, srcAccessMask})
 
-        {-# INLINE readVkDstAccessMask #-}
-        readVkDstAccessMask p
-          = peekByteOff p #{offset VkImageMemoryBarrier, dstAccessMask}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, srcAccessMask}
 
-        {-# INLINE writeVkDstAccessMask #-}
-        writeVkDstAccessMask p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, dstAccessMask}
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcAccessMask" VkImageMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, srcAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "dstAccessMask" VkImageMemoryBarrier where
@@ -256,37 +192,22 @@
         fieldOffset
           = #{offset VkImageMemoryBarrier, dstAccessMask}
 
-instance CanReadField "dstAccessMask" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkDstAccessMask
+instance {-# OVERLAPPING #-}
+         CanReadField "dstAccessMask" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, dstAccessMask})
 
         {-# INLINE readField #-}
-        readField = readVkDstAccessMask
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, dstAccessMask}
 
-instance CanWriteField "dstAccessMask" VkImageMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstAccessMask" VkImageMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkDstAccessMask
-
-instance {-# OVERLAPPING #-} HasVkOldLayout VkImageMemoryBarrier
-         where
-        type VkOldLayoutMType VkImageMemoryBarrier = VkImageLayout
-
-        {-# NOINLINE vkOldLayout #-}
-        vkOldLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, oldLayout})
-
-        {-# INLINE vkOldLayoutByteOffset #-}
-        vkOldLayoutByteOffset ~_
-          = #{offset VkImageMemoryBarrier, oldLayout}
-
-        {-# INLINE readVkOldLayout #-}
-        readVkOldLayout p
-          = peekByteOff p #{offset VkImageMemoryBarrier, oldLayout}
-
-        {-# INLINE writeVkOldLayout #-}
-        writeVkOldLayout p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, oldLayout}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, dstAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "oldLayout" VkImageMemoryBarrier where
@@ -302,37 +223,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageMemoryBarrier, oldLayout}
 
-instance CanReadField "oldLayout" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkOldLayout
+instance {-# OVERLAPPING #-}
+         CanReadField "oldLayout" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, oldLayout})
 
         {-# INLINE readField #-}
-        readField = readVkOldLayout
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, oldLayout}
 
-instance CanWriteField "oldLayout" VkImageMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "oldLayout" VkImageMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkOldLayout
-
-instance {-# OVERLAPPING #-} HasVkNewLayout VkImageMemoryBarrier
-         where
-        type VkNewLayoutMType VkImageMemoryBarrier = VkImageLayout
-
-        {-# NOINLINE vkNewLayout #-}
-        vkNewLayout x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, newLayout})
-
-        {-# INLINE vkNewLayoutByteOffset #-}
-        vkNewLayoutByteOffset ~_
-          = #{offset VkImageMemoryBarrier, newLayout}
-
-        {-# INLINE readVkNewLayout #-}
-        readVkNewLayout p
-          = peekByteOff p #{offset VkImageMemoryBarrier, newLayout}
-
-        {-# INLINE writeVkNewLayout #-}
-        writeVkNewLayout p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, newLayout}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, oldLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "newLayout" VkImageMemoryBarrier where
@@ -348,37 +254,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageMemoryBarrier, newLayout}
 
-instance CanReadField "newLayout" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkNewLayout
-
-        {-# INLINE readField #-}
-        readField = readVkNewLayout
-
-instance CanWriteField "newLayout" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkNewLayout
-
 instance {-# OVERLAPPING #-}
-         HasVkSrcQueueFamilyIndex VkImageMemoryBarrier where
-        type VkSrcQueueFamilyIndexMType VkImageMemoryBarrier = Word32
-
-        {-# NOINLINE vkSrcQueueFamilyIndex #-}
-        vkSrcQueueFamilyIndex x
+         CanReadField "newLayout" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, srcQueueFamilyIndex})
-
-        {-# INLINE vkSrcQueueFamilyIndexByteOffset #-}
-        vkSrcQueueFamilyIndexByteOffset ~_
-          = #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, newLayout})
 
-        {-# INLINE readVkSrcQueueFamilyIndex #-}
-        readVkSrcQueueFamilyIndex p
-          = peekByteOff p #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, newLayout}
 
-        {-# INLINE writeVkSrcQueueFamilyIndex #-}
-        writeVkSrcQueueFamilyIndex p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "newLayout" VkImageMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, newLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "srcQueueFamilyIndex" VkImageMemoryBarrier where
@@ -397,39 +288,22 @@
         fieldOffset
           = #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
 
-instance CanReadField "srcQueueFamilyIndex" VkImageMemoryBarrier
-         where
-        {-# INLINE getField #-}
-        getField = vkSrcQueueFamilyIndex
-
-        {-# INLINE readField #-}
-        readField = readVkSrcQueueFamilyIndex
-
-instance CanWriteField "srcQueueFamilyIndex" VkImageMemoryBarrier
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSrcQueueFamilyIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkDstQueueFamilyIndex VkImageMemoryBarrier where
-        type VkDstQueueFamilyIndexMType VkImageMemoryBarrier = Word32
-
-        {-# NOINLINE vkDstQueueFamilyIndex #-}
-        vkDstQueueFamilyIndex x
+         CanReadField "srcQueueFamilyIndex" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, dstQueueFamilyIndex})
-
-        {-# INLINE vkDstQueueFamilyIndexByteOffset #-}
-        vkDstQueueFamilyIndexByteOffset ~_
-          = #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, srcQueueFamilyIndex})
 
-        {-# INLINE readVkDstQueueFamilyIndex #-}
-        readVkDstQueueFamilyIndex p
-          = peekByteOff p #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
 
-        {-# INLINE writeVkDstQueueFamilyIndex #-}
-        writeVkDstQueueFamilyIndex p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcQueueFamilyIndex" VkImageMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "dstQueueFamilyIndex" VkImageMemoryBarrier where
@@ -448,38 +322,22 @@
         fieldOffset
           = #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
 
-instance CanReadField "dstQueueFamilyIndex" VkImageMemoryBarrier
-         where
-        {-# INLINE getField #-}
-        getField = vkDstQueueFamilyIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "dstQueueFamilyIndex" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, dstQueueFamilyIndex})
 
         {-# INLINE readField #-}
-        readField = readVkDstQueueFamilyIndex
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
 
-instance CanWriteField "dstQueueFamilyIndex" VkImageMemoryBarrier
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstQueueFamilyIndex" VkImageMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkDstQueueFamilyIndex
-
-instance {-# OVERLAPPING #-} HasVkImage VkImageMemoryBarrier where
-        type VkImageMType VkImageMemoryBarrier = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkImageMemoryBarrier, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkImageMemoryBarrier, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, image}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
 
 instance {-# OVERLAPPING #-} HasField "image" VkImageMemoryBarrier
          where
@@ -495,38 +353,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageMemoryBarrier, image}
 
-instance CanReadField "image" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
 instance {-# OVERLAPPING #-}
-         HasVkSubresourceRange VkImageMemoryBarrier where
-        type VkSubresourceRangeMType VkImageMemoryBarrier =
-             VkImageSubresourceRange
-
-        {-# NOINLINE vkSubresourceRange #-}
-        vkSubresourceRange x
+         CanReadField "image" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, subresourceRange})
-
-        {-# INLINE vkSubresourceRangeByteOffset #-}
-        vkSubresourceRangeByteOffset ~_
-          = #{offset VkImageMemoryBarrier, subresourceRange}
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, image})
 
-        {-# INLINE readVkSubresourceRange #-}
-        readVkSubresourceRange p
-          = peekByteOff p #{offset VkImageMemoryBarrier, subresourceRange}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, image}
 
-        {-# INLINE writeVkSubresourceRange #-}
-        writeVkSubresourceRange p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, subresourceRange}
+instance {-# OVERLAPPING #-}
+         CanWriteField "image" VkImageMemoryBarrier where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, image}
 
 instance {-# OVERLAPPING #-}
          HasField "subresourceRange" VkImageMemoryBarrier where
@@ -544,51 +386,60 @@
         fieldOffset
           = #{offset VkImageMemoryBarrier, subresourceRange}
 
-instance CanReadField "subresourceRange" VkImageMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSubresourceRange
+instance {-# OVERLAPPING #-}
+         CanReadField "subresourceRange" VkImageMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, subresourceRange})
 
         {-# INLINE readField #-}
-        readField = readVkSubresourceRange
+        readField p
+          = peekByteOff p #{offset VkImageMemoryBarrier, subresourceRange}
 
-instance CanWriteField "subresourceRange" VkImageMemoryBarrier
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "subresourceRange" VkImageMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkSubresourceRange
+        writeField p
+          = pokeByteOff p #{offset VkImageMemoryBarrier, subresourceRange}
 
 instance Show VkImageMemoryBarrier where
         showsPrec d x
           = showString "VkImageMemoryBarrier {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSrcAccessMask = " .
-                            showsPrec d (vkSrcAccessMask x) .
+                          showString "srcAccessMask = " .
+                            showsPrec d (getField @"srcAccessMask" x) .
                               showString ", " .
-                                showString "vkDstAccessMask = " .
-                                  showsPrec d (vkDstAccessMask x) .
+                                showString "dstAccessMask = " .
+                                  showsPrec d (getField @"dstAccessMask" x) .
                                     showString ", " .
-                                      showString "vkOldLayout = " .
-                                        showsPrec d (vkOldLayout x) .
+                                      showString "oldLayout = " .
+                                        showsPrec d (getField @"oldLayout" x) .
                                           showString ", " .
-                                            showString "vkNewLayout = " .
-                                              showsPrec d (vkNewLayout x) .
+                                            showString "newLayout = " .
+                                              showsPrec d (getField @"newLayout" x) .
                                                 showString ", " .
-                                                  showString "vkSrcQueueFamilyIndex = " .
-                                                    showsPrec d (vkSrcQueueFamilyIndex x) .
+                                                  showString "srcQueueFamilyIndex = " .
+                                                    showsPrec d (getField @"srcQueueFamilyIndex" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkDstQueueFamilyIndex = " .
-                                                          showsPrec d (vkDstQueueFamilyIndex x) .
+                                                        showString "dstQueueFamilyIndex = " .
+                                                          showsPrec d
+                                                            (getField @"dstQueueFamilyIndex" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkImage = " .
-                                                                showsPrec d (vkImage x) .
+                                                              showString "image = " .
+                                                                showsPrec d (getField @"image" x) .
                                                                   showString ", " .
-                                                                    showString
-                                                                      "vkSubresourceRange = "
+                                                                    showString "subresourceRange = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkSubresourceRange x)
+                                                                        (getField
+                                                                           @"subresourceRange"
+                                                                           x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2.hsc
@@ -0,0 +1,186 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2
+       (VkImageMemoryRequirementsInfo2(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkImage)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImageMemoryRequirementsInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                                                          pNext;
+--   >     VkImage                                                              image;
+--   > } VkImageMemoryRequirementsInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageMemoryRequirementsInfo2.html VkImageMemoryRequirementsInfo2 registry at www.khronos.org>
+data VkImageMemoryRequirementsInfo2 = VkImageMemoryRequirementsInfo2## Addr##
+                                                                      ByteArray##
+
+instance Eq VkImageMemoryRequirementsInfo2 where
+        (VkImageMemoryRequirementsInfo2## a _) ==
+          x@(VkImageMemoryRequirementsInfo2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImageMemoryRequirementsInfo2 where
+        (VkImageMemoryRequirementsInfo2## a _) `compare`
+          x@(VkImageMemoryRequirementsInfo2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImageMemoryRequirementsInfo2 where
+        unsafeAddr (VkImageMemoryRequirementsInfo2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImageMemoryRequirementsInfo2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImageMemoryRequirementsInfo2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2KHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR
+       (VkImageMemoryRequirementsInfo2(..),
+        VkImageMemoryRequirementsInfo2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2 (VkImageMemoryRequirementsInfo2 (..))
+
+-- | Alias for `VkImageMemoryRequirementsInfo2`
+type VkImageMemoryRequirementsInfo2KHR =
+     VkImageMemoryRequirementsInfo2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageMemoryRequirementsInfo2KHR.hsc
+++ /dev/null
@@ -1,244 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR
-       (VkImageMemoryRequirementsInfo2KHR(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkImage)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkImageMemoryRequirementsInfo2KHR {
---   >     VkStructureType sType;
---   >     const void*                                                          pNext;
---   >     VkImage                                                              image;
---   > } VkImageMemoryRequirementsInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageMemoryRequirementsInfo2KHR.html VkImageMemoryRequirementsInfo2KHR registry at www.khronos.org>
-data VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2KHR## Addr##
-                                                                            ByteArray##
-
-instance Eq VkImageMemoryRequirementsInfo2KHR where
-        (VkImageMemoryRequirementsInfo2KHR## a _) ==
-          x@(VkImageMemoryRequirementsInfo2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageMemoryRequirementsInfo2KHR where
-        (VkImageMemoryRequirementsInfo2KHR## a _) `compare`
-          x@(VkImageMemoryRequirementsInfo2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageMemoryRequirementsInfo2KHR where
-        sizeOf ~_ = #{size VkImageMemoryRequirementsInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageMemoryRequirementsInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkImageMemoryRequirementsInfo2KHR where
-        unsafeAddr (VkImageMemoryRequirementsInfo2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkImageMemoryRequirementsInfo2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkImageMemoryRequirementsInfo2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkImageMemoryRequirementsInfo2KHR where
-        type StructFields VkImageMemoryRequirementsInfo2KHR =
-             '["sType", "pNext", "image"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageMemoryRequirementsInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageMemoryRequirementsInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageMemoryRequirementsInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkImageMemoryRequirementsInfo2KHR where
-        type VkSTypeMType VkImageMemoryRequirementsInfo2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryRequirementsInfo2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageMemoryRequirementsInfo2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageMemoryRequirementsInfo2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageMemoryRequirementsInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageMemoryRequirementsInfo2KHR where
-        type FieldType "sType" VkImageMemoryRequirementsInfo2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkImageMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageMemoryRequirementsInfo2KHR =
-             #{offset VkImageMemoryRequirementsInfo2KHR, sType}
-        type FieldIsArray "sType" VkImageMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryRequirementsInfo2KHR, sType}
-
-instance CanReadField "sType" VkImageMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImageMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkImageMemoryRequirementsInfo2KHR where
-        type VkPNextMType VkImageMemoryRequirementsInfo2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryRequirementsInfo2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageMemoryRequirementsInfo2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageMemoryRequirementsInfo2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageMemoryRequirementsInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageMemoryRequirementsInfo2KHR where
-        type FieldType "pNext" VkImageMemoryRequirementsInfo2KHR = Ptr Void
-        type FieldOptional "pNext" VkImageMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageMemoryRequirementsInfo2KHR =
-             #{offset VkImageMemoryRequirementsInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkImageMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryRequirementsInfo2KHR, pNext}
-
-instance CanReadField "pNext" VkImageMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImageMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkImage VkImageMemoryRequirementsInfo2KHR where
-        type VkImageMType VkImageMemoryRequirementsInfo2KHR = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryRequirementsInfo2KHR, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkImageMemoryRequirementsInfo2KHR, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkImageMemoryRequirementsInfo2KHR, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkImageMemoryRequirementsInfo2KHR, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkImageMemoryRequirementsInfo2KHR where
-        type FieldType "image" VkImageMemoryRequirementsInfo2KHR = VkImage
-        type FieldOptional "image" VkImageMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkImageMemoryRequirementsInfo2KHR =
-             #{offset VkImageMemoryRequirementsInfo2KHR, image}
-        type FieldIsArray "image" VkImageMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryRequirementsInfo2KHR, image}
-
-instance CanReadField "image" VkImageMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image" VkImageMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
-instance Show VkImageMemoryRequirementsInfo2KHR where
-        showsPrec d x
-          = showString "VkImageMemoryRequirementsInfo2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkImage = " . showsPrec d (vkImage x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfo.hsc
@@ -0,0 +1,198 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfo
+       (VkImagePlaneMemoryRequirementsInfo(..)) where
+import           Foreign.Storable                                            (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags               (VkImageAspectFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2 (VkImageMemoryRequirementsInfo2)
+import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImagePlaneMemoryRequirementsInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImageAspectFlagBits            planeAspect;
+--   > } VkImagePlaneMemoryRequirementsInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImagePlaneMemoryRequirementsInfo.html VkImagePlaneMemoryRequirementsInfo registry at www.khronos.org>
+data VkImagePlaneMemoryRequirementsInfo = VkImagePlaneMemoryRequirementsInfo## Addr##
+                                                                              ByteArray##
+
+instance Eq VkImagePlaneMemoryRequirementsInfo where
+        (VkImagePlaneMemoryRequirementsInfo## a _) ==
+          x@(VkImagePlaneMemoryRequirementsInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImagePlaneMemoryRequirementsInfo where
+        (VkImagePlaneMemoryRequirementsInfo## a _) `compare`
+          x@(VkImagePlaneMemoryRequirementsInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImagePlaneMemoryRequirementsInfo where
+        unsafeAddr (VkImagePlaneMemoryRequirementsInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImagePlaneMemoryRequirementsInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImagePlaneMemoryRequirementsInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfoKHR
+       (VkImagePlaneMemoryRequirementsInfo(..),
+        VkImagePlaneMemoryRequirementsInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfo (VkImagePlaneMemoryRequirementsInfo (..))
+
+-- | Alias for `VkImagePlaneMemoryRequirementsInfo`
+type VkImagePlaneMemoryRequirementsInfoKHR =
+     VkImagePlaneMemoryRequirementsInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImagePlaneMemoryRequirementsInfoKHR.hsc
+++ /dev/null
@@ -1,260 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfoKHR
-       (VkImagePlaneMemoryRequirementsInfoKHR(..)) where
-import           Foreign.Storable                                               (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags                  (VkImageAspectFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                     (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR (VkImageMemoryRequirementsInfo2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                               (unsafeDupablePerformIO)
-
--- | > typedef struct VkImagePlaneMemoryRequirementsInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImageAspectFlagBits            planeAspect;
---   > } VkImagePlaneMemoryRequirementsInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html VkImagePlaneMemoryRequirementsInfoKHR registry at www.khronos.org>
-data VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfoKHR## Addr##
-                                                                                    ByteArray##
-
-instance Eq VkImagePlaneMemoryRequirementsInfoKHR where
-        (VkImagePlaneMemoryRequirementsInfoKHR## a _) ==
-          x@(VkImagePlaneMemoryRequirementsInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImagePlaneMemoryRequirementsInfoKHR where
-        (VkImagePlaneMemoryRequirementsInfoKHR## a _) `compare`
-          x@(VkImagePlaneMemoryRequirementsInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkImagePlaneMemoryRequirementsInfoKHR where
-        sizeOf ~_
-          = #{size VkImagePlaneMemoryRequirementsInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImagePlaneMemoryRequirementsInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        unsafeAddr (VkImagePlaneMemoryRequirementsInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkImagePlaneMemoryRequirementsInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkImagePlaneMemoryRequirementsInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkImagePlaneMemoryRequirementsInfoKHR where
-        type StructFields VkImagePlaneMemoryRequirementsInfoKHR =
-             '["sType", "pNext", "planeAspect"] -- ' closing tick for hsc2hs
-        type CUnionType VkImagePlaneMemoryRequirementsInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImagePlaneMemoryRequirementsInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImagePlaneMemoryRequirementsInfoKHR =
-             '[VkImageMemoryRequirementsInfo2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkImagePlaneMemoryRequirementsInfoKHR where
-        type VkSTypeMType VkImagePlaneMemoryRequirementsInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImagePlaneMemoryRequirementsInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImagePlaneMemoryRequirementsInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImagePlaneMemoryRequirementsInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImagePlaneMemoryRequirementsInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImagePlaneMemoryRequirementsInfoKHR where
-        type FieldType "sType" VkImagePlaneMemoryRequirementsInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImagePlaneMemoryRequirementsInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImagePlaneMemoryRequirementsInfoKHR =
-             #{offset VkImagePlaneMemoryRequirementsInfoKHR, sType}
-        type FieldIsArray "sType" VkImagePlaneMemoryRequirementsInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImagePlaneMemoryRequirementsInfoKHR, sType}
-
-instance CanReadField "sType" VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkImagePlaneMemoryRequirementsInfoKHR where
-        type VkPNextMType VkImagePlaneMemoryRequirementsInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImagePlaneMemoryRequirementsInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImagePlaneMemoryRequirementsInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImagePlaneMemoryRequirementsInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImagePlaneMemoryRequirementsInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImagePlaneMemoryRequirementsInfoKHR where
-        type FieldType "pNext" VkImagePlaneMemoryRequirementsInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkImagePlaneMemoryRequirementsInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImagePlaneMemoryRequirementsInfoKHR =
-             #{offset VkImagePlaneMemoryRequirementsInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImagePlaneMemoryRequirementsInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImagePlaneMemoryRequirementsInfoKHR, pNext}
-
-instance CanReadField "pNext" VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPlaneAspect VkImagePlaneMemoryRequirementsInfoKHR where
-        type VkPlaneAspectMType VkImagePlaneMemoryRequirementsInfoKHR =
-             VkImageAspectFlagBits
-
-        {-# NOINLINE vkPlaneAspect #-}
-        vkPlaneAspect x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImagePlaneMemoryRequirementsInfoKHR, planeAspect})
-
-        {-# INLINE vkPlaneAspectByteOffset #-}
-        vkPlaneAspectByteOffset ~_
-          = #{offset VkImagePlaneMemoryRequirementsInfoKHR, planeAspect}
-
-        {-# INLINE readVkPlaneAspect #-}
-        readVkPlaneAspect p
-          = peekByteOff p #{offset VkImagePlaneMemoryRequirementsInfoKHR, planeAspect}
-
-        {-# INLINE writeVkPlaneAspect #-}
-        writeVkPlaneAspect p
-          = pokeByteOff p #{offset VkImagePlaneMemoryRequirementsInfoKHR, planeAspect}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeAspect" VkImagePlaneMemoryRequirementsInfoKHR where
-        type FieldType "planeAspect" VkImagePlaneMemoryRequirementsInfoKHR
-             = VkImageAspectFlagBits
-        type FieldOptional "planeAspect"
-               VkImagePlaneMemoryRequirementsInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeAspect"
-               VkImagePlaneMemoryRequirementsInfoKHR
-             =
-             #{offset VkImagePlaneMemoryRequirementsInfoKHR, planeAspect}
-        type FieldIsArray "planeAspect"
-               VkImagePlaneMemoryRequirementsInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImagePlaneMemoryRequirementsInfoKHR, planeAspect}
-
-instance CanReadField "planeAspect"
-           VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPlaneAspect
-
-        {-# INLINE readField #-}
-        readField = readVkPlaneAspect
-
-instance CanWriteField "planeAspect"
-           VkImagePlaneMemoryRequirementsInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPlaneAspect
-
-instance Show VkImagePlaneMemoryRequirementsInfoKHR where
-        showsPrec d x
-          = showString "VkImagePlaneMemoryRequirementsInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPlaneAspect = " .
-                            showsPrec d (vkPlaneAspect x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageResolve.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageResolve.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageResolve.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageResolve.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageResolve
        (VkImageResolve(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Struct.VkExtent3D               (VkExtent3D)
 import           Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers (VkImageSubresourceLayers)
 import           Graphics.Vulkan.Types.Struct.VkOffset3D               (VkOffset3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageResolve {
@@ -26,7 +26,7 @@
 --   >     VkExtent3D             extent;
 --   > } VkImageResolve;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageResolve.html VkImageResolve registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageResolve.html VkImageResolve registry at www.khronos.org>
 data VkImageResolve = VkImageResolve## Addr## ByteArray##
 
 instance Eq VkImageResolve where
@@ -75,28 +75,6 @@
         type ReturnedOnly VkImageResolve = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageResolve = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSrcSubresource VkImageResolve
-         where
-        type VkSrcSubresourceMType VkImageResolve =
-             VkImageSubresourceLayers
-
-        {-# NOINLINE vkSrcSubresource #-}
-        vkSrcSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, srcSubresource})
-
-        {-# INLINE vkSrcSubresourceByteOffset #-}
-        vkSrcSubresourceByteOffset ~_
-          = #{offset VkImageResolve, srcSubresource}
-
-        {-# INLINE readVkSrcSubresource #-}
-        readVkSrcSubresource p
-          = peekByteOff p #{offset VkImageResolve, srcSubresource}
-
-        {-# INLINE writeVkSrcSubresource #-}
-        writeVkSrcSubresource p
-          = pokeByteOff p #{offset VkImageResolve, srcSubresource}
-
 instance {-# OVERLAPPING #-}
          HasField "srcSubresource" VkImageResolve where
         type FieldType "srcSubresource" VkImageResolve =
@@ -112,36 +90,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageResolve, srcSubresource}
 
-instance CanReadField "srcSubresource" VkImageResolve where
-        {-# INLINE getField #-}
-        getField = vkSrcSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "srcSubresource" VkImageResolve where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageResolve, srcSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkSrcSubresource
+        readField p
+          = peekByteOff p #{offset VkImageResolve, srcSubresource}
 
-instance CanWriteField "srcSubresource" VkImageResolve where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcSubresource" VkImageResolve where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcSubresource
-
-instance {-# OVERLAPPING #-} HasVkSrcOffset VkImageResolve where
-        type VkSrcOffsetMType VkImageResolve = VkOffset3D
-
-        {-# NOINLINE vkSrcOffset #-}
-        vkSrcOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, srcOffset})
-
-        {-# INLINE vkSrcOffsetByteOffset #-}
-        vkSrcOffsetByteOffset ~_
-          = #{offset VkImageResolve, srcOffset}
-
-        {-# INLINE readVkSrcOffset #-}
-        readVkSrcOffset p
-          = peekByteOff p #{offset VkImageResolve, srcOffset}
-
-        {-# INLINE writeVkSrcOffset #-}
-        writeVkSrcOffset p
-          = pokeByteOff p #{offset VkImageResolve, srcOffset}
+        writeField p
+          = pokeByteOff p #{offset VkImageResolve, srcSubresource}
 
 instance {-# OVERLAPPING #-} HasField "srcOffset" VkImageResolve
          where
@@ -157,38 +121,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageResolve, srcOffset}
 
-instance CanReadField "srcOffset" VkImageResolve where
-        {-# INLINE getField #-}
-        getField = vkSrcOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "srcOffset" VkImageResolve where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageResolve, srcOffset})
 
         {-# INLINE readField #-}
-        readField = readVkSrcOffset
+        readField p
+          = peekByteOff p #{offset VkImageResolve, srcOffset}
 
-instance CanWriteField "srcOffset" VkImageResolve where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcOffset" VkImageResolve where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcOffset
-
-instance {-# OVERLAPPING #-} HasVkDstSubresource VkImageResolve
-         where
-        type VkDstSubresourceMType VkImageResolve =
-             VkImageSubresourceLayers
-
-        {-# NOINLINE vkDstSubresource #-}
-        vkDstSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, dstSubresource})
-
-        {-# INLINE vkDstSubresourceByteOffset #-}
-        vkDstSubresourceByteOffset ~_
-          = #{offset VkImageResolve, dstSubresource}
-
-        {-# INLINE readVkDstSubresource #-}
-        readVkDstSubresource p
-          = peekByteOff p #{offset VkImageResolve, dstSubresource}
-
-        {-# INLINE writeVkDstSubresource #-}
-        writeVkDstSubresource p
-          = pokeByteOff p #{offset VkImageResolve, dstSubresource}
+        writeField p
+          = pokeByteOff p #{offset VkImageResolve, srcOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "dstSubresource" VkImageResolve where
@@ -205,36 +153,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageResolve, dstSubresource}
 
-instance CanReadField "dstSubresource" VkImageResolve where
-        {-# INLINE getField #-}
-        getField = vkDstSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "dstSubresource" VkImageResolve where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageResolve, dstSubresource})
 
         {-# INLINE readField #-}
-        readField = readVkDstSubresource
+        readField p
+          = peekByteOff p #{offset VkImageResolve, dstSubresource}
 
-instance CanWriteField "dstSubresource" VkImageResolve where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstSubresource" VkImageResolve where
         {-# INLINE writeField #-}
-        writeField = writeVkDstSubresource
-
-instance {-# OVERLAPPING #-} HasVkDstOffset VkImageResolve where
-        type VkDstOffsetMType VkImageResolve = VkOffset3D
-
-        {-# NOINLINE vkDstOffset #-}
-        vkDstOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, dstOffset})
-
-        {-# INLINE vkDstOffsetByteOffset #-}
-        vkDstOffsetByteOffset ~_
-          = #{offset VkImageResolve, dstOffset}
-
-        {-# INLINE readVkDstOffset #-}
-        readVkDstOffset p
-          = peekByteOff p #{offset VkImageResolve, dstOffset}
-
-        {-# INLINE writeVkDstOffset #-}
-        writeVkDstOffset p
-          = pokeByteOff p #{offset VkImageResolve, dstOffset}
+        writeField p
+          = pokeByteOff p #{offset VkImageResolve, dstSubresource}
 
 instance {-# OVERLAPPING #-} HasField "dstOffset" VkImageResolve
          where
@@ -250,36 +184,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageResolve, dstOffset}
 
-instance CanReadField "dstOffset" VkImageResolve where
-        {-# INLINE getField #-}
-        getField = vkDstOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "dstOffset" VkImageResolve where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageResolve, dstOffset})
 
         {-# INLINE readField #-}
-        readField = readVkDstOffset
+        readField p
+          = peekByteOff p #{offset VkImageResolve, dstOffset}
 
-instance CanWriteField "dstOffset" VkImageResolve where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstOffset" VkImageResolve where
         {-# INLINE writeField #-}
-        writeField = writeVkDstOffset
-
-instance {-# OVERLAPPING #-} HasVkExtent VkImageResolve where
-        type VkExtentMType VkImageResolve = VkExtent3D
-
-        {-# NOINLINE vkExtent #-}
-        vkExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, extent})
-
-        {-# INLINE vkExtentByteOffset #-}
-        vkExtentByteOffset ~_
-          = #{offset VkImageResolve, extent}
-
-        {-# INLINE readVkExtent #-}
-        readVkExtent p
-          = peekByteOff p #{offset VkImageResolve, extent}
-
-        {-# INLINE writeVkExtent #-}
-        writeVkExtent p
-          = pokeByteOff p #{offset VkImageResolve, extent}
+        writeField p
+          = pokeByteOff p #{offset VkImageResolve, dstOffset}
 
 instance {-# OVERLAPPING #-} HasField "extent" VkImageResolve where
         type FieldType "extent" VkImageResolve = VkExtent3D
@@ -294,31 +214,37 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageResolve, extent}
 
-instance CanReadField "extent" VkImageResolve where
-        {-# INLINE getField #-}
-        getField = vkExtent
+instance {-# OVERLAPPING #-} CanReadField "extent" VkImageResolve
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageResolve, extent})
 
         {-# INLINE readField #-}
-        readField = readVkExtent
+        readField p
+          = peekByteOff p #{offset VkImageResolve, extent}
 
-instance CanWriteField "extent" VkImageResolve where
+instance {-# OVERLAPPING #-} CanWriteField "extent" VkImageResolve
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkExtent
+        writeField p
+          = pokeByteOff p #{offset VkImageResolve, extent}
 
 instance Show VkImageResolve where
         showsPrec d x
           = showString "VkImageResolve {" .
-              showString "vkSrcSubresource = " .
-                showsPrec d (vkSrcSubresource x) .
+              showString "srcSubresource = " .
+                showsPrec d (getField @"srcSubresource" x) .
                   showString ", " .
-                    showString "vkSrcOffset = " .
-                      showsPrec d (vkSrcOffset x) .
+                    showString "srcOffset = " .
+                      showsPrec d (getField @"srcOffset" x) .
                         showString ", " .
-                          showString "vkDstSubresource = " .
-                            showsPrec d (vkDstSubresource x) .
+                          showString "dstSubresource = " .
+                            showsPrec d (getField @"dstSubresource" x) .
                               showString ", " .
-                                showString "vkDstOffset = " .
-                                  showsPrec d (vkDstOffset x) .
+                                showString "dstOffset = " .
+                                  showsPrec d (getField @"dstOffset" x) .
                                     showString ", " .
-                                      showString "vkExtent = " .
-                                        showsPrec d (vkExtent x) . showChar '}'
+                                      showString "extent = " .
+                                        showsPrec d (getField @"extent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2.hsc
@@ -0,0 +1,197 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2
+       (VkImageSparseMemoryRequirementsInfo2(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkImage)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImageSparseMemoryRequirementsInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                                                          pNext;
+--   >     VkImage                                                              image;
+--   > } VkImageSparseMemoryRequirementsInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageSparseMemoryRequirementsInfo2.html VkImageSparseMemoryRequirementsInfo2 registry at www.khronos.org>
+data VkImageSparseMemoryRequirementsInfo2 = VkImageSparseMemoryRequirementsInfo2## Addr##
+                                                                                  ByteArray##
+
+instance Eq VkImageSparseMemoryRequirementsInfo2 where
+        (VkImageSparseMemoryRequirementsInfo2## a _) ==
+          x@(VkImageSparseMemoryRequirementsInfo2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImageSparseMemoryRequirementsInfo2 where
+        (VkImageSparseMemoryRequirementsInfo2## a _) `compare`
+          x@(VkImageSparseMemoryRequirementsInfo2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImageSparseMemoryRequirementsInfo2
+         where
+        unsafeAddr (VkImageSparseMemoryRequirementsInfo2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImageSparseMemoryRequirementsInfo2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImageSparseMemoryRequirementsInfo2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2KHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2KHR
+       (VkImageSparseMemoryRequirementsInfo2(..),
+        VkImageSparseMemoryRequirementsInfo2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2
+                                                                                    (VkImageSparseMemoryRequirementsInfo2 (..))
+
+-- | Alias for `VkImageSparseMemoryRequirementsInfo2`
+type VkImageSparseMemoryRequirementsInfo2KHR =
+     VkImageSparseMemoryRequirementsInfo2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSparseMemoryRequirementsInfo2KHR.hsc
+++ /dev/null
@@ -1,256 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2KHR
-       (VkImageSparseMemoryRequirementsInfo2KHR(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkImage)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkImageSparseMemoryRequirementsInfo2KHR {
---   >     VkStructureType sType;
---   >     const void*                                                          pNext;
---   >     VkImage                                                              image;
---   > } VkImageSparseMemoryRequirementsInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html VkImageSparseMemoryRequirementsInfo2KHR registry at www.khronos.org>
-data VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2KHR## Addr##
-                                                                                        ByteArray##
-
-instance Eq VkImageSparseMemoryRequirementsInfo2KHR where
-        (VkImageSparseMemoryRequirementsInfo2KHR## a _) ==
-          x@(VkImageSparseMemoryRequirementsInfo2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSparseMemoryRequirementsInfo2KHR where
-        (VkImageSparseMemoryRequirementsInfo2KHR## a _) `compare`
-          x@(VkImageSparseMemoryRequirementsInfo2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSparseMemoryRequirementsInfo2KHR where
-        sizeOf ~_
-          = #{size VkImageSparseMemoryRequirementsInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageSparseMemoryRequirementsInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        unsafeAddr (VkImageSparseMemoryRequirementsInfo2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkImageSparseMemoryRequirementsInfo2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkImageSparseMemoryRequirementsInfo2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        type StructFields VkImageSparseMemoryRequirementsInfo2KHR =
-             '["sType", "pNext", "image"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageSparseMemoryRequirementsInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSparseMemoryRequirementsInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSparseMemoryRequirementsInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkImageSparseMemoryRequirementsInfo2KHR where
-        type VkSTypeMType VkImageSparseMemoryRequirementsInfo2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSparseMemoryRequirementsInfo2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageSparseMemoryRequirementsInfo2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageSparseMemoryRequirementsInfo2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageSparseMemoryRequirementsInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageSparseMemoryRequirementsInfo2KHR where
-        type FieldType "sType" VkImageSparseMemoryRequirementsInfo2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkImageSparseMemoryRequirementsInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageSparseMemoryRequirementsInfo2KHR =
-             #{offset VkImageSparseMemoryRequirementsInfo2KHR, sType}
-        type FieldIsArray "sType" VkImageSparseMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSparseMemoryRequirementsInfo2KHR, sType}
-
-instance CanReadField "sType"
-           VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkImageSparseMemoryRequirementsInfo2KHR where
-        type VkPNextMType VkImageSparseMemoryRequirementsInfo2KHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSparseMemoryRequirementsInfo2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageSparseMemoryRequirementsInfo2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageSparseMemoryRequirementsInfo2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageSparseMemoryRequirementsInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageSparseMemoryRequirementsInfo2KHR where
-        type FieldType "pNext" VkImageSparseMemoryRequirementsInfo2KHR =
-             Ptr Void
-        type FieldOptional "pNext" VkImageSparseMemoryRequirementsInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageSparseMemoryRequirementsInfo2KHR =
-             #{offset VkImageSparseMemoryRequirementsInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkImageSparseMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSparseMemoryRequirementsInfo2KHR, pNext}
-
-instance CanReadField "pNext"
-           VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkImage VkImageSparseMemoryRequirementsInfo2KHR where
-        type VkImageMType VkImageSparseMemoryRequirementsInfo2KHR = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSparseMemoryRequirementsInfo2KHR, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkImageSparseMemoryRequirementsInfo2KHR, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkImageSparseMemoryRequirementsInfo2KHR, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkImageSparseMemoryRequirementsInfo2KHR, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkImageSparseMemoryRequirementsInfo2KHR where
-        type FieldType "image" VkImageSparseMemoryRequirementsInfo2KHR =
-             VkImage
-        type FieldOptional "image" VkImageSparseMemoryRequirementsInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkImageSparseMemoryRequirementsInfo2KHR =
-             #{offset VkImageSparseMemoryRequirementsInfo2KHR, image}
-        type FieldIsArray "image" VkImageSparseMemoryRequirementsInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSparseMemoryRequirementsInfo2KHR, image}
-
-instance CanReadField "image"
-           VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image"
-           VkImageSparseMemoryRequirementsInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
-instance Show VkImageSparseMemoryRequirementsInfo2KHR where
-        showsPrec d x
-          = showString "VkImageSparseMemoryRequirementsInfo2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkImage = " . showsPrec d (vkImage x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresource.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresource.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresource.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresource.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageSubresource
        (VkImageSubresource(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags (VkImageAspectFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageSubresource {
@@ -22,7 +22,7 @@
 --   >     uint32_t               arrayLayer;
 --   > } VkImageSubresource;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageSubresource.html VkImageSubresource registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageSubresource.html VkImageSubresource registry at www.khronos.org>
 data VkImageSubresource = VkImageSubresource## Addr## ByteArray##
 
 instance Eq VkImageSubresource where
@@ -70,27 +70,6 @@
         type ReturnedOnly VkImageSubresource = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageSubresource = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkAspectMask VkImageSubresource
-         where
-        type VkAspectMaskMType VkImageSubresource = VkImageAspectFlags
-
-        {-# NOINLINE vkAspectMask #-}
-        vkAspectMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, aspectMask})
-
-        {-# INLINE vkAspectMaskByteOffset #-}
-        vkAspectMaskByteOffset ~_
-          = #{offset VkImageSubresource, aspectMask}
-
-        {-# INLINE readVkAspectMask #-}
-        readVkAspectMask p
-          = peekByteOff p #{offset VkImageSubresource, aspectMask}
-
-        {-# INLINE writeVkAspectMask #-}
-        writeVkAspectMask p
-          = pokeByteOff p #{offset VkImageSubresource, aspectMask}
-
 instance {-# OVERLAPPING #-}
          HasField "aspectMask" VkImageSubresource where
         type FieldType "aspectMask" VkImageSubresource = VkImageAspectFlags
@@ -105,36 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageSubresource, aspectMask}
 
-instance CanReadField "aspectMask" VkImageSubresource where
-        {-# INLINE getField #-}
-        getField = vkAspectMask
+instance {-# OVERLAPPING #-}
+         CanReadField "aspectMask" VkImageSubresource where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, aspectMask})
 
         {-# INLINE readField #-}
-        readField = readVkAspectMask
+        readField p
+          = peekByteOff p #{offset VkImageSubresource, aspectMask}
 
-instance CanWriteField "aspectMask" VkImageSubresource where
+instance {-# OVERLAPPING #-}
+         CanWriteField "aspectMask" VkImageSubresource where
         {-# INLINE writeField #-}
-        writeField = writeVkAspectMask
-
-instance {-# OVERLAPPING #-} HasVkMipLevel VkImageSubresource where
-        type VkMipLevelMType VkImageSubresource = Word32
-
-        {-# NOINLINE vkMipLevel #-}
-        vkMipLevel x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, mipLevel})
-
-        {-# INLINE vkMipLevelByteOffset #-}
-        vkMipLevelByteOffset ~_
-          = #{offset VkImageSubresource, mipLevel}
-
-        {-# INLINE readVkMipLevel #-}
-        readVkMipLevel p
-          = peekByteOff p #{offset VkImageSubresource, mipLevel}
-
-        {-# INLINE writeVkMipLevel #-}
-        writeVkMipLevel p
-          = pokeByteOff p #{offset VkImageSubresource, mipLevel}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresource, aspectMask}
 
 instance {-# OVERLAPPING #-} HasField "mipLevel" VkImageSubresource
          where
@@ -150,37 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageSubresource, mipLevel}
 
-instance CanReadField "mipLevel" VkImageSubresource where
-        {-# INLINE getField #-}
-        getField = vkMipLevel
+instance {-# OVERLAPPING #-}
+         CanReadField "mipLevel" VkImageSubresource where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, mipLevel})
 
         {-# INLINE readField #-}
-        readField = readVkMipLevel
+        readField p
+          = peekByteOff p #{offset VkImageSubresource, mipLevel}
 
-instance CanWriteField "mipLevel" VkImageSubresource where
+instance {-# OVERLAPPING #-}
+         CanWriteField "mipLevel" VkImageSubresource where
         {-# INLINE writeField #-}
-        writeField = writeVkMipLevel
-
-instance {-# OVERLAPPING #-} HasVkArrayLayer VkImageSubresource
-         where
-        type VkArrayLayerMType VkImageSubresource = Word32
-
-        {-# NOINLINE vkArrayLayer #-}
-        vkArrayLayer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, arrayLayer})
-
-        {-# INLINE vkArrayLayerByteOffset #-}
-        vkArrayLayerByteOffset ~_
-          = #{offset VkImageSubresource, arrayLayer}
-
-        {-# INLINE readVkArrayLayer #-}
-        readVkArrayLayer p
-          = peekByteOff p #{offset VkImageSubresource, arrayLayer}
-
-        {-# INLINE writeVkArrayLayer #-}
-        writeVkArrayLayer p
-          = pokeByteOff p #{offset VkImageSubresource, arrayLayer}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresource, mipLevel}
 
 instance {-# OVERLAPPING #-}
          HasField "arrayLayer" VkImageSubresource where
@@ -196,25 +146,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageSubresource, arrayLayer}
 
-instance CanReadField "arrayLayer" VkImageSubresource where
-        {-# INLINE getField #-}
-        getField = vkArrayLayer
+instance {-# OVERLAPPING #-}
+         CanReadField "arrayLayer" VkImageSubresource where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, arrayLayer})
 
         {-# INLINE readField #-}
-        readField = readVkArrayLayer
+        readField p
+          = peekByteOff p #{offset VkImageSubresource, arrayLayer}
 
-instance CanWriteField "arrayLayer" VkImageSubresource where
+instance {-# OVERLAPPING #-}
+         CanWriteField "arrayLayer" VkImageSubresource where
         {-# INLINE writeField #-}
-        writeField = writeVkArrayLayer
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresource, arrayLayer}
 
 instance Show VkImageSubresource where
         showsPrec d x
           = showString "VkImageSubresource {" .
-              showString "vkAspectMask = " .
-                showsPrec d (vkAspectMask x) .
+              showString "aspectMask = " .
+                showsPrec d (getField @"aspectMask" x) .
                   showString ", " .
-                    showString "vkMipLevel = " .
-                      showsPrec d (vkMipLevel x) .
+                    showString "mipLevel = " .
+                      showsPrec d (getField @"mipLevel" x) .
                         showString ", " .
-                          showString "vkArrayLayer = " .
-                            showsPrec d (vkArrayLayer x) . showChar '}'
+                          showString "arrayLayer = " .
+                            showsPrec d (getField @"arrayLayer" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceLayers.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceLayers.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceLayers.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceLayers.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers
        (VkImageSubresourceLayers(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags (VkImageAspectFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageSubresourceLayers {
@@ -23,7 +23,7 @@
 --   >     uint32_t               layerCount;
 --   > } VkImageSubresourceLayers;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageSubresourceLayers.html VkImageSubresourceLayers registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageSubresourceLayers.html VkImageSubresourceLayers registry at www.khronos.org>
 data VkImageSubresourceLayers = VkImageSubresourceLayers## Addr##
                                                           ByteArray##
 
@@ -74,28 +74,6 @@
         type StructExtends VkImageSubresourceLayers = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkAspectMask VkImageSubresourceLayers where
-        type VkAspectMaskMType VkImageSubresourceLayers =
-             VkImageAspectFlags
-
-        {-# NOINLINE vkAspectMask #-}
-        vkAspectMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, aspectMask})
-
-        {-# INLINE vkAspectMaskByteOffset #-}
-        vkAspectMaskByteOffset ~_
-          = #{offset VkImageSubresourceLayers, aspectMask}
-
-        {-# INLINE readVkAspectMask #-}
-        readVkAspectMask p
-          = peekByteOff p #{offset VkImageSubresourceLayers, aspectMask}
-
-        {-# INLINE writeVkAspectMask #-}
-        writeVkAspectMask p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, aspectMask}
-
-instance {-# OVERLAPPING #-}
          HasField "aspectMask" VkImageSubresourceLayers where
         type FieldType "aspectMask" VkImageSubresourceLayers =
              VkImageAspectFlags
@@ -111,37 +89,22 @@
         fieldOffset
           = #{offset VkImageSubresourceLayers, aspectMask}
 
-instance CanReadField "aspectMask" VkImageSubresourceLayers where
-        {-# INLINE getField #-}
-        getField = vkAspectMask
+instance {-# OVERLAPPING #-}
+         CanReadField "aspectMask" VkImageSubresourceLayers where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, aspectMask})
 
         {-# INLINE readField #-}
-        readField = readVkAspectMask
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceLayers, aspectMask}
 
-instance CanWriteField "aspectMask" VkImageSubresourceLayers where
+instance {-# OVERLAPPING #-}
+         CanWriteField "aspectMask" VkImageSubresourceLayers where
         {-# INLINE writeField #-}
-        writeField = writeVkAspectMask
-
-instance {-# OVERLAPPING #-} HasVkMipLevel VkImageSubresourceLayers
-         where
-        type VkMipLevelMType VkImageSubresourceLayers = Word32
-
-        {-# NOINLINE vkMipLevel #-}
-        vkMipLevel x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, mipLevel})
-
-        {-# INLINE vkMipLevelByteOffset #-}
-        vkMipLevelByteOffset ~_
-          = #{offset VkImageSubresourceLayers, mipLevel}
-
-        {-# INLINE readVkMipLevel #-}
-        readVkMipLevel p
-          = peekByteOff p #{offset VkImageSubresourceLayers, mipLevel}
-
-        {-# INLINE writeVkMipLevel #-}
-        writeVkMipLevel p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, mipLevel}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceLayers, aspectMask}
 
 instance {-# OVERLAPPING #-}
          HasField "mipLevel" VkImageSubresourceLayers where
@@ -158,37 +121,22 @@
         fieldOffset
           = #{offset VkImageSubresourceLayers, mipLevel}
 
-instance CanReadField "mipLevel" VkImageSubresourceLayers where
-        {-# INLINE getField #-}
-        getField = vkMipLevel
-
-        {-# INLINE readField #-}
-        readField = readVkMipLevel
-
-instance CanWriteField "mipLevel" VkImageSubresourceLayers where
-        {-# INLINE writeField #-}
-        writeField = writeVkMipLevel
-
 instance {-# OVERLAPPING #-}
-         HasVkBaseArrayLayer VkImageSubresourceLayers where
-        type VkBaseArrayLayerMType VkImageSubresourceLayers = Word32
-
-        {-# NOINLINE vkBaseArrayLayer #-}
-        vkBaseArrayLayer x
+         CanReadField "mipLevel" VkImageSubresourceLayers where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, baseArrayLayer})
-
-        {-# INLINE vkBaseArrayLayerByteOffset #-}
-        vkBaseArrayLayerByteOffset ~_
-          = #{offset VkImageSubresourceLayers, baseArrayLayer}
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, mipLevel})
 
-        {-# INLINE readVkBaseArrayLayer #-}
-        readVkBaseArrayLayer p
-          = peekByteOff p #{offset VkImageSubresourceLayers, baseArrayLayer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceLayers, mipLevel}
 
-        {-# INLINE writeVkBaseArrayLayer #-}
-        writeVkBaseArrayLayer p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, baseArrayLayer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "mipLevel" VkImageSubresourceLayers where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceLayers, mipLevel}
 
 instance {-# OVERLAPPING #-}
          HasField "baseArrayLayer" VkImageSubresourceLayers where
@@ -207,39 +155,22 @@
         fieldOffset
           = #{offset VkImageSubresourceLayers, baseArrayLayer}
 
-instance CanReadField "baseArrayLayer" VkImageSubresourceLayers
-         where
-        {-# INLINE getField #-}
-        getField = vkBaseArrayLayer
-
-        {-# INLINE readField #-}
-        readField = readVkBaseArrayLayer
-
-instance CanWriteField "baseArrayLayer" VkImageSubresourceLayers
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBaseArrayLayer
-
 instance {-# OVERLAPPING #-}
-         HasVkLayerCount VkImageSubresourceLayers where
-        type VkLayerCountMType VkImageSubresourceLayers = Word32
-
-        {-# NOINLINE vkLayerCount #-}
-        vkLayerCount x
+         CanReadField "baseArrayLayer" VkImageSubresourceLayers where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, layerCount})
-
-        {-# INLINE vkLayerCountByteOffset #-}
-        vkLayerCountByteOffset ~_
-          = #{offset VkImageSubresourceLayers, layerCount}
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, baseArrayLayer})
 
-        {-# INLINE readVkLayerCount #-}
-        readVkLayerCount p
-          = peekByteOff p #{offset VkImageSubresourceLayers, layerCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceLayers, baseArrayLayer}
 
-        {-# INLINE writeVkLayerCount #-}
-        writeVkLayerCount p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, layerCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "baseArrayLayer" VkImageSubresourceLayers where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceLayers, baseArrayLayer}
 
 instance {-# OVERLAPPING #-}
          HasField "layerCount" VkImageSubresourceLayers where
@@ -256,28 +187,34 @@
         fieldOffset
           = #{offset VkImageSubresourceLayers, layerCount}
 
-instance CanReadField "layerCount" VkImageSubresourceLayers where
-        {-# INLINE getField #-}
-        getField = vkLayerCount
+instance {-# OVERLAPPING #-}
+         CanReadField "layerCount" VkImageSubresourceLayers where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, layerCount})
 
         {-# INLINE readField #-}
-        readField = readVkLayerCount
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceLayers, layerCount}
 
-instance CanWriteField "layerCount" VkImageSubresourceLayers where
+instance {-# OVERLAPPING #-}
+         CanWriteField "layerCount" VkImageSubresourceLayers where
         {-# INLINE writeField #-}
-        writeField = writeVkLayerCount
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceLayers, layerCount}
 
 instance Show VkImageSubresourceLayers where
         showsPrec d x
           = showString "VkImageSubresourceLayers {" .
-              showString "vkAspectMask = " .
-                showsPrec d (vkAspectMask x) .
+              showString "aspectMask = " .
+                showsPrec d (getField @"aspectMask" x) .
                   showString ", " .
-                    showString "vkMipLevel = " .
-                      showsPrec d (vkMipLevel x) .
+                    showString "mipLevel = " .
+                      showsPrec d (getField @"mipLevel" x) .
                         showString ", " .
-                          showString "vkBaseArrayLayer = " .
-                            showsPrec d (vkBaseArrayLayer x) .
+                          showString "baseArrayLayer = " .
+                            showsPrec d (getField @"baseArrayLayer" x) .
                               showString ", " .
-                                showString "vkLayerCount = " .
-                                  showsPrec d (vkLayerCount x) . showChar '}'
+                                showString "layerCount = " .
+                                  showsPrec d (getField @"layerCount" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceRange.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceRange.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceRange.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSubresourceRange.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
        (VkImageSubresourceRange(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags (VkImageAspectFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageSubresourceRange {
@@ -24,7 +24,7 @@
 --   >     uint32_t               layerCount;
 --   > } VkImageSubresourceRange;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageSubresourceRange.html VkImageSubresourceRange registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageSubresourceRange.html VkImageSubresourceRange registry at www.khronos.org>
 data VkImageSubresourceRange = VkImageSubresourceRange## Addr##
                                                         ByteArray##
 
@@ -75,27 +75,6 @@
         type StructExtends VkImageSubresourceRange = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkAspectMask VkImageSubresourceRange where
-        type VkAspectMaskMType VkImageSubresourceRange = VkImageAspectFlags
-
-        {-# NOINLINE vkAspectMask #-}
-        vkAspectMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, aspectMask})
-
-        {-# INLINE vkAspectMaskByteOffset #-}
-        vkAspectMaskByteOffset ~_
-          = #{offset VkImageSubresourceRange, aspectMask}
-
-        {-# INLINE readVkAspectMask #-}
-        readVkAspectMask p
-          = peekByteOff p #{offset VkImageSubresourceRange, aspectMask}
-
-        {-# INLINE writeVkAspectMask #-}
-        writeVkAspectMask p
-          = pokeByteOff p #{offset VkImageSubresourceRange, aspectMask}
-
-instance {-# OVERLAPPING #-}
          HasField "aspectMask" VkImageSubresourceRange where
         type FieldType "aspectMask" VkImageSubresourceRange =
              VkImageAspectFlags
@@ -111,37 +90,22 @@
         fieldOffset
           = #{offset VkImageSubresourceRange, aspectMask}
 
-instance CanReadField "aspectMask" VkImageSubresourceRange where
-        {-# INLINE getField #-}
-        getField = vkAspectMask
-
-        {-# INLINE readField #-}
-        readField = readVkAspectMask
-
-instance CanWriteField "aspectMask" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField = writeVkAspectMask
-
 instance {-# OVERLAPPING #-}
-         HasVkBaseMipLevel VkImageSubresourceRange where
-        type VkBaseMipLevelMType VkImageSubresourceRange = Word32
-
-        {-# NOINLINE vkBaseMipLevel #-}
-        vkBaseMipLevel x
+         CanReadField "aspectMask" VkImageSubresourceRange where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, baseMipLevel})
-
-        {-# INLINE vkBaseMipLevelByteOffset #-}
-        vkBaseMipLevelByteOffset ~_
-          = #{offset VkImageSubresourceRange, baseMipLevel}
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, aspectMask})
 
-        {-# INLINE readVkBaseMipLevel #-}
-        readVkBaseMipLevel p
-          = peekByteOff p #{offset VkImageSubresourceRange, baseMipLevel}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceRange, aspectMask}
 
-        {-# INLINE writeVkBaseMipLevel #-}
-        writeVkBaseMipLevel p
-          = pokeByteOff p #{offset VkImageSubresourceRange, baseMipLevel}
+instance {-# OVERLAPPING #-}
+         CanWriteField "aspectMask" VkImageSubresourceRange where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceRange, aspectMask}
 
 instance {-# OVERLAPPING #-}
          HasField "baseMipLevel" VkImageSubresourceRange where
@@ -158,37 +122,22 @@
         fieldOffset
           = #{offset VkImageSubresourceRange, baseMipLevel}
 
-instance CanReadField "baseMipLevel" VkImageSubresourceRange where
-        {-# INLINE getField #-}
-        getField = vkBaseMipLevel
-
-        {-# INLINE readField #-}
-        readField = readVkBaseMipLevel
-
-instance CanWriteField "baseMipLevel" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField = writeVkBaseMipLevel
-
 instance {-# OVERLAPPING #-}
-         HasVkLevelCount VkImageSubresourceRange where
-        type VkLevelCountMType VkImageSubresourceRange = Word32
-
-        {-# NOINLINE vkLevelCount #-}
-        vkLevelCount x
+         CanReadField "baseMipLevel" VkImageSubresourceRange where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, levelCount})
-
-        {-# INLINE vkLevelCountByteOffset #-}
-        vkLevelCountByteOffset ~_
-          = #{offset VkImageSubresourceRange, levelCount}
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, baseMipLevel})
 
-        {-# INLINE readVkLevelCount #-}
-        readVkLevelCount p
-          = peekByteOff p #{offset VkImageSubresourceRange, levelCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceRange, baseMipLevel}
 
-        {-# INLINE writeVkLevelCount #-}
-        writeVkLevelCount p
-          = pokeByteOff p #{offset VkImageSubresourceRange, levelCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "baseMipLevel" VkImageSubresourceRange where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceRange, baseMipLevel}
 
 instance {-# OVERLAPPING #-}
          HasField "levelCount" VkImageSubresourceRange where
@@ -205,37 +154,22 @@
         fieldOffset
           = #{offset VkImageSubresourceRange, levelCount}
 
-instance CanReadField "levelCount" VkImageSubresourceRange where
-        {-# INLINE getField #-}
-        getField = vkLevelCount
-
-        {-# INLINE readField #-}
-        readField = readVkLevelCount
-
-instance CanWriteField "levelCount" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField = writeVkLevelCount
-
 instance {-# OVERLAPPING #-}
-         HasVkBaseArrayLayer VkImageSubresourceRange where
-        type VkBaseArrayLayerMType VkImageSubresourceRange = Word32
-
-        {-# NOINLINE vkBaseArrayLayer #-}
-        vkBaseArrayLayer x
+         CanReadField "levelCount" VkImageSubresourceRange where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, baseArrayLayer})
-
-        {-# INLINE vkBaseArrayLayerByteOffset #-}
-        vkBaseArrayLayerByteOffset ~_
-          = #{offset VkImageSubresourceRange, baseArrayLayer}
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, levelCount})
 
-        {-# INLINE readVkBaseArrayLayer #-}
-        readVkBaseArrayLayer p
-          = peekByteOff p #{offset VkImageSubresourceRange, baseArrayLayer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceRange, levelCount}
 
-        {-# INLINE writeVkBaseArrayLayer #-}
-        writeVkBaseArrayLayer p
-          = pokeByteOff p #{offset VkImageSubresourceRange, baseArrayLayer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "levelCount" VkImageSubresourceRange where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceRange, levelCount}
 
 instance {-# OVERLAPPING #-}
          HasField "baseArrayLayer" VkImageSubresourceRange where
@@ -253,39 +187,22 @@
         fieldOffset
           = #{offset VkImageSubresourceRange, baseArrayLayer}
 
-instance CanReadField "baseArrayLayer" VkImageSubresourceRange
-         where
-        {-# INLINE getField #-}
-        getField = vkBaseArrayLayer
-
-        {-# INLINE readField #-}
-        readField = readVkBaseArrayLayer
-
-instance CanWriteField "baseArrayLayer" VkImageSubresourceRange
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBaseArrayLayer
-
 instance {-# OVERLAPPING #-}
-         HasVkLayerCount VkImageSubresourceRange where
-        type VkLayerCountMType VkImageSubresourceRange = Word32
-
-        {-# NOINLINE vkLayerCount #-}
-        vkLayerCount x
+         CanReadField "baseArrayLayer" VkImageSubresourceRange where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, layerCount})
-
-        {-# INLINE vkLayerCountByteOffset #-}
-        vkLayerCountByteOffset ~_
-          = #{offset VkImageSubresourceRange, layerCount}
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, baseArrayLayer})
 
-        {-# INLINE readVkLayerCount #-}
-        readVkLayerCount p
-          = peekByteOff p #{offset VkImageSubresourceRange, layerCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceRange, baseArrayLayer}
 
-        {-# INLINE writeVkLayerCount #-}
-        writeVkLayerCount p
-          = pokeByteOff p #{offset VkImageSubresourceRange, layerCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "baseArrayLayer" VkImageSubresourceRange where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceRange, baseArrayLayer}
 
 instance {-# OVERLAPPING #-}
          HasField "layerCount" VkImageSubresourceRange where
@@ -302,31 +219,37 @@
         fieldOffset
           = #{offset VkImageSubresourceRange, layerCount}
 
-instance CanReadField "layerCount" VkImageSubresourceRange where
-        {-# INLINE getField #-}
-        getField = vkLayerCount
+instance {-# OVERLAPPING #-}
+         CanReadField "layerCount" VkImageSubresourceRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, layerCount})
 
         {-# INLINE readField #-}
-        readField = readVkLayerCount
+        readField p
+          = peekByteOff p #{offset VkImageSubresourceRange, layerCount}
 
-instance CanWriteField "layerCount" VkImageSubresourceRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "layerCount" VkImageSubresourceRange where
         {-# INLINE writeField #-}
-        writeField = writeVkLayerCount
+        writeField p
+          = pokeByteOff p #{offset VkImageSubresourceRange, layerCount}
 
 instance Show VkImageSubresourceRange where
         showsPrec d x
           = showString "VkImageSubresourceRange {" .
-              showString "vkAspectMask = " .
-                showsPrec d (vkAspectMask x) .
+              showString "aspectMask = " .
+                showsPrec d (getField @"aspectMask" x) .
                   showString ", " .
-                    showString "vkBaseMipLevel = " .
-                      showsPrec d (vkBaseMipLevel x) .
+                    showString "baseMipLevel = " .
+                      showsPrec d (getField @"baseMipLevel" x) .
                         showString ", " .
-                          showString "vkLevelCount = " .
-                            showsPrec d (vkLevelCount x) .
+                          showString "levelCount = " .
+                            showsPrec d (getField @"levelCount" x) .
                               showString ", " .
-                                showString "vkBaseArrayLayer = " .
-                                  showsPrec d (vkBaseArrayLayer x) .
+                                showString "baseArrayLayer = " .
+                                  showsPrec d (getField @"baseArrayLayer" x) .
                                     showString ", " .
-                                      showString "vkLayerCount = " .
-                                        showsPrec d (vkLayerCount x) . showChar '}'
+                                      showString "layerCount = " .
+                                        showsPrec d (getField @"layerCount" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSwapchainCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSwapchainCreateInfoKHR.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSwapchainCreateInfoKHR.hsc
@@ -0,0 +1,191 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHR
+       (VkImageSwapchainCreateInfoKHR(..)) where
+import           Foreign.Storable                               (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                  (VkSwapchainKHR)
+import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo (VkImageCreateInfo)
+import           System.IO.Unsafe                               (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImageSwapchainCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSwapchainKHR   swapchain;
+--   > } VkImageSwapchainCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageSwapchainCreateInfoKHR.html VkImageSwapchainCreateInfoKHR registry at www.khronos.org>
+data VkImageSwapchainCreateInfoKHR = VkImageSwapchainCreateInfoKHR## Addr##
+                                                                    ByteArray##
+
+instance Eq VkImageSwapchainCreateInfoKHR where
+        (VkImageSwapchainCreateInfoKHR## a _) ==
+          x@(VkImageSwapchainCreateInfoKHR## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImageSwapchainCreateInfoKHR where
+        (VkImageSwapchainCreateInfoKHR## a _) `compare`
+          x@(VkImageSwapchainCreateInfoKHR## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImageSwapchainCreateInfoKHR where
+        unsafeAddr (VkImageSwapchainCreateInfoKHR## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImageSwapchainCreateInfoKHR## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImageSwapchainCreateInfoKHR##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSwapchainCreateInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageSwapchainCreateInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageSwapchainCreateInfoKHX.hsc
+++ /dev/null
@@ -1,239 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHX
-       (VkImageSwapchainCreateInfoKHX(..)) where
-import           Foreign.Storable                               (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                  (VkSwapchainKHR)
-import           Graphics.Vulkan.Types.Struct.VkImageCreateInfo (VkImageCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                               (unsafeDupablePerformIO)
-
--- | > typedef struct VkImageSwapchainCreateInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSwapchainKHR   swapchain;
---   > } VkImageSwapchainCreateInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageSwapchainCreateInfoKHX.html VkImageSwapchainCreateInfoKHX registry at www.khronos.org>
-data VkImageSwapchainCreateInfoKHX = VkImageSwapchainCreateInfoKHX## Addr##
-                                                                    ByteArray##
-
-instance Eq VkImageSwapchainCreateInfoKHX where
-        (VkImageSwapchainCreateInfoKHX## a _) ==
-          x@(VkImageSwapchainCreateInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSwapchainCreateInfoKHX where
-        (VkImageSwapchainCreateInfoKHX## a _) `compare`
-          x@(VkImageSwapchainCreateInfoKHX## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSwapchainCreateInfoKHX where
-        sizeOf ~_ = #{size VkImageSwapchainCreateInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageSwapchainCreateInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkImageSwapchainCreateInfoKHX where
-        unsafeAddr (VkImageSwapchainCreateInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkImageSwapchainCreateInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkImageSwapchainCreateInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkImageSwapchainCreateInfoKHX where
-        type StructFields VkImageSwapchainCreateInfoKHX =
-             '["sType", "pNext", "swapchain"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSwapchainCreateInfoKHX =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkImageSwapchainCreateInfoKHX where
-        type VkSTypeMType VkImageSwapchainCreateInfoKHX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSwapchainCreateInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageSwapchainCreateInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageSwapchainCreateInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageSwapchainCreateInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageSwapchainCreateInfoKHX where
-        type FieldType "sType" VkImageSwapchainCreateInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkImageSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageSwapchainCreateInfoKHX =
-             #{offset VkImageSwapchainCreateInfoKHX, sType}
-        type FieldIsArray "sType" VkImageSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSwapchainCreateInfoKHX, sType}
-
-instance CanReadField "sType" VkImageSwapchainCreateInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImageSwapchainCreateInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkImageSwapchainCreateInfoKHX where
-        type VkPNextMType VkImageSwapchainCreateInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSwapchainCreateInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageSwapchainCreateInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageSwapchainCreateInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageSwapchainCreateInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageSwapchainCreateInfoKHX where
-        type FieldType "pNext" VkImageSwapchainCreateInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkImageSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageSwapchainCreateInfoKHX =
-             #{offset VkImageSwapchainCreateInfoKHX, pNext}
-        type FieldIsArray "pNext" VkImageSwapchainCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSwapchainCreateInfoKHX, pNext}
-
-instance CanReadField "pNext" VkImageSwapchainCreateInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImageSwapchainCreateInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkSwapchain VkImageSwapchainCreateInfoKHX where
-        type VkSwapchainMType VkImageSwapchainCreateInfoKHX =
-             VkSwapchainKHR
-
-        {-# NOINLINE vkSwapchain #-}
-        vkSwapchain x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSwapchainCreateInfoKHX, swapchain})
-
-        {-# INLINE vkSwapchainByteOffset #-}
-        vkSwapchainByteOffset ~_
-          = #{offset VkImageSwapchainCreateInfoKHX, swapchain}
-
-        {-# INLINE readVkSwapchain #-}
-        readVkSwapchain p
-          = peekByteOff p #{offset VkImageSwapchainCreateInfoKHX, swapchain}
-
-        {-# INLINE writeVkSwapchain #-}
-        writeVkSwapchain p
-          = pokeByteOff p #{offset VkImageSwapchainCreateInfoKHX, swapchain}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchain" VkImageSwapchainCreateInfoKHX where
-        type FieldType "swapchain" VkImageSwapchainCreateInfoKHX =
-             VkSwapchainKHR
-        type FieldOptional "swapchain" VkImageSwapchainCreateInfoKHX =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "swapchain" VkImageSwapchainCreateInfoKHX =
-             #{offset VkImageSwapchainCreateInfoKHX, swapchain}
-        type FieldIsArray "swapchain" VkImageSwapchainCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSwapchainCreateInfoKHX, swapchain}
-
-instance CanReadField "swapchain" VkImageSwapchainCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSwapchain
-
-        {-# INLINE readField #-}
-        readField = readVkSwapchain
-
-instance CanWriteField "swapchain" VkImageSwapchainCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSwapchain
-
-instance Show VkImageSwapchainCreateInfoKHX where
-        showsPrec d x
-          = showString "VkImageSwapchainCreateInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkSwapchain = " .
-                            showsPrec d (vkSwapchain x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
        (VkImageViewCreateInfo(..)) where
@@ -19,7 +20,6 @@
 import           Graphics.Vulkan.Types.Handles                        (VkImage)
 import           Graphics.Vulkan.Types.Struct.VkComponentMapping      (VkComponentMapping)
 import           Graphics.Vulkan.Types.Struct.VkImageSubresourceRange (VkImageSubresourceRange)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImageViewCreateInfo {
@@ -33,7 +33,7 @@
 --   >     VkImageSubresourceRange subresourceRange;
 --   > } VkImageViewCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageViewCreateInfo.html VkImageViewCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageViewCreateInfo.html VkImageViewCreateInfo registry at www.khronos.org>
 data VkImageViewCreateInfo = VkImageViewCreateInfo## Addr##
                                                     ByteArray##
 
@@ -83,26 +83,6 @@
         type ReturnedOnly VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImageViewCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkImageViewCreateInfo where
-        type VkSTypeMType VkImageViewCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageViewCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageViewCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkImageViewCreateInfo
          where
         type FieldType "sType" VkImageViewCreateInfo = VkStructureType
@@ -117,36 +97,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageViewCreateInfo, sType}
 
-instance CanReadField "sType" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, sType}
 
-instance CanWriteField "sType" VkImageViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImageViewCreateInfo where
-        type VkPNextMType VkImageViewCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageViewCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageViewCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkImageViewCreateInfo
          where
@@ -162,36 +128,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageViewCreateInfo, pNext}
 
-instance CanReadField "pNext" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkImageViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkImageViewCreateInfo where
-        type VkFlagsMType VkImageViewCreateInfo = VkImageViewCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkImageViewCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkImageViewCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkImageViewCreateInfo
          where
@@ -208,36 +160,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageViewCreateInfo, flags}
 
-instance CanReadField "flags" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, flags}
 
-instance CanWriteField "flags" VkImageViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkImage VkImageViewCreateInfo where
-        type VkImageMType VkImageViewCreateInfo = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkImageViewCreateInfo, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkImageViewCreateInfo, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, image}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, flags}
 
 instance {-# OVERLAPPING #-} HasField "image" VkImageViewCreateInfo
          where
@@ -253,37 +191,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageViewCreateInfo, image}
 
-instance CanReadField "image" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkImage
+instance {-# OVERLAPPING #-}
+         CanReadField "image" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, image})
 
         {-# INLINE readField #-}
-        readField = readVkImage
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, image}
 
-instance CanWriteField "image" VkImageViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "image" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkImage
-
-instance {-# OVERLAPPING #-} HasVkViewType VkImageViewCreateInfo
-         where
-        type VkViewTypeMType VkImageViewCreateInfo = VkImageViewType
-
-        {-# NOINLINE vkViewType #-}
-        vkViewType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, viewType})
-
-        {-# INLINE vkViewTypeByteOffset #-}
-        vkViewTypeByteOffset ~_
-          = #{offset VkImageViewCreateInfo, viewType}
-
-        {-# INLINE readVkViewType #-}
-        readVkViewType p
-          = peekByteOff p #{offset VkImageViewCreateInfo, viewType}
-
-        {-# INLINE writeVkViewType #-}
-        writeVkViewType p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, viewType}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, image}
 
 instance {-# OVERLAPPING #-}
          HasField "viewType" VkImageViewCreateInfo where
@@ -299,37 +222,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageViewCreateInfo, viewType}
 
-instance CanReadField "viewType" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkViewType
+instance {-# OVERLAPPING #-}
+         CanReadField "viewType" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, viewType})
 
         {-# INLINE readField #-}
-        readField = readVkViewType
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, viewType}
 
-instance CanWriteField "viewType" VkImageViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "viewType" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkViewType
-
-instance {-# OVERLAPPING #-} HasVkFormat VkImageViewCreateInfo
-         where
-        type VkFormatMType VkImageViewCreateInfo = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkImageViewCreateInfo, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkImageViewCreateInfo, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, format}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, viewType}
 
 instance {-# OVERLAPPING #-}
          HasField "format" VkImageViewCreateInfo where
@@ -345,37 +253,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImageViewCreateInfo, format}
 
-instance CanReadField "format" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFormat
+instance {-# OVERLAPPING #-}
+         CanReadField "format" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, format})
 
         {-# INLINE readField #-}
-        readField = readVkFormat
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, format}
 
-instance CanWriteField "format" VkImageViewCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "format" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-} HasVkComponents VkImageViewCreateInfo
-         where
-        type VkComponentsMType VkImageViewCreateInfo = VkComponentMapping
-
-        {-# NOINLINE vkComponents #-}
-        vkComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, components})
-
-        {-# INLINE vkComponentsByteOffset #-}
-        vkComponentsByteOffset ~_
-          = #{offset VkImageViewCreateInfo, components}
-
-        {-# INLINE readVkComponents #-}
-        readVkComponents p
-          = peekByteOff p #{offset VkImageViewCreateInfo, components}
-
-        {-# INLINE writeVkComponents #-}
-        writeVkComponents p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, components}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, format}
 
 instance {-# OVERLAPPING #-}
          HasField "components" VkImageViewCreateInfo where
@@ -393,38 +286,22 @@
         fieldOffset
           = #{offset VkImageViewCreateInfo, components}
 
-instance CanReadField "components" VkImageViewCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkComponents
-
-        {-# INLINE readField #-}
-        readField = readVkComponents
-
-instance CanWriteField "components" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkComponents
-
 instance {-# OVERLAPPING #-}
-         HasVkSubresourceRange VkImageViewCreateInfo where
-        type VkSubresourceRangeMType VkImageViewCreateInfo =
-             VkImageSubresourceRange
-
-        {-# NOINLINE vkSubresourceRange #-}
-        vkSubresourceRange x
+         CanReadField "components" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, subresourceRange})
-
-        {-# INLINE vkSubresourceRangeByteOffset #-}
-        vkSubresourceRangeByteOffset ~_
-          = #{offset VkImageViewCreateInfo, subresourceRange}
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, components})
 
-        {-# INLINE readVkSubresourceRange #-}
-        readVkSubresourceRange p
-          = peekByteOff p #{offset VkImageViewCreateInfo, subresourceRange}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, components}
 
-        {-# INLINE writeVkSubresourceRange #-}
-        writeVkSubresourceRange p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, subresourceRange}
+instance {-# OVERLAPPING #-}
+         CanWriteField "components" VkImageViewCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, components}
 
 instance {-# OVERLAPPING #-}
          HasField "subresourceRange" VkImageViewCreateInfo where
@@ -443,43 +320,48 @@
         fieldOffset
           = #{offset VkImageViewCreateInfo, subresourceRange}
 
-instance CanReadField "subresourceRange" VkImageViewCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSubresourceRange
+instance {-# OVERLAPPING #-}
+         CanReadField "subresourceRange" VkImageViewCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, subresourceRange})
 
         {-# INLINE readField #-}
-        readField = readVkSubresourceRange
+        readField p
+          = peekByteOff p #{offset VkImageViewCreateInfo, subresourceRange}
 
-instance CanWriteField "subresourceRange" VkImageViewCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "subresourceRange" VkImageViewCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSubresourceRange
+        writeField p
+          = pokeByteOff p #{offset VkImageViewCreateInfo, subresourceRange}
 
 instance Show VkImageViewCreateInfo where
         showsPrec d x
           = showString "VkImageViewCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkImage = " .
-                                  showsPrec d (vkImage x) .
+                                showString "image = " .
+                                  showsPrec d (getField @"image" x) .
                                     showString ", " .
-                                      showString "vkViewType = " .
-                                        showsPrec d (vkViewType x) .
+                                      showString "viewType = " .
+                                        showsPrec d (getField @"viewType" x) .
                                           showString ", " .
-                                            showString "vkFormat = " .
-                                              showsPrec d (vkFormat x) .
+                                            showString "format = " .
+                                              showsPrec d (getField @"format" x) .
                                                 showString ", " .
-                                                  showString "vkComponents = " .
-                                                    showsPrec d (vkComponents x) .
+                                                  showString "components = " .
+                                                    showsPrec d (getField @"components" x) .
                                                       showString ", " .
-                                                        showString "vkSubresourceRange = " .
-                                                          showsPrec d (vkSubresourceRange x) .
-                                                            showChar '}'
+                                                        showString "subresourceRange = " .
+                                                          showsPrec d
+                                                            (getField @"subresourceRange" x)
+                                                            . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfo.hsc
@@ -0,0 +1,187 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfo
+       (VkImageViewUsageCreateInfo(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags       (VkImageUsageFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo (VkImageViewCreateInfo)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImageViewUsageCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkImageUsageFlags usage;
+--   > } VkImageViewUsageCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageViewUsageCreateInfo.html VkImageViewUsageCreateInfo registry at www.khronos.org>
+data VkImageViewUsageCreateInfo = VkImageViewUsageCreateInfo## Addr##
+                                                              ByteArray##
+
+instance Eq VkImageViewUsageCreateInfo where
+        (VkImageViewUsageCreateInfo## a _) ==
+          x@(VkImageViewUsageCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImageViewUsageCreateInfo where
+        (VkImageViewUsageCreateInfo## a _) `compare`
+          x@(VkImageViewUsageCreateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImageViewUsageCreateInfo where
+        unsafeAddr (VkImageViewUsageCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImageViewUsageCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImageViewUsageCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfoKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfoKHR
+       (VkImageViewUsageCreateInfo(..), VkImageViewUsageCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfo (VkImageViewUsageCreateInfo (..))
+
+-- | Alias for `VkImageViewUsageCreateInfo`
+type VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImageViewUsageCreateInfoKHR.hsc
+++ /dev/null
@@ -1,233 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfoKHR
-       (VkImageViewUsageCreateInfoKHR(..)) where
-import           Foreign.Storable                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags       (VkImageUsageFlags)
-import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo (VkImageViewCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkImageViewUsageCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkImageUsageFlags usage;
---   > } VkImageViewUsageCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImageViewUsageCreateInfoKHR.html VkImageViewUsageCreateInfoKHR registry at www.khronos.org>
-data VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfoKHR## Addr##
-                                                                    ByteArray##
-
-instance Eq VkImageViewUsageCreateInfoKHR where
-        (VkImageViewUsageCreateInfoKHR## a _) ==
-          x@(VkImageViewUsageCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageViewUsageCreateInfoKHR where
-        (VkImageViewUsageCreateInfoKHR## a _) `compare`
-          x@(VkImageViewUsageCreateInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageViewUsageCreateInfoKHR where
-        sizeOf ~_ = #{size VkImageViewUsageCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageViewUsageCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkImageViewUsageCreateInfoKHR where
-        unsafeAddr (VkImageViewUsageCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkImageViewUsageCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkImageViewUsageCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkImageViewUsageCreateInfoKHR where
-        type StructFields VkImageViewUsageCreateInfoKHR =
-             '["sType", "pNext", "usage"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageViewUsageCreateInfoKHR =
-             '[VkImageViewCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkImageViewUsageCreateInfoKHR where
-        type VkSTypeMType VkImageViewUsageCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewUsageCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImageViewUsageCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImageViewUsageCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImageViewUsageCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageViewUsageCreateInfoKHR where
-        type FieldType "sType" VkImageViewUsageCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageViewUsageCreateInfoKHR =
-             #{offset VkImageViewUsageCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewUsageCreateInfoKHR, sType}
-
-instance CanReadField "sType" VkImageViewUsageCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImageViewUsageCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkImageViewUsageCreateInfoKHR where
-        type VkPNextMType VkImageViewUsageCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewUsageCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImageViewUsageCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImageViewUsageCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImageViewUsageCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageViewUsageCreateInfoKHR where
-        type FieldType "pNext" VkImageViewUsageCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageViewUsageCreateInfoKHR =
-             #{offset VkImageViewUsageCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewUsageCreateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkImageViewUsageCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImageViewUsageCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkUsage VkImageViewUsageCreateInfoKHR where
-        type VkUsageMType VkImageViewUsageCreateInfoKHR = VkImageUsageFlags
-
-        {-# NOINLINE vkUsage #-}
-        vkUsage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewUsageCreateInfoKHR, usage})
-
-        {-# INLINE vkUsageByteOffset #-}
-        vkUsageByteOffset ~_
-          = #{offset VkImageViewUsageCreateInfoKHR, usage}
-
-        {-# INLINE readVkUsage #-}
-        readVkUsage p
-          = peekByteOff p #{offset VkImageViewUsageCreateInfoKHR, usage}
-
-        {-# INLINE writeVkUsage #-}
-        writeVkUsage p
-          = pokeByteOff p #{offset VkImageViewUsageCreateInfoKHR, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkImageViewUsageCreateInfoKHR where
-        type FieldType "usage" VkImageViewUsageCreateInfoKHR =
-             VkImageUsageFlags
-        type FieldOptional "usage" VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkImageViewUsageCreateInfoKHR =
-             #{offset VkImageViewUsageCreateInfoKHR, usage}
-        type FieldIsArray "usage" VkImageViewUsageCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewUsageCreateInfoKHR, usage}
-
-instance CanReadField "usage" VkImageViewUsageCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkUsage
-
-        {-# INLINE readField #-}
-        readField = readVkUsage
-
-instance CanWriteField "usage" VkImageViewUsageCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkUsage
-
-instance Show VkImageViewUsageCreateInfoKHR where
-        showsPrec d x
-          = showString "VkImageViewUsageCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkUsage = " . showsPrec d (vkUsage x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportAndroidHardwareBufferInfoANDROID.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportAndroidHardwareBufferInfoANDROID.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportAndroidHardwareBufferInfoANDROID.hsc
@@ -0,0 +1,206 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkImportAndroidHardwareBufferInfoANDROID
+       (VkImportAndroidHardwareBufferInfoANDROID(..)) where
+import           Foreign.Storable                                  (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Defines                     (AHardwareBuffer)
+import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
+import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
+
+-- | > typedef struct VkImportAndroidHardwareBufferInfoANDROID {
+--   >     VkStructureType sType;
+--   >     const void*                        pNext;
+--   >     struct AHardwareBuffer*            buffer;
+--   > } VkImportAndroidHardwareBufferInfoANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportAndroidHardwareBufferInfoANDROID.html VkImportAndroidHardwareBufferInfoANDROID registry at www.khronos.org>
+data VkImportAndroidHardwareBufferInfoANDROID = VkImportAndroidHardwareBufferInfoANDROID## Addr##
+                                                                                          ByteArray##
+
+instance Eq VkImportAndroidHardwareBufferInfoANDROID where
+        (VkImportAndroidHardwareBufferInfoANDROID## a _) ==
+          x@(VkImportAndroidHardwareBufferInfoANDROID## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkImportAndroidHardwareBufferInfoANDROID where
+        (VkImportAndroidHardwareBufferInfoANDROID## a _) `compare`
+          x@(VkImportAndroidHardwareBufferInfoANDROID## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkImportAndroidHardwareBufferInfoANDROID
+         where
+        unsafeAddr (VkImportAndroidHardwareBufferInfoANDROID## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkImportAndroidHardwareBufferInfoANDROID## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkImportAndroidHardwareBufferInfoANDROID##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceFdInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceFdInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceFdInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceFdInfoKHR.hsc
@@ -5,30 +5,30 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportFenceFdInfoKHR
        (VkImportFenceFdInfoKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
+import           Foreign.Storable                                          (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR             (VkFenceImportFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                (VkFence)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlags             (VkFenceImportFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                             (VkFence)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportFenceFdInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                            pNext;
 --   >     VkFence              fence;
---   >     VkFenceImportFlagsKHR  flags;
---   >     VkExternalFenceHandleTypeFlagBitsKHR   handleType;
+--   >     VkFenceImportFlags  flags;
+--   >     VkExternalFenceHandleTypeFlagBits   handleType;
 --   >     int                                    fd;
 --   > } VkImportFenceFdInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportFenceFdInfoKHR.html VkImportFenceFdInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportFenceFdInfoKHR.html VkImportFenceFdInfoKHR registry at www.khronos.org>
 data VkImportFenceFdInfoKHR = VkImportFenceFdInfoKHR## Addr##
                                                       ByteArray##
 
@@ -77,27 +77,6 @@
         type ReturnedOnly VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImportFenceFdInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkImportFenceFdInfoKHR
-         where
-        type VkSTypeMType VkImportFenceFdInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportFenceFdInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkImportFenceFdInfoKHR where
         type FieldType "sType" VkImportFenceFdInfoKHR = VkStructureType
@@ -112,37 +91,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportFenceFdInfoKHR, sType}
 
-instance CanReadField "sType" VkImportFenceFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkImportFenceFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkImportFenceFdInfoKHR, sType}
 
-instance CanWriteField "sType" VkImportFenceFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportFenceFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImportFenceFdInfoKHR
-         where
-        type VkPNextMType VkImportFenceFdInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportFenceFdInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportFenceFdInfoKHR where
@@ -158,37 +122,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportFenceFdInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImportFenceFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkImportFenceFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkImportFenceFdInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkImportFenceFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImportFenceFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFence VkImportFenceFdInfoKHR
-         where
-        type VkFenceMType VkImportFenceFdInfoKHR = VkFence
-
-        {-# NOINLINE vkFence #-}
-        vkFence x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, fence})
-
-        {-# INLINE vkFenceByteOffset #-}
-        vkFenceByteOffset ~_
-          = #{offset VkImportFenceFdInfoKHR, fence}
-
-        {-# INLINE readVkFence #-}
-        readVkFence p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, fence}
-
-        {-# INLINE writeVkFence #-}
-        writeVkFence p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, fence}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "fence" VkImportFenceFdInfoKHR where
@@ -204,42 +153,26 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportFenceFdInfoKHR, fence}
 
-instance CanReadField "fence" VkImportFenceFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFence
+instance {-# OVERLAPPING #-}
+         CanReadField "fence" VkImportFenceFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, fence})
 
         {-# INLINE readField #-}
-        readField = readVkFence
+        readField p
+          = peekByteOff p #{offset VkImportFenceFdInfoKHR, fence}
 
-instance CanWriteField "fence" VkImportFenceFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "fence" VkImportFenceFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFence
-
-instance {-# OVERLAPPING #-} HasVkFlags VkImportFenceFdInfoKHR
-         where
-        type VkFlagsMType VkImportFenceFdInfoKHR = VkFenceImportFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkImportFenceFdInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, fence}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkImportFenceFdInfoKHR where
-        type FieldType "flags" VkImportFenceFdInfoKHR =
-             VkFenceImportFlagsKHR
+        type FieldType "flags" VkImportFenceFdInfoKHR = VkFenceImportFlags
         type FieldOptional "flags" VkImportFenceFdInfoKHR = 'True -- ' closing tick for hsc2hs
         type FieldOffset "flags" VkImportFenceFdInfoKHR =
              #{offset VkImportFenceFdInfoKHR, flags}
@@ -251,43 +184,27 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportFenceFdInfoKHR, flags}
 
-instance CanReadField "flags" VkImportFenceFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkImportFenceFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkImportFenceFdInfoKHR, flags}
 
-instance CanWriteField "flags" VkImportFenceFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkImportFenceFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkHandleType VkImportFenceFdInfoKHR
-         where
-        type VkHandleTypeMType VkImportFenceFdInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportFenceFdInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, handleType}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "handleType" VkImportFenceFdInfoKHR where
         type FieldType "handleType" VkImportFenceFdInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
+             VkExternalFenceHandleTypeFlagBits
         type FieldOptional "handleType" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportFenceFdInfoKHR =
              #{offset VkImportFenceFdInfoKHR, handleType}
@@ -300,36 +217,22 @@
         fieldOffset
           = #{offset VkImportFenceFdInfoKHR, handleType}
 
-instance CanReadField "handleType" VkImportFenceFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkImportFenceFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkImportFenceFdInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkImportFenceFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportFenceFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance {-# OVERLAPPING #-} HasVkFd VkImportFenceFdInfoKHR where
-        type VkFdMType VkImportFenceFdInfoKHR = CInt
-
-        {-# NOINLINE vkFd #-}
-        vkFd x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, fd})
-
-        {-# INLINE vkFdByteOffset #-}
-        vkFdByteOffset ~_
-          = #{offset VkImportFenceFdInfoKHR, fd}
-
-        {-# INLINE readVkFd #-}
-        readVkFd p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, fd}
-
-        {-# INLINE writeVkFd #-}
-        writeVkFd p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, fd}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, handleType}
 
 instance {-# OVERLAPPING #-} HasField "fd" VkImportFenceFdInfoKHR
          where
@@ -345,34 +248,40 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportFenceFdInfoKHR, fd}
 
-instance CanReadField "fd" VkImportFenceFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFd
+instance {-# OVERLAPPING #-}
+         CanReadField "fd" VkImportFenceFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, fd})
 
         {-# INLINE readField #-}
-        readField = readVkFd
+        readField p
+          = peekByteOff p #{offset VkImportFenceFdInfoKHR, fd}
 
-instance CanWriteField "fd" VkImportFenceFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "fd" VkImportFenceFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFd
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, fd}
 
 instance Show VkImportFenceFdInfoKHR where
         showsPrec d x
           = showString "VkImportFenceFdInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFence = " .
-                            showsPrec d (vkFence x) .
+                          showString "fence = " .
+                            showsPrec d (getField @"fence" x) .
                               showString ", " .
-                                showString "vkFlags = " .
-                                  showsPrec d (vkFlags x) .
+                                showString "flags = " .
+                                  showsPrec d (getField @"flags" x) .
                                     showString ", " .
-                                      showString "vkHandleType = " .
-                                        showsPrec d (vkHandleType x) .
+                                      showString "handleType = " .
+                                        showsPrec d (getField @"handleType" x) .
                                           showString ", " .
-                                            showString "vkFd = " .
-                                              showsPrec d (vkFd x) . showChar '}'
+                                            showString "fd = " .
+                                              showsPrec d (getField @"fd" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportFenceWin32HandleInfoKHR.hsc
@@ -5,33 +5,33 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportFenceWin32HandleInfoKHR
        (VkImportFenceWin32HandleInfoKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
+import           Foreign.Storable                                          (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR             (VkFenceImportFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                (VkFence)
-import           Graphics.Vulkan.Types.Include                                (HANDLE,
-                                                                               LPCWSTR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkFenceImportFlags             (VkFenceImportFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                             (VkFence)
+import           Graphics.Vulkan.Types.Include                             (HANDLE,
+                                                                            LPCWSTR)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportFenceWin32HandleInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                                        pNext;
 --   >     VkFence                          fence;
---   >     VkFenceImportFlagsKHR              flags;
---   >     VkExternalFenceHandleTypeFlagBitsKHR  handleType;
+--   >     VkFenceImportFlags              flags;
+--   >     VkExternalFenceHandleTypeFlagBits  handleType;
 --   >     HANDLE                             handle;
 --   >     LPCWSTR                            name;
 --   > } VkImportFenceWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportFenceWin32HandleInfoKHR.html VkImportFenceWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportFenceWin32HandleInfoKHR.html VkImportFenceWin32HandleInfoKHR registry at www.khronos.org>
 data VkImportFenceWin32HandleInfoKHR = VkImportFenceWin32HandleInfoKHR## Addr##
                                                                         ByteArray##
 
@@ -86,27 +86,6 @@
         type StructExtends VkImportFenceWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkImportFenceWin32HandleInfoKHR where
-        type VkSTypeMType VkImportFenceWin32HandleInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkImportFenceWin32HandleInfoKHR where
         type FieldType "sType" VkImportFenceWin32HandleInfoKHR =
              VkStructureType
@@ -122,38 +101,22 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkImportFenceWin32HandleInfoKHR where
-        type VkPNextMType VkImportFenceWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportFenceWin32HandleInfoKHR where
@@ -170,38 +133,22 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFence VkImportFenceWin32HandleInfoKHR where
-        type VkFenceMType VkImportFenceWin32HandleInfoKHR = VkFence
-
-        {-# NOINLINE vkFence #-}
-        vkFence x
+         CanReadField "pNext" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, fence})
-
-        {-# INLINE vkFenceByteOffset #-}
-        vkFenceByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, fence}
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkFence #-}
-        readVkFence p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, fence}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkFence #-}
-        writeVkFence p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, fence}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "fence" VkImportFenceWin32HandleInfoKHR where
@@ -218,44 +165,27 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, fence}
 
-instance CanReadField "fence" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFence
-
-        {-# INLINE readField #-}
-        readField = readVkFence
-
-instance CanWriteField "fence" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFence
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkImportFenceWin32HandleInfoKHR where
-        type VkFlagsMType VkImportFenceWin32HandleInfoKHR =
-             VkFenceImportFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "fence" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, flags}
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, fence})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, fence}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, flags}
+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 =
-             VkFenceImportFlagsKHR
+             VkFenceImportFlags
         type FieldOptional "flags" VkImportFenceWin32HandleInfoKHR = 'True -- ' closing tick for hsc2hs
         type FieldOffset "flags" VkImportFenceWin32HandleInfoKHR =
              #{offset VkImportFenceWin32HandleInfoKHR, flags}
@@ -268,44 +198,27 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, flags}
 
-instance CanReadField "flags" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportFenceWin32HandleInfoKHR where
-        type VkHandleTypeMType VkImportFenceWin32HandleInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "flags" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, flags})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, flags}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handleType}
+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 =
-             VkExternalFenceHandleTypeFlagBitsKHR
+             VkExternalFenceHandleTypeFlagBits
         type FieldOptional "handleType" VkImportFenceWin32HandleInfoKHR =
              'True -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportFenceWin32HandleInfoKHR =
@@ -320,39 +233,22 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, handleType}
 
-instance CanReadField "handleType" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
 instance {-# OVERLAPPING #-}
-         HasVkHandle VkImportFenceWin32HandleInfoKHR where
-        type VkHandleMType VkImportFenceWin32HandleInfoKHR = HANDLE
-
-        {-# NOINLINE vkHandle #-}
-        vkHandle x
+         CanReadField "handleType" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, handle})
-
-        {-# INLINE vkHandleByteOffset #-}
-        vkHandleByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, handle}
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, handleType})
 
-        {-# INLINE readVkHandle #-}
-        readVkHandle p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handle}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handleType}
 
-        {-# INLINE writeVkHandle #-}
-        writeVkHandle p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handle}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handleType}
 
 instance {-# OVERLAPPING #-}
          HasField "handle" VkImportFenceWin32HandleInfoKHR where
@@ -369,39 +265,22 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, handle}
 
-instance CanReadField "handle" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandle
-
-        {-# INLINE readField #-}
-        readField = readVkHandle
-
-instance CanWriteField "handle" VkImportFenceWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandle
-
 instance {-# OVERLAPPING #-}
-         HasVkName VkImportFenceWin32HandleInfoKHR where
-        type VkNameMType VkImportFenceWin32HandleInfoKHR = LPCWSTR
-
-        {-# NOINLINE vkName #-}
-        vkName x
+         CanReadField "handle" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, name})
-
-        {-# INLINE vkNameByteOffset #-}
-        vkNameByteOffset ~_
-          = #{offset VkImportFenceWin32HandleInfoKHR, name}
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, handle})
 
-        {-# INLINE readVkName #-}
-        readVkName p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, name}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handle}
 
-        {-# INLINE writeVkName #-}
-        writeVkName p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, name}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handle" VkImportFenceWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handle}
 
 instance {-# OVERLAPPING #-}
          HasField "name" VkImportFenceWin32HandleInfoKHR where
@@ -418,37 +297,43 @@
         fieldOffset
           = #{offset VkImportFenceWin32HandleInfoKHR, name}
 
-instance CanReadField "name" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkName
+instance {-# OVERLAPPING #-}
+         CanReadField "name" VkImportFenceWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, name})
 
         {-# INLINE readField #-}
-        readField = readVkName
+        readField p
+          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, name}
 
-instance CanWriteField "name" VkImportFenceWin32HandleInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "name" VkImportFenceWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkName
+        writeField p
+          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, name}
 
 instance Show VkImportFenceWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkImportFenceWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFence = " .
-                            showsPrec d (vkFence x) .
+                          showString "fence = " .
+                            showsPrec d (getField @"fence" x) .
                               showString ", " .
-                                showString "vkFlags = " .
-                                  showsPrec d (vkFlags x) .
+                                showString "flags = " .
+                                  showsPrec d (getField @"flags" x) .
                                     showString ", " .
-                                      showString "vkHandleType = " .
-                                        showsPrec d (vkHandleType x) .
+                                      showString "handleType = " .
+                                        showsPrec d (getField @"handleType" x) .
                                           showString ", " .
-                                            showString "vkHandle = " .
-                                              showsPrec d (vkHandle x) .
+                                            showString "handle = " .
+                                              showsPrec d (getField @"handle" x) .
                                                 showString ", " .
-                                                  showString "vkName = " .
-                                                    showsPrec d (vkName x) . showChar '}'
+                                                  showString "name = " .
+                                                    showsPrec d (getField @"name" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryFdInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryFdInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryFdInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryFdInfoKHR.hsc
@@ -5,27 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportMemoryFdInfoKHR
        (VkImportMemoryFdInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
+import           Foreign.Storable                                           (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo             (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo          (VkMemoryAllocateInfo)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportMemoryFdInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
 --   >     int                              fd;
 --   > } VkImportMemoryFdInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportMemoryFdInfoKHR.html VkImportMemoryFdInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportMemoryFdInfoKHR.html VkImportMemoryFdInfoKHR registry at www.khronos.org>
 data VkImportMemoryFdInfoKHR = VkImportMemoryFdInfoKHR## Addr##
                                                         ByteArray##
 
@@ -75,27 +75,6 @@
         type StructExtends VkImportMemoryFdInfoKHR =
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkImportMemoryFdInfoKHR
-         where
-        type VkSTypeMType VkImportMemoryFdInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportMemoryFdInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkImportMemoryFdInfoKHR where
         type FieldType "sType" VkImportMemoryFdInfoKHR = VkStructureType
@@ -110,37 +89,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportMemoryFdInfoKHR, sType}
 
-instance CanReadField "sType" VkImportMemoryFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkImportMemoryFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, sType}
 
-instance CanWriteField "sType" VkImportMemoryFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportMemoryFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImportMemoryFdInfoKHR
-         where
-        type VkPNextMType VkImportMemoryFdInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportMemoryFdInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportMemoryFdInfoKHR where
@@ -156,43 +120,27 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportMemoryFdInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImportMemoryFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportMemoryFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportMemoryFdInfoKHR where
-        type VkHandleTypeMType VkImportMemoryFdInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "pNext" VkImportMemoryFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportMemoryFdInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, pNext})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, pNext}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, handleType}
+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 =
-             VkExternalMemoryHandleTypeFlagBitsKHR
+             VkExternalMemoryHandleTypeFlagBits
         type FieldOptional "handleType" VkImportMemoryFdInfoKHR = 'True -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportMemoryFdInfoKHR =
              #{offset VkImportMemoryFdInfoKHR, handleType}
@@ -205,36 +153,22 @@
         fieldOffset
           = #{offset VkImportMemoryFdInfoKHR, handleType}
 
-instance CanReadField "handleType" VkImportMemoryFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkImportMemoryFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkImportMemoryFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportMemoryFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance {-# OVERLAPPING #-} HasVkFd VkImportMemoryFdInfoKHR where
-        type VkFdMType VkImportMemoryFdInfoKHR = CInt
-
-        {-# NOINLINE vkFd #-}
-        vkFd x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, fd})
-
-        {-# INLINE vkFdByteOffset #-}
-        vkFdByteOffset ~_
-          = #{offset VkImportMemoryFdInfoKHR, fd}
-
-        {-# INLINE readVkFd #-}
-        readVkFd p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, fd}
-
-        {-# INLINE writeVkFd #-}
-        writeVkFd p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, fd}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, handleType}
 
 instance {-# OVERLAPPING #-} HasField "fd" VkImportMemoryFdInfoKHR
          where
@@ -250,27 +184,33 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportMemoryFdInfoKHR, fd}
 
-instance CanReadField "fd" VkImportMemoryFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFd
+instance {-# OVERLAPPING #-}
+         CanReadField "fd" VkImportMemoryFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, fd})
 
         {-# INLINE readField #-}
-        readField = readVkFd
+        readField p
+          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, fd}
 
-instance CanWriteField "fd" VkImportMemoryFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "fd" VkImportMemoryFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFd
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, fd}
 
 instance Show VkImportMemoryFdInfoKHR where
         showsPrec d x
           = showString "VkImportMemoryFdInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) .
+                          showString "handleType = " .
+                            showsPrec d (getField @"handleType" x) .
                               showString ", " .
-                                showString "vkFd = " . showsPrec d (vkFd x) . showChar '}'
+                                showString "fd = " . showsPrec d (getField @"fd" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryHostPointerInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryHostPointerInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryHostPointerInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryHostPointerInfoEXT.hsc
@@ -5,27 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportMemoryHostPointerInfoEXT
        (VkImportMemoryHostPointerInfoEXT(..)) where
-import           Foreign.Storable                                              (Storable (..))
+import           Foreign.Storable                                           (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo             (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo          (VkMemoryAllocateInfo)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportMemoryHostPointerInfoEXT {
 --   >     VkStructureType sType;
 --   >     const void* pNext;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
 --   >     void* pHostPointer;
 --   > } VkImportMemoryHostPointerInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportMemoryHostPointerInfoEXT.html VkImportMemoryHostPointerInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportMemoryHostPointerInfoEXT.html VkImportMemoryHostPointerInfoEXT registry at www.khronos.org>
 data VkImportMemoryHostPointerInfoEXT = VkImportMemoryHostPointerInfoEXT## Addr##
                                                                           ByteArray##
 
@@ -81,28 +81,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkImportMemoryHostPointerInfoEXT where
-        type VkSTypeMType VkImportMemoryHostPointerInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportMemoryHostPointerInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkImportMemoryHostPointerInfoEXT where
         type FieldType "sType" VkImportMemoryHostPointerInfoEXT =
              VkStructureType
@@ -119,39 +97,22 @@
         fieldOffset
           = #{offset VkImportMemoryHostPointerInfoEXT, sType}
 
-instance CanReadField "sType" VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkImportMemoryHostPointerInfoEXT where
-        type VkPNextMType VkImportMemoryHostPointerInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkImportMemoryHostPointerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportMemoryHostPointerInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportMemoryHostPointerInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportMemoryHostPointerInfoEXT where
@@ -169,45 +130,27 @@
         fieldOffset
           = #{offset VkImportMemoryHostPointerInfoEXT, pNext}
 
-instance CanReadField "pNext" VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportMemoryHostPointerInfoEXT where
-        type VkHandleTypeMType VkImportMemoryHostPointerInfoEXT =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "pNext" VkImportMemoryHostPointerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportMemoryHostPointerInfoEXT, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, pNext})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pNext}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, handleType}
+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 =
-             VkExternalMemoryHandleTypeFlagBitsKHR
+             VkExternalMemoryHandleTypeFlagBits
         type FieldOptional "handleType" VkImportMemoryHostPointerInfoEXT =
              'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportMemoryHostPointerInfoEXT =
@@ -222,41 +165,22 @@
         fieldOffset
           = #{offset VkImportMemoryHostPointerInfoEXT, handleType}
 
-instance CanReadField "handleType" VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType"
-           VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
 instance {-# OVERLAPPING #-}
-         HasVkPHostPointer VkImportMemoryHostPointerInfoEXT where
-        type VkPHostPointerMType VkImportMemoryHostPointerInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPHostPointer #-}
-        vkPHostPointer x
+         CanReadField "handleType" VkImportMemoryHostPointerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer})
-
-        {-# INLINE vkPHostPointerByteOffset #-}
-        vkPHostPointerByteOffset ~_
-          = #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, handleType})
 
-        {-# INLINE readVkPHostPointer #-}
-        readVkPHostPointer p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, handleType}
 
-        {-# INLINE writeVkPHostPointer #-}
-        writeVkPHostPointer p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportMemoryHostPointerInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, handleType}
 
 instance {-# OVERLAPPING #-}
          HasField "pHostPointer" VkImportMemoryHostPointerInfoEXT where
@@ -276,32 +200,34 @@
         fieldOffset
           = #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
 
-instance CanReadField "pHostPointer"
-           VkImportMemoryHostPointerInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPHostPointer
+instance {-# OVERLAPPING #-}
+         CanReadField "pHostPointer" VkImportMemoryHostPointerInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer})
 
         {-# INLINE readField #-}
-        readField = readVkPHostPointer
+        readField p
+          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
 
-instance CanWriteField "pHostPointer"
-           VkImportMemoryHostPointerInfoEXT
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pHostPointer" VkImportMemoryHostPointerInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPHostPointer
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
 
 instance Show VkImportMemoryHostPointerInfoEXT where
         showsPrec d x
           = showString "VkImportMemoryHostPointerInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) .
+                          showString "handleType = " .
+                            showsPrec d (getField @"handleType" x) .
                               showString ", " .
-                                showString "vkPHostPointer = " .
-                                  showsPrec d (vkPHostPointer x) . showChar '}'
+                                showString "pHostPointer = " .
+                                  showsPrec d (getField @"pHostPointer" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoKHR.hsc
@@ -5,30 +5,30 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportMemoryWin32HandleInfoKHR
        (VkImportMemoryWin32HandleInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
+import           Foreign.Storable                                           (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Include                                 (HANDLE,
-                                                                                LPCWSTR)
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo             (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Include                              (HANDLE,
+                                                                             LPCWSTR)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo          (VkMemoryAllocateInfo)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportMemoryWin32HandleInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
 --   >     HANDLE           handle;
 --   >     LPCWSTR          name;
 --   > } VkImportMemoryWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportMemoryWin32HandleInfoKHR.html VkImportMemoryWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportMemoryWin32HandleInfoKHR.html VkImportMemoryWin32HandleInfoKHR registry at www.khronos.org>
 data VkImportMemoryWin32HandleInfoKHR = VkImportMemoryWin32HandleInfoKHR## Addr##
                                                                           ByteArray##
 
@@ -84,28 +84,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkImportMemoryWin32HandleInfoKHR where
-        type VkSTypeMType VkImportMemoryWin32HandleInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkImportMemoryWin32HandleInfoKHR where
         type FieldType "sType" VkImportMemoryWin32HandleInfoKHR =
              VkStructureType
@@ -122,39 +100,22 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkImportMemoryWin32HandleInfoKHR where
-        type VkPNextMType VkImportMemoryWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkImportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportMemoryWin32HandleInfoKHR where
@@ -172,45 +133,27 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportMemoryWin32HandleInfoKHR where
-        type VkHandleTypeMType VkImportMemoryWin32HandleInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "pNext" VkImportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
+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 =
-             VkExternalMemoryHandleTypeFlagBitsKHR
+             VkExternalMemoryHandleTypeFlagBits
         type FieldOptional "handleType" VkImportMemoryWin32HandleInfoKHR =
              'True -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportMemoryWin32HandleInfoKHR =
@@ -225,40 +168,22 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
 
-instance CanReadField "handleType" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType"
-           VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
 instance {-# OVERLAPPING #-}
-         HasVkHandle VkImportMemoryWin32HandleInfoKHR where
-        type VkHandleMType VkImportMemoryWin32HandleInfoKHR = HANDLE
-
-        {-# NOINLINE vkHandle #-}
-        vkHandle x
+         CanReadField "handleType" VkImportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, handle})
-
-        {-# INLINE vkHandleByteOffset #-}
-        vkHandleByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoKHR, handle}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, handleType})
 
-        {-# INLINE readVkHandle #-}
-        readVkHandle p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handle}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
 
-        {-# INLINE writeVkHandle #-}
-        writeVkHandle p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handle}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
 
 instance {-# OVERLAPPING #-}
          HasField "handle" VkImportMemoryWin32HandleInfoKHR where
@@ -277,39 +202,22 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoKHR, handle}
 
-instance CanReadField "handle" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandle
-
-        {-# INLINE readField #-}
-        readField = readVkHandle
-
-instance CanWriteField "handle" VkImportMemoryWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandle
-
 instance {-# OVERLAPPING #-}
-         HasVkName VkImportMemoryWin32HandleInfoKHR where
-        type VkNameMType VkImportMemoryWin32HandleInfoKHR = LPCWSTR
-
-        {-# NOINLINE vkName #-}
-        vkName x
+         CanReadField "handle" VkImportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, name})
-
-        {-# INLINE vkNameByteOffset #-}
-        vkNameByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoKHR, name}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, handle})
 
-        {-# INLINE readVkName #-}
-        readVkName p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, name}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handle}
 
-        {-# INLINE writeVkName #-}
-        writeVkName p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, name}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handle" VkImportMemoryWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handle}
 
 instance {-# OVERLAPPING #-}
          HasField "name" VkImportMemoryWin32HandleInfoKHR where
@@ -326,31 +234,37 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoKHR, name}
 
-instance CanReadField "name" VkImportMemoryWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkName
+instance {-# OVERLAPPING #-}
+         CanReadField "name" VkImportMemoryWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, name})
 
         {-# INLINE readField #-}
-        readField = readVkName
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, name}
 
-instance CanWriteField "name" VkImportMemoryWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "name" VkImportMemoryWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkName
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, name}
 
 instance Show VkImportMemoryWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkImportMemoryWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) .
+                          showString "handleType = " .
+                            showsPrec d (getField @"handleType" x) .
                               showString ", " .
-                                showString "vkHandle = " .
-                                  showsPrec d (vkHandle x) .
+                                showString "handle = " .
+                                  showsPrec d (getField @"handle" x) .
                                     showString ", " .
-                                      showString "vkName = " . showsPrec d (vkName x) . showChar '}'
+                                      showString "name = " .
+                                        showsPrec d (getField @"name" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportMemoryWin32HandleInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportMemoryWin32HandleInfoNV
        (VkImportMemoryWin32HandleInfoNV(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
 import           Graphics.Vulkan.Types.Include                                (HANDLE)
 import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo            (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportMemoryWin32HandleInfoNV {
@@ -26,7 +26,7 @@
 --   >     HANDLE                           handle;
 --   > } VkImportMemoryWin32HandleInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportMemoryWin32HandleInfoNV.html VkImportMemoryWin32HandleInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportMemoryWin32HandleInfoNV.html VkImportMemoryWin32HandleInfoNV registry at www.khronos.org>
 data VkImportMemoryWin32HandleInfoNV = VkImportMemoryWin32HandleInfoNV## Addr##
                                                                         ByteArray##
 
@@ -81,27 +81,6 @@
              '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkImportMemoryWin32HandleInfoNV where
-        type VkSTypeMType VkImportMemoryWin32HandleInfoNV = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkImportMemoryWin32HandleInfoNV where
         type FieldType "sType" VkImportMemoryWin32HandleInfoNV =
              VkStructureType
@@ -117,38 +96,22 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoNV, sType}
 
-instance CanReadField "sType" VkImportMemoryWin32HandleInfoNV where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkImportMemoryWin32HandleInfoNV where
-        type VkPNextMType VkImportMemoryWin32HandleInfoNV = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkImportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportMemoryWin32HandleInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportMemoryWin32HandleInfoNV where
@@ -165,39 +128,22 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoNV, pNext}
 
-instance CanReadField "pNext" VkImportMemoryWin32HandleInfoNV where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportMemoryWin32HandleInfoNV where
-        type VkHandleTypeMType VkImportMemoryWin32HandleInfoNV =
-             VkExternalMemoryHandleTypeFlagsNV
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "pNext" VkImportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoNV, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, pNext})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, pNext}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handleType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImportMemoryWin32HandleInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "handleType" VkImportMemoryWin32HandleInfoNV where
@@ -217,39 +163,22 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoNV, handleType}
 
-instance CanReadField "handleType" VkImportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType" VkImportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
 instance {-# OVERLAPPING #-}
-         HasVkHandle VkImportMemoryWin32HandleInfoNV where
-        type VkHandleMType VkImportMemoryWin32HandleInfoNV = HANDLE
-
-        {-# NOINLINE vkHandle #-}
-        vkHandle x
+         CanReadField "handleType" VkImportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, handle})
-
-        {-# INLINE vkHandleByteOffset #-}
-        vkHandleByteOffset ~_
-          = #{offset VkImportMemoryWin32HandleInfoNV, handle}
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, handleType})
 
-        {-# INLINE readVkHandle #-}
-        readVkHandle p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handle}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handleType}
 
-        {-# INLINE writeVkHandle #-}
-        writeVkHandle p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handle}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportMemoryWin32HandleInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handleType}
 
 instance {-# OVERLAPPING #-}
          HasField "handle" VkImportMemoryWin32HandleInfoNV where
@@ -266,29 +195,34 @@
         fieldOffset
           = #{offset VkImportMemoryWin32HandleInfoNV, handle}
 
-instance CanReadField "handle" VkImportMemoryWin32HandleInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkHandle
+instance {-# OVERLAPPING #-}
+         CanReadField "handle" VkImportMemoryWin32HandleInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, handle})
 
         {-# INLINE readField #-}
-        readField = readVkHandle
+        readField p
+          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handle}
 
-instance CanWriteField "handle" VkImportMemoryWin32HandleInfoNV
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handle" VkImportMemoryWin32HandleInfoNV where
         {-# INLINE writeField #-}
-        writeField = writeVkHandle
+        writeField p
+          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handle}
 
 instance Show VkImportMemoryWin32HandleInfoNV where
         showsPrec d x
           = showString "VkImportMemoryWin32HandleInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) .
+                          showString "handleType = " .
+                            showsPrec d (getField @"handleType" x) .
                               showString ", " .
-                                showString "vkHandle = " . showsPrec d (vkHandle x) . showChar '}'
+                                showString "handle = " .
+                                  showsPrec d (getField @"handle" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreFdInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreFdInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreFdInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreFdInfoKHR.hsc
@@ -5,36 +5,30 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportSemaphoreFdInfoKHR
        (VkImportSemaphoreFdInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
+import           Foreign.Storable                                              (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR
-                                                                                   (VkSemaphoreImportFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles
-                                                                                   (VkSemaphore)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags             (VkSemaphoreImportFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                                 (VkSemaphore)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportSemaphoreFdInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
 --   >     VkSemaphore    semaphore;
---   >     VkSemaphoreImportFlagsKHR flags;
---   >     VkExternalSemaphoreHandleTypeFlagBitsKHR handleType;
+--   >     VkSemaphoreImportFlags flags;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
 --   >     int                              fd;
 --   > } VkImportSemaphoreFdInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportSemaphoreFdInfoKHR.html VkImportSemaphoreFdInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportSemaphoreFdInfoKHR.html VkImportSemaphoreFdInfoKHR registry at www.khronos.org>
 data VkImportSemaphoreFdInfoKHR = VkImportSemaphoreFdInfoKHR## Addr##
                                                               ByteArray##
 
@@ -86,27 +80,6 @@
         type ReturnedOnly VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkImportSemaphoreFdInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkImportSemaphoreFdInfoKHR
-         where
-        type VkSTypeMType VkImportSemaphoreFdInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportSemaphoreFdInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkImportSemaphoreFdInfoKHR where
         type FieldType "sType" VkImportSemaphoreFdInfoKHR = VkStructureType
@@ -122,37 +95,22 @@
         fieldOffset
           = #{offset VkImportSemaphoreFdInfoKHR, sType}
 
-instance CanReadField "sType" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkImportSemaphoreFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, sType}
 
-instance CanWriteField "sType" VkImportSemaphoreFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportSemaphoreFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkImportSemaphoreFdInfoKHR
-         where
-        type VkPNextMType VkImportSemaphoreFdInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportSemaphoreFdInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportSemaphoreFdInfoKHR where
@@ -169,37 +127,22 @@
         fieldOffset
           = #{offset VkImportSemaphoreFdInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSemaphore VkImportSemaphoreFdInfoKHR where
-        type VkSemaphoreMType VkImportSemaphoreFdInfoKHR = VkSemaphore
-
-        {-# NOINLINE vkSemaphore #-}
-        vkSemaphore x
+         CanReadField "pNext" VkImportSemaphoreFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, semaphore})
-
-        {-# INLINE vkSemaphoreByteOffset #-}
-        vkSemaphoreByteOffset ~_
-          = #{offset VkImportSemaphoreFdInfoKHR, semaphore}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, pNext})
 
-        {-# INLINE readVkSemaphore #-}
-        readVkSemaphore p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, semaphore}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, pNext}
 
-        {-# INLINE writeVkSemaphore #-}
-        writeVkSemaphore p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, semaphore}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImportSemaphoreFdInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "semaphore" VkImportSemaphoreFdInfoKHR where
@@ -216,43 +159,27 @@
         fieldOffset
           = #{offset VkImportSemaphoreFdInfoKHR, semaphore}
 
-instance CanReadField "semaphore" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSemaphore
+instance {-# OVERLAPPING #-}
+         CanReadField "semaphore" VkImportSemaphoreFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, semaphore})
 
         {-# INLINE readField #-}
-        readField = readVkSemaphore
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, semaphore}
 
-instance CanWriteField "semaphore" VkImportSemaphoreFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "semaphore" VkImportSemaphoreFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSemaphore
-
-instance {-# OVERLAPPING #-} HasVkFlags VkImportSemaphoreFdInfoKHR
-         where
-        type VkFlagsMType VkImportSemaphoreFdInfoKHR =
-             VkSemaphoreImportFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkImportSemaphoreFdInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, semaphore}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkImportSemaphoreFdInfoKHR where
         type FieldType "flags" VkImportSemaphoreFdInfoKHR =
-             VkSemaphoreImportFlagsKHR
+             VkSemaphoreImportFlags
         type FieldOptional "flags" VkImportSemaphoreFdInfoKHR = 'True -- ' closing tick for hsc2hs
         type FieldOffset "flags" VkImportSemaphoreFdInfoKHR =
              #{offset VkImportSemaphoreFdInfoKHR, flags}
@@ -265,43 +192,27 @@
         fieldOffset
           = #{offset VkImportSemaphoreFdInfoKHR, flags}
 
-instance CanReadField "flags" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportSemaphoreFdInfoKHR where
-        type VkHandleTypeMType VkImportSemaphoreFdInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "flags" VkImportSemaphoreFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportSemaphoreFdInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, flags})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, flags}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, handleType}
+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 =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
+             VkExternalSemaphoreHandleTypeFlagBits
         type FieldOptional "handleType" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportSemaphoreFdInfoKHR =
              #{offset VkImportSemaphoreFdInfoKHR, handleType}
@@ -314,38 +225,22 @@
         fieldOffset
           = #{offset VkImportSemaphoreFdInfoKHR, handleType}
 
-instance CanReadField "handleType" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkImportSemaphoreFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkImportSemaphoreFdInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportSemaphoreFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance {-# OVERLAPPING #-} HasVkFd VkImportSemaphoreFdInfoKHR
-         where
-        type VkFdMType VkImportSemaphoreFdInfoKHR = CInt
-
-        {-# NOINLINE vkFd #-}
-        vkFd x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, fd})
-
-        {-# INLINE vkFdByteOffset #-}
-        vkFdByteOffset ~_
-          = #{offset VkImportSemaphoreFdInfoKHR, fd}
-
-        {-# INLINE readVkFd #-}
-        readVkFd p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, fd}
-
-        {-# INLINE writeVkFd #-}
-        writeVkFd p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, fd}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, handleType}
 
 instance {-# OVERLAPPING #-}
          HasField "fd" VkImportSemaphoreFdInfoKHR where
@@ -361,34 +256,40 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkImportSemaphoreFdInfoKHR, fd}
 
-instance CanReadField "fd" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFd
+instance {-# OVERLAPPING #-}
+         CanReadField "fd" VkImportSemaphoreFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, fd})
 
         {-# INLINE readField #-}
-        readField = readVkFd
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, fd}
 
-instance CanWriteField "fd" VkImportSemaphoreFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "fd" VkImportSemaphoreFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFd
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, fd}
 
 instance Show VkImportSemaphoreFdInfoKHR where
         showsPrec d x
           = showString "VkImportSemaphoreFdInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSemaphore = " .
-                            showsPrec d (vkSemaphore x) .
+                          showString "semaphore = " .
+                            showsPrec d (getField @"semaphore" x) .
                               showString ", " .
-                                showString "vkFlags = " .
-                                  showsPrec d (vkFlags x) .
+                                showString "flags = " .
+                                  showsPrec d (getField @"flags" x) .
                                     showString ", " .
-                                      showString "vkHandleType = " .
-                                        showsPrec d (vkHandleType x) .
+                                      showString "handleType = " .
+                                        showsPrec d (getField @"handleType" x) .
                                           showString ", " .
-                                            showString "vkFd = " .
-                                              showsPrec d (vkFd x) . showChar '}'
+                                            showString "fd = " .
+                                              showsPrec d (getField @"fd" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkImportSemaphoreWin32HandleInfoKHR.hsc
@@ -5,40 +5,33 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkImportSemaphoreWin32HandleInfoKHR
        (VkImportSemaphoreWin32HandleInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
+import           Foreign.Storable                                              (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR
-                                                                                   (VkSemaphoreImportFlagsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles
-                                                                                   (VkSemaphore)
-import           Graphics.Vulkan.Types.Include
-                                                                                   (HANDLE,
-                                                                                   LPCWSTR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags             (VkSemaphoreImportFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                                 (VkSemaphore)
+import           Graphics.Vulkan.Types.Include                                 (HANDLE,
+                                                                                LPCWSTR)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportSemaphoreWin32HandleInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
 --   >     VkSemaphore    semaphore;
---   >     VkSemaphoreImportFlagsKHR flags;
---   >     VkExternalSemaphoreHandleTypeFlagBitsKHR handleType;
+--   >     VkSemaphoreImportFlags flags;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
 --   >     HANDLE           handle;
 --   >     LPCWSTR          name;
 --   > } VkImportSemaphoreWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkImportSemaphoreWin32HandleInfoKHR.html VkImportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImportSemaphoreWin32HandleInfoKHR.html VkImportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
 data VkImportSemaphoreWin32HandleInfoKHR = VkImportSemaphoreWin32HandleInfoKHR## Addr##
                                                                                 ByteArray##
 
@@ -95,28 +88,6 @@
         type StructExtends VkImportSemaphoreWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkImportSemaphoreWin32HandleInfoKHR where
-        type VkSTypeMType VkImportSemaphoreWin32HandleInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkImportSemaphoreWin32HandleInfoKHR where
         type FieldType "sType" VkImportSemaphoreWin32HandleInfoKHR =
              VkStructureType
@@ -134,39 +105,22 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkImportSemaphoreWin32HandleInfoKHR where
-        type VkPNextMType VkImportSemaphoreWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkImportSemaphoreWin32HandleInfoKHR where
@@ -186,40 +140,22 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSemaphore VkImportSemaphoreWin32HandleInfoKHR where
-        type VkSemaphoreMType VkImportSemaphoreWin32HandleInfoKHR =
-             VkSemaphore
-
-        {-# NOINLINE vkSemaphore #-}
-        vkSemaphore x
+         CanReadField "pNext" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore})
-
-        {-# INLINE vkSemaphoreByteOffset #-}
-        vkSemaphoreByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkSemaphore #-}
-        readVkSemaphore p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkSemaphore #-}
-        writeVkSemaphore p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "semaphore" VkImportSemaphoreWin32HandleInfoKHR where
@@ -239,47 +175,27 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
 
-instance CanReadField "semaphore"
-           VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSemaphore
-
-        {-# INLINE readField #-}
-        readField = readVkSemaphore
-
-instance CanWriteField "semaphore"
-           VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSemaphore
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkImportSemaphoreWin32HandleInfoKHR where
-        type VkFlagsMType VkImportSemaphoreWin32HandleInfoKHR =
-             VkSemaphoreImportFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "semaphore" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
+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 =
-             VkSemaphoreImportFlagsKHR
+             VkSemaphoreImportFlags
         type FieldOptional "flags" VkImportSemaphoreWin32HandleInfoKHR =
              'True -- ' closing tick for hsc2hs
         type FieldOffset "flags" VkImportSemaphoreWin32HandleInfoKHR =
@@ -294,45 +210,27 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
 
-instance CanReadField "flags" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkImportSemaphoreWin32HandleInfoKHR where
-        type VkHandleTypeMType VkImportSemaphoreWin32HandleInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "flags" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, flags})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
+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 =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
+             VkExternalSemaphoreHandleTypeFlagBits
         type FieldOptional "handleType" VkImportSemaphoreWin32HandleInfoKHR
              = 'True -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkImportSemaphoreWin32HandleInfoKHR =
@@ -347,41 +245,23 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
 
-instance CanReadField "handleType"
-           VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
 
-instance CanWriteField "handleType"
-           VkImportSemaphoreWin32HandleInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkImportSemaphoreWin32HandleInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance {-# OVERLAPPING #-}
-         HasVkHandle VkImportSemaphoreWin32HandleInfoKHR where
-        type VkHandleMType VkImportSemaphoreWin32HandleInfoKHR = HANDLE
-
-        {-# NOINLINE vkHandle #-}
-        vkHandle x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, handle})
-
-        {-# INLINE vkHandleByteOffset #-}
-        vkHandleByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
-
-        {-# INLINE readVkHandle #-}
-        readVkHandle p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
-
-        {-# INLINE writeVkHandle #-}
-        writeVkHandle p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
 
 instance {-# OVERLAPPING #-}
          HasField "handle" VkImportSemaphoreWin32HandleInfoKHR where
@@ -401,39 +281,22 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
 
-instance CanReadField "handle" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandle
-
-        {-# INLINE readField #-}
-        readField = readVkHandle
-
-instance CanWriteField "handle" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandle
-
 instance {-# OVERLAPPING #-}
-         HasVkName VkImportSemaphoreWin32HandleInfoKHR where
-        type VkNameMType VkImportSemaphoreWin32HandleInfoKHR = LPCWSTR
-
-        {-# NOINLINE vkName #-}
-        vkName x
+         CanReadField "handle" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, name})
-
-        {-# INLINE vkNameByteOffset #-}
-        vkNameByteOffset ~_
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, handle})
 
-        {-# INLINE readVkName #-}
-        readVkName p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
 
-        {-# INLINE writeVkName #-}
-        writeVkName p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
+instance {-# OVERLAPPING #-}
+         CanWriteField "handle" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
 
 instance {-# OVERLAPPING #-}
          HasField "name" VkImportSemaphoreWin32HandleInfoKHR where
@@ -452,39 +315,43 @@
         fieldOffset
           = #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
 
-instance CanReadField "name" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkName
+instance {-# OVERLAPPING #-}
+         CanReadField "name" VkImportSemaphoreWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, name})
 
         {-# INLINE readField #-}
-        readField = readVkName
+        readField p
+          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
 
-instance CanWriteField "name" VkImportSemaphoreWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "name" VkImportSemaphoreWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkName
+        writeField p
+          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
 
 instance Show VkImportSemaphoreWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkImportSemaphoreWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSemaphore = " .
-                            showsPrec d (vkSemaphore x) .
+                          showString "semaphore = " .
+                            showsPrec d (getField @"semaphore" x) .
                               showString ", " .
-                                showString "vkFlags = " .
-                                  showsPrec d (vkFlags x) .
+                                showString "flags = " .
+                                  showsPrec d (getField @"flags" x) .
                                     showString ", " .
-                                      showString "vkHandleType = " .
-                                        showsPrec d (vkHandleType x) .
+                                      showString "handleType = " .
+                                        showsPrec d (getField @"handleType" x) .
                                           showString ", " .
-                                            showString "vkHandle = " .
-                                              showsPrec d (vkHandle x) .
+                                            showString "handle = " .
+                                              showsPrec d (getField @"handle" x) .
                                                 showString ", " .
-                                                  showString "vkName = " .
-                                                    showsPrec d (vkName x) . showChar '}'
+                                                  showString "name = " .
+                                                    showsPrec d (getField @"name" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutCreateInfoNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutCreateInfoNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutCreateInfoNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutCreateInfoNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutCreateInfoNVX
        (VkIndirectCommandsLayoutCreateInfoNVX(..)) where
@@ -21,7 +22,6 @@
                                                                                    (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutTokenNVX
                                                                                    (VkIndirectCommandsLayoutTokenNVX)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                    (unsafeDupablePerformIO)
 
@@ -34,7 +34,7 @@
 --   >     const VkIndirectCommandsLayoutTokenNVX*  pTokens;
 --   > } VkIndirectCommandsLayoutCreateInfoNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkIndirectCommandsLayoutCreateInfoNVX.html VkIndirectCommandsLayoutCreateInfoNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkIndirectCommandsLayoutCreateInfoNVX.html VkIndirectCommandsLayoutCreateInfoNVX registry at www.khronos.org>
 data VkIndirectCommandsLayoutCreateInfoNVX = VkIndirectCommandsLayoutCreateInfoNVX## Addr##
                                                                                     ByteArray##
 
@@ -92,28 +92,6 @@
         type StructExtends VkIndirectCommandsLayoutCreateInfoNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkIndirectCommandsLayoutCreateInfoNVX where
-        type VkSTypeMType VkIndirectCommandsLayoutCreateInfoNVX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkIndirectCommandsLayoutCreateInfoNVX where
         type FieldType "sType" VkIndirectCommandsLayoutCreateInfoNVX =
              VkStructureType
@@ -131,40 +109,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
 
-instance CanReadField "sType" VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkIndirectCommandsLayoutCreateInfoNVX where
-        type VkPNextMType VkIndirectCommandsLayoutCreateInfoNVX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkIndirectCommandsLayoutCreateInfoNVX where
@@ -184,41 +144,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
 
-instance CanReadField "pNext" VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkPipelineBindPoint VkIndirectCommandsLayoutCreateInfoNVX where
-        type VkPipelineBindPointMType VkIndirectCommandsLayoutCreateInfoNVX
-             = VkPipelineBindPoint
-
-        {-# NOINLINE vkPipelineBindPoint #-}
-        vkPipelineBindPoint x
+         CanReadField "pNext" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint})
-
-        {-# INLINE vkPipelineBindPointByteOffset #-}
-        vkPipelineBindPointByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext})
 
-        {-# INLINE readVkPipelineBindPoint #-}
-        readVkPipelineBindPoint p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
 
-        {-# INLINE writeVkPipelineBindPoint #-}
-        writeVkPipelineBindPoint p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineBindPoint" VkIndirectCommandsLayoutCreateInfoNVX
@@ -244,42 +185,26 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
 
-instance CanReadField "pipelineBindPoint"
+instance {-# OVERLAPPING #-}
+         CanReadField "pipelineBindPoint"
            VkIndirectCommandsLayoutCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPipelineBindPoint
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint})
 
         {-# INLINE readField #-}
-        readField = readVkPipelineBindPoint
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
 
-instance CanWriteField "pipelineBindPoint"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipelineBindPoint"
            VkIndirectCommandsLayoutCreateInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPipelineBindPoint
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkIndirectCommandsLayoutCreateInfoNVX where
-        type VkFlagsMType VkIndirectCommandsLayoutCreateInfoNVX =
-             VkIndirectCommandsLayoutUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkIndirectCommandsLayoutCreateInfoNVX where
@@ -299,41 +224,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
 
-instance CanReadField "flags" VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkTokenCount VkIndirectCommandsLayoutCreateInfoNVX where
-        type VkTokenCountMType VkIndirectCommandsLayoutCreateInfoNVX =
-             Word32
-
-        {-# NOINLINE vkTokenCount #-}
-        vkTokenCount x
+         CanReadField "flags" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount})
-
-        {-# INLINE vkTokenCountByteOffset #-}
-        vkTokenCountByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags})
 
-        {-# INLINE readVkTokenCount #-}
-        readVkTokenCount p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
 
-        {-# INLINE writeVkTokenCount #-}
-        writeVkTokenCount p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX where
@@ -356,42 +262,24 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
 
-instance CanReadField "tokenCount"
-           VkIndirectCommandsLayoutCreateInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkTokenCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount})
 
         {-# INLINE readField #-}
-        readField = readVkTokenCount
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
 
-instance CanWriteField "tokenCount"
-           VkIndirectCommandsLayoutCreateInfoNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkTokenCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPTokens VkIndirectCommandsLayoutCreateInfoNVX where
-        type VkPTokensMType VkIndirectCommandsLayoutCreateInfoNVX =
-             Ptr VkIndirectCommandsLayoutTokenNVX
-
-        {-# NOINLINE vkPTokens #-}
-        vkPTokens x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens})
-
-        {-# INLINE vkPTokensByteOffset #-}
-        vkPTokensByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
-
-        {-# INLINE readVkPTokens #-}
-        readVkPTokens p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
-
-        {-# INLINE writeVkPTokens #-}
-        writeVkPTokens p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pTokens" VkIndirectCommandsLayoutCreateInfoNVX where
@@ -411,38 +299,40 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
 
-instance CanReadField "pTokens"
-           VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPTokens
+instance {-# OVERLAPPING #-}
+         CanReadField "pTokens" VkIndirectCommandsLayoutCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens})
 
         {-# INLINE readField #-}
-        readField = readVkPTokens
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
 
-instance CanWriteField "pTokens"
-           VkIndirectCommandsLayoutCreateInfoNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pTokens" VkIndirectCommandsLayoutCreateInfoNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkPTokens
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
 
 instance Show VkIndirectCommandsLayoutCreateInfoNVX where
         showsPrec d x
           = showString "VkIndirectCommandsLayoutCreateInfoNVX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPipelineBindPoint = " .
-                            showsPrec d (vkPipelineBindPoint x) .
+                          showString "pipelineBindPoint = " .
+                            showsPrec d (getField @"pipelineBindPoint" x) .
                               showString ", " .
-                                showString "vkFlags = " .
-                                  showsPrec d (vkFlags x) .
+                                showString "flags = " .
+                                  showsPrec d (getField @"flags" x) .
                                     showString ", " .
-                                      showString "vkTokenCount = " .
-                                        showsPrec d (vkTokenCount x) .
+                                      showString "tokenCount = " .
+                                        showsPrec d (getField @"tokenCount" x) .
                                           showString ", " .
-                                            showString "vkPTokens = " .
-                                              showsPrec d (vkPTokens x) . showChar '}'
+                                            showString "pTokens = " .
+                                              showsPrec d (getField @"pTokens" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutTokenNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutTokenNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutTokenNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsLayoutTokenNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutTokenNVX
        (VkIndirectCommandsLayoutTokenNVX(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkIndirectCommandsTokenTypeNVX (VkIndirectCommandsTokenTypeNVX)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkIndirectCommandsLayoutTokenNVX {
@@ -23,7 +23,7 @@
 --   >     uint32_t                         divisor;
 --   > } VkIndirectCommandsLayoutTokenNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkIndirectCommandsLayoutTokenNVX.html VkIndirectCommandsLayoutTokenNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkIndirectCommandsLayoutTokenNVX.html VkIndirectCommandsLayoutTokenNVX registry at www.khronos.org>
 data VkIndirectCommandsLayoutTokenNVX = VkIndirectCommandsLayoutTokenNVX## Addr##
                                                                           ByteArray##
 
@@ -78,28 +78,6 @@
         type StructExtends VkIndirectCommandsLayoutTokenNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkTokenType VkIndirectCommandsLayoutTokenNVX where
-        type VkTokenTypeMType VkIndirectCommandsLayoutTokenNVX =
-             VkIndirectCommandsTokenTypeNVX
-
-        {-# NOINLINE vkTokenType #-}
-        vkTokenType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, tokenType})
-
-        {-# INLINE vkTokenTypeByteOffset #-}
-        vkTokenTypeByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-
-        {-# INLINE readVkTokenType #-}
-        readVkTokenType p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-
-        {-# INLINE writeVkTokenType #-}
-        writeVkTokenType p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
          HasField "tokenType" VkIndirectCommandsLayoutTokenNVX where
         type FieldType "tokenType" VkIndirectCommandsLayoutTokenNVX =
              VkIndirectCommandsTokenTypeNVX
@@ -117,39 +95,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
 
-instance CanReadField "tokenType" VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkTokenType
-
-        {-# INLINE readField #-}
-        readField = readVkTokenType
-
-instance CanWriteField "tokenType" VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTokenType
-
 instance {-# OVERLAPPING #-}
-         HasVkBindingUnit VkIndirectCommandsLayoutTokenNVX where
-        type VkBindingUnitMType VkIndirectCommandsLayoutTokenNVX = Word32
-
-        {-# NOINLINE vkBindingUnit #-}
-        vkBindingUnit x
+         CanReadField "tokenType" VkIndirectCommandsLayoutTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit})
-
-        {-# INLINE vkBindingUnitByteOffset #-}
-        vkBindingUnitByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, tokenType})
 
-        {-# INLINE readVkBindingUnit #-}
-        readVkBindingUnit p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
 
-        {-# INLINE writeVkBindingUnit #-}
-        writeVkBindingUnit p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
+instance {-# OVERLAPPING #-}
+         CanWriteField "tokenType" VkIndirectCommandsLayoutTokenNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
 
 instance {-# OVERLAPPING #-}
          HasField "bindingUnit" VkIndirectCommandsLayoutTokenNVX where
@@ -169,41 +130,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
 
-instance CanReadField "bindingUnit"
-           VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkBindingUnit
-
-        {-# INLINE readField #-}
-        readField = readVkBindingUnit
-
-instance CanWriteField "bindingUnit"
-           VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBindingUnit
-
 instance {-# OVERLAPPING #-}
-         HasVkDynamicCount VkIndirectCommandsLayoutTokenNVX where
-        type VkDynamicCountMType VkIndirectCommandsLayoutTokenNVX = Word32
-
-        {-# NOINLINE vkDynamicCount #-}
-        vkDynamicCount x
+         CanReadField "bindingUnit" VkIndirectCommandsLayoutTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount})
-
-        {-# INLINE vkDynamicCountByteOffset #-}
-        vkDynamicCountByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit})
 
-        {-# INLINE readVkDynamicCount #-}
-        readVkDynamicCount p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
 
-        {-# INLINE writeVkDynamicCount #-}
-        writeVkDynamicCount p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bindingUnit" VkIndirectCommandsLayoutTokenNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
 
 instance {-# OVERLAPPING #-}
          HasField "dynamicCount" VkIndirectCommandsLayoutTokenNVX where
@@ -223,41 +165,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
 
-instance CanReadField "dynamicCount"
-           VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkDynamicCount
-
-        {-# INLINE readField #-}
-        readField = readVkDynamicCount
-
-instance CanWriteField "dynamicCount"
-           VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDynamicCount
-
 instance {-# OVERLAPPING #-}
-         HasVkDivisor VkIndirectCommandsLayoutTokenNVX where
-        type VkDivisorMType VkIndirectCommandsLayoutTokenNVX = Word32
-
-        {-# NOINLINE vkDivisor #-}
-        vkDivisor x
+         CanReadField "dynamicCount" VkIndirectCommandsLayoutTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, divisor})
-
-        {-# INLINE vkDivisorByteOffset #-}
-        vkDivisorByteOffset ~_
-          = #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount})
 
-        {-# INLINE readVkDivisor #-}
-        readVkDivisor p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
 
-        {-# INLINE writeVkDivisor #-}
-        writeVkDivisor p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dynamicCount" VkIndirectCommandsLayoutTokenNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
 
 instance {-# OVERLAPPING #-}
          HasField "divisor" VkIndirectCommandsLayoutTokenNVX where
@@ -276,30 +199,34 @@
         fieldOffset
           = #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
 
-instance CanReadField "divisor" VkIndirectCommandsLayoutTokenNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkDivisor
+instance {-# OVERLAPPING #-}
+         CanReadField "divisor" VkIndirectCommandsLayoutTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, divisor})
 
         {-# INLINE readField #-}
-        readField = readVkDivisor
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
 
-instance CanWriteField "divisor" VkIndirectCommandsLayoutTokenNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "divisor" VkIndirectCommandsLayoutTokenNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkDivisor
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
 
 instance Show VkIndirectCommandsLayoutTokenNVX where
         showsPrec d x
           = showString "VkIndirectCommandsLayoutTokenNVX {" .
-              showString "vkTokenType = " .
-                showsPrec d (vkTokenType x) .
+              showString "tokenType = " .
+                showsPrec d (getField @"tokenType" x) .
                   showString ", " .
-                    showString "vkBindingUnit = " .
-                      showsPrec d (vkBindingUnit x) .
+                    showString "bindingUnit = " .
+                      showsPrec d (getField @"bindingUnit" x) .
                         showString ", " .
-                          showString "vkDynamicCount = " .
-                            showsPrec d (vkDynamicCount x) .
+                          showString "dynamicCount = " .
+                            showsPrec d (getField @"dynamicCount" x) .
                               showString ", " .
-                                showString "vkDivisor = " .
-                                  showsPrec d (vkDivisor x) . showChar '}'
+                                showString "divisor = " .
+                                  showsPrec d (getField @"divisor" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsTokenNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsTokenNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsTokenNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkIndirectCommandsTokenNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkIndirectCommandsTokenNVX
        (VkIndirectCommandsTokenNVX(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.BaseTypes                           (VkDeviceSize)
 import           Graphics.Vulkan.Types.Enum.VkIndirectCommandsTokenTypeNVX (VkIndirectCommandsTokenTypeNVX)
 import           Graphics.Vulkan.Types.Handles                             (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkIndirectCommandsTokenNVX {
@@ -24,7 +24,7 @@
 --   >     VkDeviceSize                     offset;
 --   > } VkIndirectCommandsTokenNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkIndirectCommandsTokenNVX.html VkIndirectCommandsTokenNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkIndirectCommandsTokenNVX.html VkIndirectCommandsTokenNVX registry at www.khronos.org>
 data VkIndirectCommandsTokenNVX = VkIndirectCommandsTokenNVX## Addr##
                                                               ByteArray##
 
@@ -77,28 +77,6 @@
         type StructExtends VkIndirectCommandsTokenNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkTokenType VkIndirectCommandsTokenNVX where
-        type VkTokenTypeMType VkIndirectCommandsTokenNVX =
-             VkIndirectCommandsTokenTypeNVX
-
-        {-# NOINLINE vkTokenType #-}
-        vkTokenType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, tokenType})
-
-        {-# INLINE vkTokenTypeByteOffset #-}
-        vkTokenTypeByteOffset ~_
-          = #{offset VkIndirectCommandsTokenNVX, tokenType}
-
-        {-# INLINE readVkTokenType #-}
-        readVkTokenType p
-          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, tokenType}
-
-        {-# INLINE writeVkTokenType #-}
-        writeVkTokenType p
-          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
          HasField "tokenType" VkIndirectCommandsTokenNVX where
         type FieldType "tokenType" VkIndirectCommandsTokenNVX =
              VkIndirectCommandsTokenTypeNVX
@@ -114,37 +92,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsTokenNVX, tokenType}
 
-instance CanReadField "tokenType" VkIndirectCommandsTokenNVX where
-        {-# INLINE getField #-}
-        getField = vkTokenType
+instance {-# OVERLAPPING #-}
+         CanReadField "tokenType" VkIndirectCommandsTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, tokenType})
 
         {-# INLINE readField #-}
-        readField = readVkTokenType
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, tokenType}
 
-instance CanWriteField "tokenType" VkIndirectCommandsTokenNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "tokenType" VkIndirectCommandsTokenNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkTokenType
-
-instance {-# OVERLAPPING #-} HasVkBuffer VkIndirectCommandsTokenNVX
-         where
-        type VkBufferMType VkIndirectCommandsTokenNVX = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkIndirectCommandsTokenNVX, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, buffer}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, tokenType}
 
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkIndirectCommandsTokenNVX where
@@ -161,37 +124,22 @@
         fieldOffset
           = #{offset VkIndirectCommandsTokenNVX, buffer}
 
-instance CanReadField "buffer" VkIndirectCommandsTokenNVX where
-        {-# INLINE getField #-}
-        getField = vkBuffer
+instance {-# OVERLAPPING #-}
+         CanReadField "buffer" VkIndirectCommandsTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, buffer})
 
         {-# INLINE readField #-}
-        readField = readVkBuffer
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, buffer}
 
-instance CanWriteField "buffer" VkIndirectCommandsTokenNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkIndirectCommandsTokenNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance {-# OVERLAPPING #-} HasVkOffset VkIndirectCommandsTokenNVX
-         where
-        type VkOffsetMType VkIndirectCommandsTokenNVX = VkDeviceSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkIndirectCommandsTokenNVX, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, offset}
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, buffer}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkIndirectCommandsTokenNVX where
@@ -208,24 +156,31 @@
         fieldOffset
           = #{offset VkIndirectCommandsTokenNVX, offset}
 
-instance CanReadField "offset" VkIndirectCommandsTokenNVX where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkIndirectCommandsTokenNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, offset}
 
-instance CanWriteField "offset" VkIndirectCommandsTokenNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkIndirectCommandsTokenNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
+        writeField p
+          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, offset}
 
 instance Show VkIndirectCommandsTokenNVX where
         showsPrec d x
           = showString "VkIndirectCommandsTokenNVX {" .
-              showString "vkTokenType = " .
-                showsPrec d (vkTokenType x) .
+              showString "tokenType = " .
+                showsPrec d (getField @"tokenType" x) .
                   showString ", " .
-                    showString "vkBuffer = " .
-                      showsPrec d (vkBuffer x) .
+                    showString "buffer = " .
+                      showsPrec d (getField @"buffer" x) .
                         showString ", " .
-                          showString "vkOffset = " . showsPrec d (vkOffset x) . showChar '}'
+                          showString "offset = " .
+                            showsPrec d (getField @"offset" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReference.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReference.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReference.hsc
@@ -0,0 +1,203 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReference
+       (VkInputAttachmentAspectReference(..)) where
+import           Foreign.Storable                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags (VkImageAspectFlags)
+import           System.IO.Unsafe                              (unsafeDupablePerformIO)
+
+-- | > typedef struct VkInputAttachmentAspectReference {
+--   >     uint32_t                        subpass;
+--   >     uint32_t                        inputAttachmentIndex;
+--   >     VkImageAspectFlags              aspectMask;
+--   > } VkInputAttachmentAspectReference;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkInputAttachmentAspectReference.html VkInputAttachmentAspectReference registry at www.khronos.org>
+data VkInputAttachmentAspectReference = VkInputAttachmentAspectReference## Addr##
+                                                                          ByteArray##
+
+instance Eq VkInputAttachmentAspectReference where
+        (VkInputAttachmentAspectReference## a _) ==
+          x@(VkInputAttachmentAspectReference## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkInputAttachmentAspectReference where
+        (VkInputAttachmentAspectReference## a _) `compare`
+          x@(VkInputAttachmentAspectReference## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkInputAttachmentAspectReference where
+        unsafeAddr (VkInputAttachmentAspectReference## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkInputAttachmentAspectReference## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkInputAttachmentAspectReference##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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"
+           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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReferenceKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReferenceKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReferenceKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReferenceKHR
+       (VkInputAttachmentAspectReference(..),
+        VkInputAttachmentAspectReferenceKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReference (VkInputAttachmentAspectReference (..))
+
+-- | Alias for `VkInputAttachmentAspectReference`
+type VkInputAttachmentAspectReferenceKHR =
+     VkInputAttachmentAspectReference
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReferenceKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReferenceKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkInputAttachmentAspectReferenceKHR.hsc
+++ /dev/null
@@ -1,260 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReferenceKHR
-       (VkInputAttachmentAspectReferenceKHR(..)) where
-import           Foreign.Storable                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags (VkImageAspectFlags)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkInputAttachmentAspectReferenceKHR {
---   >     uint32_t                        subpass;
---   >     uint32_t                        inputAttachmentIndex;
---   >     VkImageAspectFlags              aspectMask;
---   > } VkInputAttachmentAspectReferenceKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkInputAttachmentAspectReferenceKHR.html VkInputAttachmentAspectReferenceKHR registry at www.khronos.org>
-data VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReferenceKHR## Addr##
-                                                                                ByteArray##
-
-instance Eq VkInputAttachmentAspectReferenceKHR where
-        (VkInputAttachmentAspectReferenceKHR## a _) ==
-          x@(VkInputAttachmentAspectReferenceKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkInputAttachmentAspectReferenceKHR where
-        (VkInputAttachmentAspectReferenceKHR## a _) `compare`
-          x@(VkInputAttachmentAspectReferenceKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkInputAttachmentAspectReferenceKHR where
-        sizeOf ~_ = #{size VkInputAttachmentAspectReferenceKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkInputAttachmentAspectReferenceKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkInputAttachmentAspectReferenceKHR
-         where
-        unsafeAddr (VkInputAttachmentAspectReferenceKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkInputAttachmentAspectReferenceKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkInputAttachmentAspectReferenceKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkInputAttachmentAspectReferenceKHR where
-        type StructFields VkInputAttachmentAspectReferenceKHR =
-             '["subpass", "inputAttachmentIndex", "aspectMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkInputAttachmentAspectReferenceKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkInputAttachmentAspectReferenceKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkInputAttachmentAspectReferenceKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSubpass VkInputAttachmentAspectReferenceKHR where
-        type VkSubpassMType VkInputAttachmentAspectReferenceKHR = Word32
-
-        {-# NOINLINE vkSubpass #-}
-        vkSubpass x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInputAttachmentAspectReferenceKHR, subpass})
-
-        {-# INLINE vkSubpassByteOffset #-}
-        vkSubpassByteOffset ~_
-          = #{offset VkInputAttachmentAspectReferenceKHR, subpass}
-
-        {-# INLINE readVkSubpass #-}
-        readVkSubpass p
-          = peekByteOff p #{offset VkInputAttachmentAspectReferenceKHR, subpass}
-
-        {-# INLINE writeVkSubpass #-}
-        writeVkSubpass p
-          = pokeByteOff p #{offset VkInputAttachmentAspectReferenceKHR, subpass}
-
-instance {-# OVERLAPPING #-}
-         HasField "subpass" VkInputAttachmentAspectReferenceKHR where
-        type FieldType "subpass" VkInputAttachmentAspectReferenceKHR =
-             Word32
-        type FieldOptional "subpass" VkInputAttachmentAspectReferenceKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subpass" VkInputAttachmentAspectReferenceKHR =
-             #{offset VkInputAttachmentAspectReferenceKHR, subpass}
-        type FieldIsArray "subpass" VkInputAttachmentAspectReferenceKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInputAttachmentAspectReferenceKHR, subpass}
-
-instance CanReadField "subpass" VkInputAttachmentAspectReferenceKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSubpass
-
-        {-# INLINE readField #-}
-        readField = readVkSubpass
-
-instance CanWriteField "subpass"
-           VkInputAttachmentAspectReferenceKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSubpass
-
-instance {-# OVERLAPPING #-}
-         HasVkInputAttachmentIndex VkInputAttachmentAspectReferenceKHR where
-        type VkInputAttachmentIndexMType
-               VkInputAttachmentAspectReferenceKHR
-             = Word32
-
-        {-# NOINLINE vkInputAttachmentIndex #-}
-        vkInputAttachmentIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInputAttachmentAspectReferenceKHR, inputAttachmentIndex})
-
-        {-# INLINE vkInputAttachmentIndexByteOffset #-}
-        vkInputAttachmentIndexByteOffset ~_
-          = #{offset VkInputAttachmentAspectReferenceKHR, inputAttachmentIndex}
-
-        {-# INLINE readVkInputAttachmentIndex #-}
-        readVkInputAttachmentIndex p
-          = peekByteOff p #{offset VkInputAttachmentAspectReferenceKHR, inputAttachmentIndex}
-
-        {-# INLINE writeVkInputAttachmentIndex #-}
-        writeVkInputAttachmentIndex p
-          = pokeByteOff p #{offset VkInputAttachmentAspectReferenceKHR, inputAttachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "inputAttachmentIndex" VkInputAttachmentAspectReferenceKHR
-         where
-        type FieldType "inputAttachmentIndex"
-               VkInputAttachmentAspectReferenceKHR
-             = Word32
-        type FieldOptional "inputAttachmentIndex"
-               VkInputAttachmentAspectReferenceKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "inputAttachmentIndex"
-               VkInputAttachmentAspectReferenceKHR
-             =
-             #{offset VkInputAttachmentAspectReferenceKHR, inputAttachmentIndex}
-        type FieldIsArray "inputAttachmentIndex"
-               VkInputAttachmentAspectReferenceKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInputAttachmentAspectReferenceKHR, inputAttachmentIndex}
-
-instance CanReadField "inputAttachmentIndex"
-           VkInputAttachmentAspectReferenceKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkInputAttachmentIndex
-
-        {-# INLINE readField #-}
-        readField = readVkInputAttachmentIndex
-
-instance CanWriteField "inputAttachmentIndex"
-           VkInputAttachmentAspectReferenceKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkInputAttachmentIndex
-
-instance {-# OVERLAPPING #-}
-         HasVkAspectMask VkInputAttachmentAspectReferenceKHR where
-        type VkAspectMaskMType VkInputAttachmentAspectReferenceKHR =
-             VkImageAspectFlags
-
-        {-# NOINLINE vkAspectMask #-}
-        vkAspectMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInputAttachmentAspectReferenceKHR, aspectMask})
-
-        {-# INLINE vkAspectMaskByteOffset #-}
-        vkAspectMaskByteOffset ~_
-          = #{offset VkInputAttachmentAspectReferenceKHR, aspectMask}
-
-        {-# INLINE readVkAspectMask #-}
-        readVkAspectMask p
-          = peekByteOff p #{offset VkInputAttachmentAspectReferenceKHR, aspectMask}
-
-        {-# INLINE writeVkAspectMask #-}
-        writeVkAspectMask p
-          = pokeByteOff p #{offset VkInputAttachmentAspectReferenceKHR, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkInputAttachmentAspectReferenceKHR where
-        type FieldType "aspectMask" VkInputAttachmentAspectReferenceKHR =
-             VkImageAspectFlags
-        type FieldOptional "aspectMask" VkInputAttachmentAspectReferenceKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkInputAttachmentAspectReferenceKHR =
-             #{offset VkInputAttachmentAspectReferenceKHR, aspectMask}
-        type FieldIsArray "aspectMask" VkInputAttachmentAspectReferenceKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInputAttachmentAspectReferenceKHR, aspectMask}
-
-instance CanReadField "aspectMask"
-           VkInputAttachmentAspectReferenceKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkAspectMask
-
-        {-# INLINE readField #-}
-        readField = readVkAspectMask
-
-instance CanWriteField "aspectMask"
-           VkInputAttachmentAspectReferenceKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkAspectMask
-
-instance Show VkInputAttachmentAspectReferenceKHR where
-        showsPrec d x
-          = showString "VkInputAttachmentAspectReferenceKHR {" .
-              showString "vkSubpass = " .
-                showsPrec d (vkSubpass x) .
-                  showString ", " .
-                    showString "vkInputAttachmentIndex = " .
-                      showsPrec d (vkInputAttachmentIndex x) .
-                        showString ", " .
-                          showString "vkAspectMask = " .
-                            showsPrec d (vkAspectMask x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkInstanceCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkInstanceCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkInstanceCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkInstanceCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo
        (VkInstanceCreateInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Bitmasks                 (VkInstanceCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkApplicationInfo (VkApplicationInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkInstanceCreateInfo {
@@ -29,7 +29,7 @@
 --   >     const char* const*      ppEnabledExtensionNames;
 --   > } VkInstanceCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkInstanceCreateInfo.html VkInstanceCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkInstanceCreateInfo.html VkInstanceCreateInfo registry at www.khronos.org>
 data VkInstanceCreateInfo = VkInstanceCreateInfo## Addr## ByteArray##
 
 instance Eq VkInstanceCreateInfo where
@@ -79,26 +79,6 @@
         type ReturnedOnly VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkInstanceCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkInstanceCreateInfo where
-        type VkSTypeMType VkInstanceCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkInstanceCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkInstanceCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkInstanceCreateInfo
          where
         type FieldType "sType" VkInstanceCreateInfo = VkStructureType
@@ -113,36 +93,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkInstanceCreateInfo, sType}
 
-instance CanReadField "sType" VkInstanceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, sType}
 
-instance CanWriteField "sType" VkInstanceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkInstanceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkInstanceCreateInfo where
-        type VkPNextMType VkInstanceCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkInstanceCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkInstanceCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkInstanceCreateInfo
          where
@@ -158,36 +124,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkInstanceCreateInfo, pNext}
 
-instance CanReadField "pNext" VkInstanceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkInstanceCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkInstanceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkInstanceCreateInfo where
-        type VkFlagsMType VkInstanceCreateInfo = VkInstanceCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkInstanceCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkInstanceCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkInstanceCreateInfo
          where
@@ -203,38 +155,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkInstanceCreateInfo, flags}
 
-instance CanReadField "flags" VkInstanceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPApplicationInfo VkInstanceCreateInfo where
-        type VkPApplicationInfoMType VkInstanceCreateInfo =
-             Ptr VkApplicationInfo
-
-        {-# NOINLINE vkPApplicationInfo #-}
-        vkPApplicationInfo x
+         CanReadField "flags" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, pApplicationInfo})
-
-        {-# INLINE vkPApplicationInfoByteOffset #-}
-        vkPApplicationInfoByteOffset ~_
-          = #{offset VkInstanceCreateInfo, pApplicationInfo}
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, flags})
 
-        {-# INLINE readVkPApplicationInfo #-}
-        readVkPApplicationInfo p
-          = peekByteOff p #{offset VkInstanceCreateInfo, pApplicationInfo}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, flags}
 
-        {-# INLINE writeVkPApplicationInfo #-}
-        writeVkPApplicationInfo p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, pApplicationInfo}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkInstanceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pApplicationInfo" VkInstanceCreateInfo where
@@ -252,38 +188,22 @@
         fieldOffset
           = #{offset VkInstanceCreateInfo, pApplicationInfo}
 
-instance CanReadField "pApplicationInfo" VkInstanceCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPApplicationInfo
-
-        {-# INLINE readField #-}
-        readField = readVkPApplicationInfo
-
-instance CanWriteField "pApplicationInfo" VkInstanceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPApplicationInfo
-
 instance {-# OVERLAPPING #-}
-         HasVkEnabledLayerCount VkInstanceCreateInfo where
-        type VkEnabledLayerCountMType VkInstanceCreateInfo = Word32
-
-        {-# NOINLINE vkEnabledLayerCount #-}
-        vkEnabledLayerCount x
+         CanReadField "pApplicationInfo" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, enabledLayerCount})
-
-        {-# INLINE vkEnabledLayerCountByteOffset #-}
-        vkEnabledLayerCountByteOffset ~_
-          = #{offset VkInstanceCreateInfo, enabledLayerCount}
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, pApplicationInfo})
 
-        {-# INLINE readVkEnabledLayerCount #-}
-        readVkEnabledLayerCount p
-          = peekByteOff p #{offset VkInstanceCreateInfo, enabledLayerCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, pApplicationInfo}
 
-        {-# INLINE writeVkEnabledLayerCount #-}
-        writeVkEnabledLayerCount p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, enabledLayerCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pApplicationInfo" VkInstanceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, pApplicationInfo}
 
 instance {-# OVERLAPPING #-}
          HasField "enabledLayerCount" VkInstanceCreateInfo where
@@ -300,39 +220,22 @@
         fieldOffset
           = #{offset VkInstanceCreateInfo, enabledLayerCount}
 
-instance CanReadField "enabledLayerCount" VkInstanceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkEnabledLayerCount
-
-        {-# INLINE readField #-}
-        readField = readVkEnabledLayerCount
-
-instance CanWriteField "enabledLayerCount" VkInstanceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkEnabledLayerCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPpEnabledLayerNames VkInstanceCreateInfo where
-        type VkPpEnabledLayerNamesMType VkInstanceCreateInfo = Ptr CString
-
-        {-# NOINLINE vkPpEnabledLayerNames #-}
-        vkPpEnabledLayerNames x
+         CanReadField "enabledLayerCount" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, ppEnabledLayerNames})
-
-        {-# INLINE vkPpEnabledLayerNamesByteOffset #-}
-        vkPpEnabledLayerNamesByteOffset ~_
-          = #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, enabledLayerCount})
 
-        {-# INLINE readVkPpEnabledLayerNames #-}
-        readVkPpEnabledLayerNames p
-          = peekByteOff p #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, enabledLayerCount}
 
-        {-# INLINE writeVkPpEnabledLayerNames #-}
-        writeVkPpEnabledLayerNames p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
+instance {-# OVERLAPPING #-}
+         CanWriteField "enabledLayerCount" VkInstanceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, enabledLayerCount}
 
 instance {-# OVERLAPPING #-}
          HasField "ppEnabledLayerNames" VkInstanceCreateInfo where
@@ -352,39 +255,22 @@
         fieldOffset
           = #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
 
-instance CanReadField "ppEnabledLayerNames" VkInstanceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPpEnabledLayerNames
-
-        {-# INLINE readField #-}
-        readField = readVkPpEnabledLayerNames
-
-instance CanWriteField "ppEnabledLayerNames" VkInstanceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPpEnabledLayerNames
-
 instance {-# OVERLAPPING #-}
-         HasVkEnabledExtensionCount VkInstanceCreateInfo where
-        type VkEnabledExtensionCountMType VkInstanceCreateInfo = Word32
-
-        {-# NOINLINE vkEnabledExtensionCount #-}
-        vkEnabledExtensionCount x
+         CanReadField "ppEnabledLayerNames" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, enabledExtensionCount})
-
-        {-# INLINE vkEnabledExtensionCountByteOffset #-}
-        vkEnabledExtensionCountByteOffset ~_
-          = #{offset VkInstanceCreateInfo, enabledExtensionCount}
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, ppEnabledLayerNames})
 
-        {-# INLINE readVkEnabledExtensionCount #-}
-        readVkEnabledExtensionCount p
-          = peekByteOff p #{offset VkInstanceCreateInfo, enabledExtensionCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
 
-        {-# INLINE writeVkEnabledExtensionCount #-}
-        writeVkEnabledExtensionCount p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, enabledExtensionCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "ppEnabledLayerNames" VkInstanceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
 
 instance {-# OVERLAPPING #-}
          HasField "enabledExtensionCount" VkInstanceCreateInfo where
@@ -404,40 +290,22 @@
         fieldOffset
           = #{offset VkInstanceCreateInfo, enabledExtensionCount}
 
-instance CanReadField "enabledExtensionCount" VkInstanceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkEnabledExtensionCount
-
-        {-# INLINE readField #-}
-        readField = readVkEnabledExtensionCount
-
-instance CanWriteField "enabledExtensionCount" VkInstanceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkEnabledExtensionCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPpEnabledExtensionNames VkInstanceCreateInfo where
-        type VkPpEnabledExtensionNamesMType VkInstanceCreateInfo =
-             Ptr CString
-
-        {-# NOINLINE vkPpEnabledExtensionNames #-}
-        vkPpEnabledExtensionNames x
+         CanReadField "enabledExtensionCount" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, ppEnabledExtensionNames})
-
-        {-# INLINE vkPpEnabledExtensionNamesByteOffset #-}
-        vkPpEnabledExtensionNamesByteOffset ~_
-          = #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, enabledExtensionCount})
 
-        {-# INLINE readVkPpEnabledExtensionNames #-}
-        readVkPpEnabledExtensionNames p
-          = peekByteOff p #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, enabledExtensionCount}
 
-        {-# INLINE writeVkPpEnabledExtensionNames #-}
-        writeVkPpEnabledExtensionNames p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
+instance {-# OVERLAPPING #-}
+         CanWriteField "enabledExtensionCount" VkInstanceCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, enabledExtensionCount}
 
 instance {-# OVERLAPPING #-}
          HasField "ppEnabledExtensionNames" VkInstanceCreateInfo where
@@ -457,45 +325,50 @@
         fieldOffset
           = #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
 
-instance CanReadField "ppEnabledExtensionNames"
-           VkInstanceCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPpEnabledExtensionNames
+instance {-# OVERLAPPING #-}
+         CanReadField "ppEnabledExtensionNames" VkInstanceCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, ppEnabledExtensionNames})
 
         {-# INLINE readField #-}
-        readField = readVkPpEnabledExtensionNames
+        readField p
+          = peekByteOff p #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
 
-instance CanWriteField "ppEnabledExtensionNames"
-           VkInstanceCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "ppEnabledExtensionNames" VkInstanceCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPpEnabledExtensionNames
+        writeField p
+          = pokeByteOff p #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
 
 instance Show VkInstanceCreateInfo where
         showsPrec d x
           = showString "VkInstanceCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkPApplicationInfo = " .
-                                  showsPrec d (vkPApplicationInfo x) .
+                                showString "pApplicationInfo = " .
+                                  showsPrec d (getField @"pApplicationInfo" x) .
                                     showString ", " .
-                                      showString "vkEnabledLayerCount = " .
-                                        showsPrec d (vkEnabledLayerCount x) .
+                                      showString "enabledLayerCount = " .
+                                        showsPrec d (getField @"enabledLayerCount" x) .
                                           showString ", " .
-                                            showString "vkPpEnabledLayerNames = " .
-                                              showsPrec d (vkPpEnabledLayerNames x) .
+                                            showString "ppEnabledLayerNames = " .
+                                              showsPrec d (getField @"ppEnabledLayerNames" x) .
                                                 showString ", " .
-                                                  showString "vkEnabledExtensionCount = " .
-                                                    showsPrec d (vkEnabledExtensionCount x) .
+                                                  showString "enabledExtensionCount = " .
+                                                    showsPrec d
+                                                      (getField @"enabledExtensionCount" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkPpEnabledExtensionNames = " .
-                                                          showsPrec d (vkPpEnabledExtensionNames x)
+                                                        showString "ppEnabledExtensionNames = " .
+                                                          showsPrec d
+                                                            (getField @"ppEnabledExtensionNames" x)
                                                             . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkLayerProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkLayerProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkLayerProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkLayerProperties.hsc
@@ -8,20 +8,20 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkLayerProperties
        (VkLayerProperties(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
-import           GHC.TypeLits                        (KnownNat, natVal') -- ' closing tick for hsc2hs
-import           Graphics.Vulkan.Constants           (VK_MAX_DESCRIPTION_SIZE, pattern VK_MAX_DESCRIPTION_SIZE,
-                                                      VK_MAX_EXTENSION_NAME_SIZE,
-                                                      pattern VK_MAX_EXTENSION_NAME_SIZE)
+import           GHC.TypeLits                     (KnownNat, natVal') -- ' closing tick for hsc2hs
+import           Graphics.Vulkan.Constants        (VK_MAX_DESCRIPTION_SIZE, pattern VK_MAX_DESCRIPTION_SIZE,
+                                                   VK_MAX_EXTENSION_NAME_SIZE,
+                                                   pattern VK_MAX_EXTENSION_NAME_SIZE)
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkLayerProperties {
 --   >     char            layerName[VK_MAX_EXTENSION_NAME_SIZE];
@@ -30,7 +30,7 @@
 --   >     char            description[VK_MAX_DESCRIPTION_SIZE];
 --   > } VkLayerProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkLayerProperties.html VkLayerProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkLayerProperties.html VkLayerProperties registry at www.khronos.org>
 data VkLayerProperties = VkLayerProperties## Addr## ByteArray##
 
 instance Eq VkLayerProperties where
@@ -79,33 +79,6 @@
         type ReturnedOnly VkLayerProperties = 'True -- ' closing tick for hsc2hs
         type StructExtends VkLayerProperties = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkLayerNameArray VkLayerProperties
-         where
-        type VkLayerNameArrayMType VkLayerProperties = CChar
-
-        {-# NOINLINE vkLayerNameArray #-}
-        vkLayerNameArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: CChar) +
-                    #{offset VkLayerProperties, layerName}))
-
-        {-# INLINE vkLayerNameArrayByteOffset #-}
-        vkLayerNameArrayByteOffset ~_
-          = #{offset VkLayerProperties, layerName}
-
-        {-# INLINE readVkLayerNameArray #-}
-        readVkLayerNameArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkLayerProperties, layerName})
-
-        {-# INLINE writeVkLayerNameArray #-}
-        writeVkLayerNameArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkLayerProperties, layerName})
-
 instance {-# OVERLAPPING #-} HasField "layerName" VkLayerProperties
          where
         type FieldType "layerName" VkLayerProperties = CChar
@@ -120,8 +93,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkLayerProperties, layerName}
 
-instance (KnownNat idx,
-          IndexInBounds "layerName" idx VkLayerProperties) =>
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "layerName" idx VkLayerProperties) =>
          CanReadFieldArray "layerName" idx VkLayerProperties
          where
         {-# SPECIALISE instance
@@ -142,34 +115,43 @@
         fieldArrayLength = VK_MAX_EXTENSION_NAME_SIZE
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkLayerNameArray x (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkLayerProperties, layerName} +
+                      sizeOf (undefined :: CChar) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkLayerNameArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkLayerProperties, layerName} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSpecVersion VkLayerProperties
+instance {-# OVERLAPPING #-}
+         (KnownNat idx, IndexInBounds "layerName" idx VkLayerProperties) =>
+         CanWriteFieldArray "layerName" idx VkLayerProperties
          where
-        type VkSpecVersionMType VkLayerProperties = Word32
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "layerName" 0 VkLayerProperties #-}
 
-        {-# NOINLINE vkSpecVersion #-}
-        vkSpecVersion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkLayerProperties, specVersion})
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "layerName" 1 VkLayerProperties #-}
 
-        {-# INLINE vkSpecVersionByteOffset #-}
-        vkSpecVersionByteOffset ~_
-          = #{offset VkLayerProperties, specVersion}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "layerName" 2 VkLayerProperties #-}
 
-        {-# INLINE readVkSpecVersion #-}
-        readVkSpecVersion p
-          = peekByteOff p #{offset VkLayerProperties, specVersion}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "layerName" 3 VkLayerProperties #-}
 
-        {-# INLINE writeVkSpecVersion #-}
-        writeVkSpecVersion p
-          = pokeByteOff p #{offset VkLayerProperties, specVersion}
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkLayerProperties, layerName} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "specVersion" VkLayerProperties where
@@ -185,33 +167,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkLayerProperties, specVersion}
 
-instance CanReadField "specVersion" VkLayerProperties where
-        {-# INLINE getField #-}
-        getField = vkSpecVersion
-
-        {-# INLINE readField #-}
-        readField = readVkSpecVersion
-
 instance {-# OVERLAPPING #-}
-         HasVkImplementationVersion VkLayerProperties where
-        type VkImplementationVersionMType VkLayerProperties = Word32
-
-        {-# NOINLINE vkImplementationVersion #-}
-        vkImplementationVersion x
+         CanReadField "specVersion" VkLayerProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkLayerProperties, implementationVersion})
-
-        {-# INLINE vkImplementationVersionByteOffset #-}
-        vkImplementationVersionByteOffset ~_
-          = #{offset VkLayerProperties, implementationVersion}
+              (peekByteOff (unsafePtr x) #{offset VkLayerProperties, specVersion})
 
-        {-# INLINE readVkImplementationVersion #-}
-        readVkImplementationVersion p
-          = peekByteOff p #{offset VkLayerProperties, implementationVersion}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkLayerProperties, specVersion}
 
-        {-# INLINE writeVkImplementationVersion #-}
-        writeVkImplementationVersion p
-          = pokeByteOff p #{offset VkLayerProperties, implementationVersion}
+instance {-# OVERLAPPING #-}
+         CanWriteField "specVersion" VkLayerProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkLayerProperties, specVersion}
 
 instance {-# OVERLAPPING #-}
          HasField "implementationVersion" VkLayerProperties where
@@ -230,40 +201,22 @@
         fieldOffset
           = #{offset VkLayerProperties, implementationVersion}
 
-instance CanReadField "implementationVersion" VkLayerProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkImplementationVersion
-
-        {-# INLINE readField #-}
-        readField = readVkImplementationVersion
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptionArray VkLayerProperties where
-        type VkDescriptionArrayMType VkLayerProperties = CChar
-
-        {-# NOINLINE vkDescriptionArray #-}
-        vkDescriptionArray x idx
+         CanReadField "implementationVersion" VkLayerProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: CChar) +
-                    #{offset VkLayerProperties, description}))
-
-        {-# INLINE vkDescriptionArrayByteOffset #-}
-        vkDescriptionArrayByteOffset ~_
-          = #{offset VkLayerProperties, description}
+              (peekByteOff (unsafePtr x) #{offset VkLayerProperties, implementationVersion})
 
-        {-# INLINE readVkDescriptionArray #-}
-        readVkDescriptionArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkLayerProperties, description})
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkLayerProperties, implementationVersion}
 
-        {-# INLINE writeVkDescriptionArray #-}
-        writeVkDescriptionArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkLayerProperties, description})
+instance {-# OVERLAPPING #-}
+         CanWriteField "implementationVersion" VkLayerProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkLayerProperties, implementationVersion}
 
 instance {-# OVERLAPPING #-}
          HasField "description" VkLayerProperties where
@@ -279,7 +232,8 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkLayerProperties, description}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "description" idx VkLayerProperties) =>
          CanReadFieldArray "description" idx VkLayerProperties
          where
@@ -301,31 +255,79 @@
         fieldArrayLength = VK_MAX_DESCRIPTION_SIZE
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkDescriptionArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkLayerProperties, description} +
+                      sizeOf (undefined :: CChar) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkDescriptionArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkLayerProperties, description} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "description" idx VkLayerProperties) =>
+         CanWriteFieldArray "description" idx VkLayerProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "description" 0 VkLayerProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "description" 1 VkLayerProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "description" 2 VkLayerProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "description" 3 VkLayerProperties #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkLayerProperties, description} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
 instance Show VkLayerProperties where
         showsPrec d x
           = showString "VkLayerProperties {" .
-              showString "vkLayerNameArray = [" .
-                showsPrec d
-                  (map (vkLayerNameArray x) [1 .. VK_MAX_EXTENSION_NAME_SIZE])
-                  .
-                  showChar ']' .
-                    showString ", " .
-                      showString "vkSpecVersion = " .
-                        showsPrec d (vkSpecVersion x) .
-                          showString ", " .
-                            showString "vkImplementationVersion = " .
-                              showsPrec d (vkImplementationVersion x) .
-                                showString ", " .
-                                  showString "vkDescriptionArray = [" .
-                                    showsPrec d
-                                      (map (vkDescriptionArray x) [1 .. VK_MAX_DESCRIPTION_SIZE])
-                                      . showChar ']' . showChar '}'
+              (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMacOSSurfaceCreateInfoMVK.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMacOSSurfaceCreateInfoMVK.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMacOSSurfaceCreateInfoMVK.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMacOSSurfaceCreateInfoMVK.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMacOSSurfaceCreateInfoMVK
        (VkMacOSSurfaceCreateInfoMVK(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkMacOSSurfaceCreateFlagsMVK)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMacOSSurfaceCreateInfoMVK {
@@ -24,7 +24,7 @@
 --   >     const void*                                    pView;
 --   > } VkMacOSSurfaceCreateInfoMVK;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMacOSSurfaceCreateInfoMVK.html VkMacOSSurfaceCreateInfoMVK registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMacOSSurfaceCreateInfoMVK.html VkMacOSSurfaceCreateInfoMVK registry at www.khronos.org>
 data VkMacOSSurfaceCreateInfoMVK = VkMacOSSurfaceCreateInfoMVK## Addr##
                                                                 ByteArray##
 
@@ -76,27 +76,6 @@
         type ReturnedOnly VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
         type StructExtends VkMacOSSurfaceCreateInfoMVK = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMacOSSurfaceCreateInfoMVK
-         where
-        type VkSTypeMType VkMacOSSurfaceCreateInfoMVK = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkMacOSSurfaceCreateInfoMVK where
         type FieldType "sType" VkMacOSSurfaceCreateInfoMVK =
@@ -113,37 +92,22 @@
         fieldOffset
           = #{offset VkMacOSSurfaceCreateInfoMVK, sType}
 
-instance CanReadField "sType" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMacOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, sType}
 
-instance CanWriteField "sType" VkMacOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMacOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMacOSSurfaceCreateInfoMVK
-         where
-        type VkPNextMType VkMacOSSurfaceCreateInfoMVK = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMacOSSurfaceCreateInfoMVK where
@@ -160,38 +124,22 @@
         fieldOffset
           = #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
 
-instance CanReadField "pNext" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkMacOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
 
-instance CanWriteField "pNext" VkMacOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMacOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkMacOSSurfaceCreateInfoMVK
-         where
-        type VkFlagsMType VkMacOSSurfaceCreateInfoMVK =
-             VkMacOSSurfaceCreateFlagsMVK
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkMacOSSurfaceCreateInfoMVK, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, flags}
+        writeField p
+          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkMacOSSurfaceCreateInfoMVK where
@@ -209,37 +157,22 @@
         fieldOffset
           = #{offset VkMacOSSurfaceCreateInfoMVK, flags}
 
-instance CanReadField "flags" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkMacOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, flags}
 
-instance CanWriteField "flags" VkMacOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkMacOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkPView VkMacOSSurfaceCreateInfoMVK
-         where
-        type VkPViewMType VkMacOSSurfaceCreateInfoMVK = Ptr Void
-
-        {-# NOINLINE vkPView #-}
-        vkPView x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, pView})
-
-        {-# INLINE vkPViewByteOffset #-}
-        vkPViewByteOffset ~_
-          = #{offset VkMacOSSurfaceCreateInfoMVK, pView}
-
-        {-# INLINE readVkPView #-}
-        readVkPView p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pView}
-
-        {-# INLINE writeVkPView #-}
-        writeVkPView p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pView}
+        writeField p
+          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pView" VkMacOSSurfaceCreateInfoMVK where
@@ -256,27 +189,34 @@
         fieldOffset
           = #{offset VkMacOSSurfaceCreateInfoMVK, pView}
 
-instance CanReadField "pView" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE getField #-}
-        getField = vkPView
+instance {-# OVERLAPPING #-}
+         CanReadField "pView" VkMacOSSurfaceCreateInfoMVK where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, pView})
 
         {-# INLINE readField #-}
-        readField = readVkPView
+        readField p
+          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pView}
 
-instance CanWriteField "pView" VkMacOSSurfaceCreateInfoMVK where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pView" VkMacOSSurfaceCreateInfoMVK where
         {-# INLINE writeField #-}
-        writeField = writeVkPView
+        writeField p
+          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pView}
 
 instance Show VkMacOSSurfaceCreateInfoMVK where
         showsPrec d x
           = showString "VkMacOSSurfaceCreateInfoMVK {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkPView = " . showsPrec d (vkPView x) . showChar '}'
+                                showString "pView = " .
+                                  showsPrec d (getField @"pView" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMappedMemoryRange.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMappedMemoryRange.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMappedMemoryRange.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMappedMemoryRange.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMappedMemoryRange
        (VkMappedMemoryRange(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkDeviceMemory)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMappedMemoryRange {
@@ -26,7 +26,7 @@
 --   >     VkDeviceSize           size;
 --   > } VkMappedMemoryRange;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMappedMemoryRange.html VkMappedMemoryRange registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMappedMemoryRange.html VkMappedMemoryRange registry at www.khronos.org>
 data VkMappedMemoryRange = VkMappedMemoryRange## Addr## ByteArray##
 
 instance Eq VkMappedMemoryRange where
@@ -74,26 +74,6 @@
         type ReturnedOnly VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
         type StructExtends VkMappedMemoryRange = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMappedMemoryRange where
-        type VkSTypeMType VkMappedMemoryRange = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMappedMemoryRange, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMappedMemoryRange, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMappedMemoryRange, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkMappedMemoryRange
          where
         type FieldType "sType" VkMappedMemoryRange = VkStructureType
@@ -108,36 +88,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMappedMemoryRange, sType}
 
-instance CanReadField "sType" VkMappedMemoryRange where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMappedMemoryRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkMappedMemoryRange, sType}
 
-instance CanWriteField "sType" VkMappedMemoryRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMappedMemoryRange where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMappedMemoryRange where
-        type VkPNextMType VkMappedMemoryRange = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMappedMemoryRange, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMappedMemoryRange, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMappedMemoryRange, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkMappedMemoryRange, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkMappedMemoryRange
          where
@@ -153,36 +119,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMappedMemoryRange, pNext}
 
-instance CanReadField "pNext" VkMappedMemoryRange where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkMappedMemoryRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkMappedMemoryRange, pNext}
 
-instance CanWriteField "pNext" VkMappedMemoryRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMappedMemoryRange where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkMemory VkMappedMemoryRange where
-        type VkMemoryMType VkMappedMemoryRange = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkMappedMemoryRange, memory}
-
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkMappedMemoryRange, memory}
-
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkMappedMemoryRange, memory}
+        writeField p
+          = pokeByteOff p #{offset VkMappedMemoryRange, pNext}
 
 instance {-# OVERLAPPING #-} HasField "memory" VkMappedMemoryRange
          where
@@ -198,36 +150,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMappedMemoryRange, memory}
 
-instance CanReadField "memory" VkMappedMemoryRange where
-        {-# INLINE getField #-}
-        getField = vkMemory
+instance {-# OVERLAPPING #-}
+         CanReadField "memory" VkMappedMemoryRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, memory})
 
         {-# INLINE readField #-}
-        readField = readVkMemory
+        readField p
+          = peekByteOff p #{offset VkMappedMemoryRange, memory}
 
-instance CanWriteField "memory" VkMappedMemoryRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "memory" VkMappedMemoryRange where
         {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
-instance {-# OVERLAPPING #-} HasVkOffset VkMappedMemoryRange where
-        type VkOffsetMType VkMappedMemoryRange = VkDeviceSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkMappedMemoryRange, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkMappedMemoryRange, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkMappedMemoryRange, offset}
+        writeField p
+          = pokeByteOff p #{offset VkMappedMemoryRange, memory}
 
 instance {-# OVERLAPPING #-} HasField "offset" VkMappedMemoryRange
          where
@@ -243,36 +181,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMappedMemoryRange, offset}
 
-instance CanReadField "offset" VkMappedMemoryRange where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkMappedMemoryRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkMappedMemoryRange, offset}
 
-instance CanWriteField "offset" VkMappedMemoryRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkMappedMemoryRange where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkMappedMemoryRange where
-        type VkSizeMType VkMappedMemoryRange = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkMappedMemoryRange, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkMappedMemoryRange, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkMappedMemoryRange, size}
+        writeField p
+          = pokeByteOff p #{offset VkMappedMemoryRange, offset}
 
 instance {-# OVERLAPPING #-} HasField "size" VkMappedMemoryRange
          where
@@ -288,30 +212,37 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMappedMemoryRange, size}
 
-instance CanReadField "size" VkMappedMemoryRange where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-}
+         CanReadField "size" VkMappedMemoryRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkMappedMemoryRange, size}
 
-instance CanWriteField "size" VkMappedMemoryRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkMappedMemoryRange where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
+        writeField p
+          = pokeByteOff p #{offset VkMappedMemoryRange, size}
 
 instance Show VkMappedMemoryRange where
         showsPrec d x
           = showString "VkMappedMemoryRange {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMemory = " .
-                            showsPrec d (vkMemory x) .
+                          showString "memory = " .
+                            showsPrec d (getField @"memory" x) .
                               showString ", " .
-                                showString "vkOffset = " .
-                                  showsPrec d (vkOffset x) .
+                                showString "offset = " .
+                                  showsPrec d (getField @"offset" x) .
                                     showString ", " .
-                                      showString "vkSize = " . showsPrec d (vkSize x) . showChar '}'
+                                      showString "size = " .
+                                        showsPrec d (getField @"size" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfo.hsc
@@ -0,0 +1,221 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfo
+       (VkMemoryAllocateFlagsInfo(..)) where
+import           Foreign.Storable                                  (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlags  (VkMemoryAllocateFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
+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/man/html/VkMemoryAllocateFlagsInfo.html VkMemoryAllocateFlagsInfo registry at www.khronos.org>
+data VkMemoryAllocateFlagsInfo = VkMemoryAllocateFlagsInfo## Addr##
+                                                            ByteArray##
+
+instance Eq VkMemoryAllocateFlagsInfo where
+        (VkMemoryAllocateFlagsInfo## a _) ==
+          x@(VkMemoryAllocateFlagsInfo## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkMemoryAllocateFlagsInfo where
+        (VkMemoryAllocateFlagsInfo## a _) `compare`
+          x@(VkMemoryAllocateFlagsInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkMemoryAllocateFlagsInfo where
+        unsafeAddr (VkMemoryAllocateFlagsInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkMemoryAllocateFlagsInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkMemoryAllocateFlagsInfo## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfoKHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHR
+       (VkMemoryAllocateFlagsInfo(..), VkMemoryAllocateFlagsInfoKHR) where
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfo (VkMemoryAllocateFlagsInfo (..))
+
+-- | Alias for `VkMemoryAllocateFlagsInfo`
+type VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateFlagsInfoKHX.hsc
+++ /dev/null
@@ -1,290 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHX
-       (VkMemoryAllocateFlagsInfoKHX(..)) where
-import           Foreign.Storable                                    (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagsKHX (VkMemoryAllocateFlagsKHX)
-import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo   (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
-
--- | > typedef struct VkMemoryAllocateFlagsInfoKHX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkMemoryAllocateFlagsKHX flags;
---   >     uint32_t                         deviceMask;
---   > } VkMemoryAllocateFlagsInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryAllocateFlagsInfoKHX.html VkMemoryAllocateFlagsInfoKHX registry at www.khronos.org>
-data VkMemoryAllocateFlagsInfoKHX = VkMemoryAllocateFlagsInfoKHX## Addr##
-                                                                  ByteArray##
-
-instance Eq VkMemoryAllocateFlagsInfoKHX where
-        (VkMemoryAllocateFlagsInfoKHX## a _) ==
-          x@(VkMemoryAllocateFlagsInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryAllocateFlagsInfoKHX where
-        (VkMemoryAllocateFlagsInfoKHX## a _) `compare`
-          x@(VkMemoryAllocateFlagsInfoKHX## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryAllocateFlagsInfoKHX where
-        sizeOf ~_ = #{size VkMemoryAllocateFlagsInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryAllocateFlagsInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkMemoryAllocateFlagsInfoKHX where
-        unsafeAddr (VkMemoryAllocateFlagsInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkMemoryAllocateFlagsInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkMemoryAllocateFlagsInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkMemoryAllocateFlagsInfoKHX where
-        type StructFields VkMemoryAllocateFlagsInfoKHX =
-             '["sType", "pNext", "flags", "deviceMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryAllocateFlagsInfoKHX =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkMemoryAllocateFlagsInfoKHX where
-        type VkSTypeMType VkMemoryAllocateFlagsInfoKHX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryAllocateFlagsInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryAllocateFlagsInfoKHX where
-        type FieldType "sType" VkMemoryAllocateFlagsInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryAllocateFlagsInfoKHX =
-             #{offset VkMemoryAllocateFlagsInfoKHX, sType}
-        type FieldIsArray "sType" VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfoKHX, sType}
-
-instance CanReadField "sType" VkMemoryAllocateFlagsInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkMemoryAllocateFlagsInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkMemoryAllocateFlagsInfoKHX where
-        type VkPNextMType VkMemoryAllocateFlagsInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryAllocateFlagsInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryAllocateFlagsInfoKHX where
-        type FieldType "pNext" VkMemoryAllocateFlagsInfoKHX = Ptr Void
-        type FieldOptional "pNext" VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryAllocateFlagsInfoKHX =
-             #{offset VkMemoryAllocateFlagsInfoKHX, pNext}
-        type FieldIsArray "pNext" VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfoKHX, pNext}
-
-instance CanReadField "pNext" VkMemoryAllocateFlagsInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkMemoryAllocateFlagsInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkMemoryAllocateFlagsInfoKHX where
-        type VkFlagsMType VkMemoryAllocateFlagsInfoKHX =
-             VkMemoryAllocateFlagsKHX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfoKHX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkMemoryAllocateFlagsInfoKHX, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkMemoryAllocateFlagsInfoKHX where
-        type FieldType "flags" VkMemoryAllocateFlagsInfoKHX =
-             VkMemoryAllocateFlagsKHX
-        type FieldOptional "flags" VkMemoryAllocateFlagsInfoKHX = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkMemoryAllocateFlagsInfoKHX =
-             #{offset VkMemoryAllocateFlagsInfoKHX, flags}
-        type FieldIsArray "flags" VkMemoryAllocateFlagsInfoKHX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfoKHX, flags}
-
-instance CanReadField "flags" VkMemoryAllocateFlagsInfoKHX where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkMemoryAllocateFlagsInfoKHX where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceMask VkMemoryAllocateFlagsInfoKHX where
-        type VkDeviceMaskMType VkMemoryAllocateFlagsInfoKHX = Word32
-
-        {-# NOINLINE vkDeviceMask #-}
-        vkDeviceMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfoKHX, deviceMask})
-
-        {-# INLINE vkDeviceMaskByteOffset #-}
-        vkDeviceMaskByteOffset ~_
-          = #{offset VkMemoryAllocateFlagsInfoKHX, deviceMask}
-
-        {-# INLINE readVkDeviceMask #-}
-        readVkDeviceMask p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, deviceMask}
-
-        {-# INLINE writeVkDeviceMask #-}
-        writeVkDeviceMask p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfoKHX, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkMemoryAllocateFlagsInfoKHX where
-        type FieldType "deviceMask" VkMemoryAllocateFlagsInfoKHX = Word32
-        type FieldOptional "deviceMask" VkMemoryAllocateFlagsInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkMemoryAllocateFlagsInfoKHX =
-             #{offset VkMemoryAllocateFlagsInfoKHX, deviceMask}
-        type FieldIsArray "deviceMask" VkMemoryAllocateFlagsInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfoKHX, deviceMask}
-
-instance CanReadField "deviceMask" VkMemoryAllocateFlagsInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceMask
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceMask
-
-instance CanWriteField "deviceMask" VkMemoryAllocateFlagsInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDeviceMask
-
-instance Show VkMemoryAllocateFlagsInfoKHX where
-        showsPrec d x
-          = showString "VkMemoryAllocateFlagsInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
-                              showString ", " .
-                                showString "vkDeviceMask = " .
-                                  showsPrec d (vkDeviceMask x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryAllocateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
        (VkMemoryAllocateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.BaseTypes            (VkDeviceSize)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryAllocateInfo {
@@ -24,7 +24,7 @@
 --   >     uint32_t               memoryTypeIndex;
 --   > } VkMemoryAllocateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryAllocateInfo.html VkMemoryAllocateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryAllocateInfo.html VkMemoryAllocateInfo registry at www.khronos.org>
 data VkMemoryAllocateInfo = VkMemoryAllocateInfo## Addr## ByteArray##
 
 instance Eq VkMemoryAllocateInfo where
@@ -72,26 +72,6 @@
         type ReturnedOnly VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkMemoryAllocateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMemoryAllocateInfo where
-        type VkSTypeMType VkMemoryAllocateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryAllocateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkMemoryAllocateInfo
          where
         type FieldType "sType" VkMemoryAllocateInfo = VkStructureType
@@ -106,36 +86,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryAllocateInfo, sType}
 
-instance CanReadField "sType" VkMemoryAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMemoryAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkMemoryAllocateInfo, sType}
 
-instance CanWriteField "sType" VkMemoryAllocateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMemoryAllocateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMemoryAllocateInfo where
-        type VkPNextMType VkMemoryAllocateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryAllocateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryAllocateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryAllocateInfo
          where
@@ -151,37 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryAllocateInfo, pNext}
 
-instance CanReadField "pNext" VkMemoryAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkAllocationSize VkMemoryAllocateInfo where
-        type VkAllocationSizeMType VkMemoryAllocateInfo = VkDeviceSize
-
-        {-# NOINLINE vkAllocationSize #-}
-        vkAllocationSize x
+         CanReadField "pNext" VkMemoryAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, allocationSize})
-
-        {-# INLINE vkAllocationSizeByteOffset #-}
-        vkAllocationSizeByteOffset ~_
-          = #{offset VkMemoryAllocateInfo, allocationSize}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, pNext})
 
-        {-# INLINE readVkAllocationSize #-}
-        readVkAllocationSize p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, allocationSize}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryAllocateInfo, pNext}
 
-        {-# INLINE writeVkAllocationSize #-}
-        writeVkAllocationSize p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, allocationSize}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMemoryAllocateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryAllocateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "allocationSize" VkMemoryAllocateInfo where
@@ -198,37 +149,22 @@
         fieldOffset
           = #{offset VkMemoryAllocateInfo, allocationSize}
 
-instance CanReadField "allocationSize" VkMemoryAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkAllocationSize
-
-        {-# INLINE readField #-}
-        readField = readVkAllocationSize
-
-instance CanWriteField "allocationSize" VkMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkAllocationSize
-
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypeIndex VkMemoryAllocateInfo where
-        type VkMemoryTypeIndexMType VkMemoryAllocateInfo = Word32
-
-        {-# NOINLINE vkMemoryTypeIndex #-}
-        vkMemoryTypeIndex x
+         CanReadField "allocationSize" VkMemoryAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, memoryTypeIndex})
-
-        {-# INLINE vkMemoryTypeIndexByteOffset #-}
-        vkMemoryTypeIndexByteOffset ~_
-          = #{offset VkMemoryAllocateInfo, memoryTypeIndex}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, allocationSize})
 
-        {-# INLINE readVkMemoryTypeIndex #-}
-        readVkMemoryTypeIndex p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, memoryTypeIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryAllocateInfo, allocationSize}
 
-        {-# INLINE writeVkMemoryTypeIndex #-}
-        writeVkMemoryTypeIndex p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, memoryTypeIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "allocationSize" VkMemoryAllocateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryAllocateInfo, allocationSize}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryTypeIndex" VkMemoryAllocateInfo where
@@ -245,28 +181,34 @@
         fieldOffset
           = #{offset VkMemoryAllocateInfo, memoryTypeIndex}
 
-instance CanReadField "memoryTypeIndex" VkMemoryAllocateInfo where
-        {-# INLINE getField #-}
-        getField = vkMemoryTypeIndex
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryTypeIndex" VkMemoryAllocateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, memoryTypeIndex})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryTypeIndex
+        readField p
+          = peekByteOff p #{offset VkMemoryAllocateInfo, memoryTypeIndex}
 
-instance CanWriteField "memoryTypeIndex" VkMemoryAllocateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "memoryTypeIndex" VkMemoryAllocateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMemoryTypeIndex
+        writeField p
+          = pokeByteOff p #{offset VkMemoryAllocateInfo, memoryTypeIndex}
 
 instance Show VkMemoryAllocateInfo where
         showsPrec d x
           = showString "VkMemoryAllocateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkAllocationSize = " .
-                            showsPrec d (vkAllocationSize x) .
+                          showString "allocationSize = " .
+                            showsPrec d (getField @"allocationSize" x) .
                               showString ", " .
-                                showString "vkMemoryTypeIndex = " .
-                                  showsPrec d (vkMemoryTypeIndex x) . showChar '}'
+                                showString "memoryTypeIndex = " .
+                                  showsPrec d (getField @"memoryTypeIndex" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryBarrier.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryBarrier.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryBarrier.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryBarrier.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryBarrier
        (VkMemoryBarrier(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkAccessFlags   (VkAccessFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryBarrier {
@@ -24,7 +24,7 @@
 --   >     VkAccessFlags          dstAccessMask;
 --   > } VkMemoryBarrier;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryBarrier.html VkMemoryBarrier registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryBarrier.html VkMemoryBarrier registry at www.khronos.org>
 data VkMemoryBarrier = VkMemoryBarrier## Addr## ByteArray##
 
 instance Eq VkMemoryBarrier where
@@ -72,25 +72,6 @@
         type ReturnedOnly VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
         type StructExtends VkMemoryBarrier = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMemoryBarrier where
-        type VkSTypeMType VkMemoryBarrier = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_ = #{offset VkMemoryBarrier, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryBarrier, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryBarrier, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkMemoryBarrier where
         type FieldType "sType" VkMemoryBarrier = VkStructureType
         type FieldOptional "sType" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
@@ -104,35 +85,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryBarrier, sType}
 
-instance CanReadField "sType" VkMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkMemoryBarrier
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkMemoryBarrier, sType}
 
-instance CanWriteField "sType" VkMemoryBarrier where
+instance {-# OVERLAPPING #-} CanWriteField "sType" VkMemoryBarrier
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMemoryBarrier where
-        type VkPNextMType VkMemoryBarrier = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_ = #{offset VkMemoryBarrier, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryBarrier, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryBarrier, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryBarrier, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryBarrier where
         type FieldType "pNext" VkMemoryBarrier = Ptr Void
@@ -147,37 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryBarrier, pNext}
 
-instance CanReadField "pNext" VkMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkSrcAccessMask VkMemoryBarrier
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkMemoryBarrier
          where
-        type VkSrcAccessMaskMType VkMemoryBarrier = VkAccessFlags
-
-        {-# NOINLINE vkSrcAccessMask #-}
-        vkSrcAccessMask x
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, srcAccessMask})
-
-        {-# INLINE vkSrcAccessMaskByteOffset #-}
-        vkSrcAccessMaskByteOffset ~_
-          = #{offset VkMemoryBarrier, srcAccessMask}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, pNext})
 
-        {-# INLINE readVkSrcAccessMask #-}
-        readVkSrcAccessMask p
-          = peekByteOff p #{offset VkMemoryBarrier, srcAccessMask}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryBarrier, pNext}
 
-        {-# INLINE writeVkSrcAccessMask #-}
-        writeVkSrcAccessMask p
-          = pokeByteOff p #{offset VkMemoryBarrier, srcAccessMask}
+instance {-# OVERLAPPING #-} CanWriteField "pNext" VkMemoryBarrier
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryBarrier, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "srcAccessMask" VkMemoryBarrier where
@@ -193,37 +146,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryBarrier, srcAccessMask}
 
-instance CanReadField "srcAccessMask" VkMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkSrcAccessMask
+instance {-# OVERLAPPING #-}
+         CanReadField "srcAccessMask" VkMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, srcAccessMask})
 
         {-# INLINE readField #-}
-        readField = readVkSrcAccessMask
+        readField p
+          = peekByteOff p #{offset VkMemoryBarrier, srcAccessMask}
 
-instance CanWriteField "srcAccessMask" VkMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcAccessMask" VkMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcAccessMask
-
-instance {-# OVERLAPPING #-} HasVkDstAccessMask VkMemoryBarrier
-         where
-        type VkDstAccessMaskMType VkMemoryBarrier = VkAccessFlags
-
-        {-# NOINLINE vkDstAccessMask #-}
-        vkDstAccessMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, dstAccessMask})
-
-        {-# INLINE vkDstAccessMaskByteOffset #-}
-        vkDstAccessMaskByteOffset ~_
-          = #{offset VkMemoryBarrier, dstAccessMask}
-
-        {-# INLINE readVkDstAccessMask #-}
-        readVkDstAccessMask p
-          = peekByteOff p #{offset VkMemoryBarrier, dstAccessMask}
-
-        {-# INLINE writeVkDstAccessMask #-}
-        writeVkDstAccessMask p
-          = pokeByteOff p #{offset VkMemoryBarrier, dstAccessMask}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryBarrier, srcAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "dstAccessMask" VkMemoryBarrier where
@@ -239,28 +177,34 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryBarrier, dstAccessMask}
 
-instance CanReadField "dstAccessMask" VkMemoryBarrier where
-        {-# INLINE getField #-}
-        getField = vkDstAccessMask
+instance {-# OVERLAPPING #-}
+         CanReadField "dstAccessMask" VkMemoryBarrier where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, dstAccessMask})
 
         {-# INLINE readField #-}
-        readField = readVkDstAccessMask
+        readField p
+          = peekByteOff p #{offset VkMemoryBarrier, dstAccessMask}
 
-instance CanWriteField "dstAccessMask" VkMemoryBarrier where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstAccessMask" VkMemoryBarrier where
         {-# INLINE writeField #-}
-        writeField = writeVkDstAccessMask
+        writeField p
+          = pokeByteOff p #{offset VkMemoryBarrier, dstAccessMask}
 
 instance Show VkMemoryBarrier where
         showsPrec d x
           = showString "VkMemoryBarrier {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSrcAccessMask = " .
-                            showsPrec d (vkSrcAccessMask x) .
+                          showString "srcAccessMask = " .
+                            showsPrec d (getField @"srcAccessMask" x) .
                               showString ", " .
-                                showString "vkDstAccessMask = " .
-                                  showsPrec d (vkDstAccessMask x) . showChar '}'
+                                showString "dstAccessMask = " .
+                                  showsPrec d (getField @"dstAccessMask" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfo.hsc
@@ -0,0 +1,225 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfo
+       (VkMemoryDedicatedAllocateInfo(..)) where
+import           Foreign.Storable                                  (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                     (VkBuffer,
+                                                                    VkImage)
+import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
+import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
+
+-- | > typedef struct VkMemoryDedicatedAllocateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImage          image;
+--   >     VkBuffer         buffer;
+--   > } VkMemoryDedicatedAllocateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryDedicatedAllocateInfo.html VkMemoryDedicatedAllocateInfo registry at www.khronos.org>
+data VkMemoryDedicatedAllocateInfo = VkMemoryDedicatedAllocateInfo## Addr##
+                                                                    ByteArray##
+
+instance Eq VkMemoryDedicatedAllocateInfo where
+        (VkMemoryDedicatedAllocateInfo## a _) ==
+          x@(VkMemoryDedicatedAllocateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkMemoryDedicatedAllocateInfo where
+        (VkMemoryDedicatedAllocateInfo## a _) `compare`
+          x@(VkMemoryDedicatedAllocateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkMemoryDedicatedAllocateInfo where
+        unsafeAddr (VkMemoryDedicatedAllocateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkMemoryDedicatedAllocateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkMemoryDedicatedAllocateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfoKHR
+       (VkMemoryDedicatedAllocateInfo(..),
+        VkMemoryDedicatedAllocateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfo (VkMemoryDedicatedAllocateInfo (..))
+
+-- | Alias for `VkMemoryDedicatedAllocateInfo`
+type VkMemoryDedicatedAllocateInfoKHR =
+     VkMemoryDedicatedAllocateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedAllocateInfoKHR.hsc
+++ /dev/null
@@ -1,298 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfoKHR
-       (VkMemoryDedicatedAllocateInfoKHR(..)) where
-import           Foreign.Storable                                  (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                     (VkBuffer,
-                                                                    VkImage)
-import           Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo (VkMemoryAllocateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
-
--- | > typedef struct VkMemoryDedicatedAllocateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImage          image;
---   >     VkBuffer         buffer;
---   > } VkMemoryDedicatedAllocateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryDedicatedAllocateInfoKHR.html VkMemoryDedicatedAllocateInfoKHR registry at www.khronos.org>
-data VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfoKHR## Addr##
-                                                                          ByteArray##
-
-instance Eq VkMemoryDedicatedAllocateInfoKHR where
-        (VkMemoryDedicatedAllocateInfoKHR## a _) ==
-          x@(VkMemoryDedicatedAllocateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryDedicatedAllocateInfoKHR where
-        (VkMemoryDedicatedAllocateInfoKHR## a _) `compare`
-          x@(VkMemoryDedicatedAllocateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryDedicatedAllocateInfoKHR where
-        sizeOf ~_ = #{size VkMemoryDedicatedAllocateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryDedicatedAllocateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkMemoryDedicatedAllocateInfoKHR where
-        unsafeAddr (VkMemoryDedicatedAllocateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkMemoryDedicatedAllocateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkMemoryDedicatedAllocateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkMemoryDedicatedAllocateInfoKHR where
-        type StructFields VkMemoryDedicatedAllocateInfoKHR =
-             '["sType", "pNext", "image", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryDedicatedAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryDedicatedAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryDedicatedAllocateInfoKHR =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkMemoryDedicatedAllocateInfoKHR where
-        type VkSTypeMType VkMemoryDedicatedAllocateInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryDedicatedAllocateInfoKHR where
-        type FieldType "sType" VkMemoryDedicatedAllocateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryDedicatedAllocateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryDedicatedAllocateInfoKHR =
-             #{offset VkMemoryDedicatedAllocateInfoKHR, sType}
-        type FieldIsArray "sType" VkMemoryDedicatedAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, sType}
-
-instance CanReadField "sType" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkMemoryDedicatedAllocateInfoKHR where
-        type VkPNextMType VkMemoryDedicatedAllocateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryDedicatedAllocateInfoKHR where
-        type FieldType "pNext" VkMemoryDedicatedAllocateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryDedicatedAllocateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryDedicatedAllocateInfoKHR =
-             #{offset VkMemoryDedicatedAllocateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkMemoryDedicatedAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkImage VkMemoryDedicatedAllocateInfoKHR where
-        type VkImageMType VkMemoryDedicatedAllocateInfoKHR = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfoKHR, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkMemoryDedicatedAllocateInfoKHR where
-        type FieldType "image" VkMemoryDedicatedAllocateInfoKHR = VkImage
-        type FieldOptional "image" VkMemoryDedicatedAllocateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkMemoryDedicatedAllocateInfoKHR =
-             #{offset VkMemoryDedicatedAllocateInfoKHR, image}
-        type FieldIsArray "image" VkMemoryDedicatedAllocateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, image}
-
-instance CanReadField "image" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
-instance {-# OVERLAPPING #-}
-         HasVkBuffer VkMemoryDedicatedAllocateInfoKHR where
-        type VkBufferMType VkMemoryDedicatedAllocateInfoKHR = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfoKHR, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfoKHR, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkMemoryDedicatedAllocateInfoKHR where
-        type FieldType "buffer" VkMemoryDedicatedAllocateInfoKHR = VkBuffer
-        type FieldOptional "buffer" VkMemoryDedicatedAllocateInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkMemoryDedicatedAllocateInfoKHR =
-             #{offset VkMemoryDedicatedAllocateInfoKHR, buffer}
-        type FieldIsArray "buffer" VkMemoryDedicatedAllocateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfoKHR, buffer}
-
-instance CanReadField "buffer" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkBuffer
-
-instance CanWriteField "buffer" VkMemoryDedicatedAllocateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
-instance Show VkMemoryDedicatedAllocateInfoKHR where
-        showsPrec d x
-          = showString "VkMemoryDedicatedAllocateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkImage = " .
-                            showsPrec d (vkImage x) .
-                              showString ", " .
-                                showString "vkBuffer = " . showsPrec d (vkBuffer x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirements.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirements.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirements.hsc
@@ -0,0 +1,253 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirements
+       (VkMemoryDedicatedRequirements(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                    (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2 (VkMemoryRequirements2)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > typedef struct VkMemoryDedicatedRequirements {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         prefersDedicatedAllocation;
+--   >     VkBool32                         requiresDedicatedAllocation;
+--   > } VkMemoryDedicatedRequirements;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryDedicatedRequirements.html VkMemoryDedicatedRequirements registry at www.khronos.org>
+data VkMemoryDedicatedRequirements = VkMemoryDedicatedRequirements## Addr##
+                                                                    ByteArray##
+
+instance Eq VkMemoryDedicatedRequirements where
+        (VkMemoryDedicatedRequirements## a _) ==
+          x@(VkMemoryDedicatedRequirements## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkMemoryDedicatedRequirements where
+        (VkMemoryDedicatedRequirements## a _) `compare`
+          x@(VkMemoryDedicatedRequirements## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkMemoryDedicatedRequirements where
+        unsafeAddr (VkMemoryDedicatedRequirements## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkMemoryDedicatedRequirements## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkMemoryDedicatedRequirements##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirementsKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirementsKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirementsKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirementsKHR
+       (VkMemoryDedicatedRequirements(..),
+        VkMemoryDedicatedRequirementsKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirements (VkMemoryDedicatedRequirements (..))
+
+-- | Alias for `VkMemoryDedicatedRequirements`
+type VkMemoryDedicatedRequirementsKHR =
+     VkMemoryDedicatedRequirements
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirementsKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirementsKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryDedicatedRequirementsKHR.hsc
+++ /dev/null
@@ -1,305 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirementsKHR
-       (VkMemoryDedicatedRequirementsKHR(..)) where
-import           Foreign.Storable                                      (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                       (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR (VkMemoryRequirements2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
-
--- | > typedef struct VkMemoryDedicatedRequirementsKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         prefersDedicatedAllocation;
---   >     VkBool32                         requiresDedicatedAllocation;
---   > } VkMemoryDedicatedRequirementsKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryDedicatedRequirementsKHR.html VkMemoryDedicatedRequirementsKHR registry at www.khronos.org>
-data VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirementsKHR## Addr##
-                                                                          ByteArray##
-
-instance Eq VkMemoryDedicatedRequirementsKHR where
-        (VkMemoryDedicatedRequirementsKHR## a _) ==
-          x@(VkMemoryDedicatedRequirementsKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryDedicatedRequirementsKHR where
-        (VkMemoryDedicatedRequirementsKHR## a _) `compare`
-          x@(VkMemoryDedicatedRequirementsKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryDedicatedRequirementsKHR where
-        sizeOf ~_ = #{size VkMemoryDedicatedRequirementsKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryDedicatedRequirementsKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkMemoryDedicatedRequirementsKHR where
-        unsafeAddr (VkMemoryDedicatedRequirementsKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkMemoryDedicatedRequirementsKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkMemoryDedicatedRequirementsKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkMemoryDedicatedRequirementsKHR where
-        type StructFields VkMemoryDedicatedRequirementsKHR =
-             '["sType", "pNext", "prefersDedicatedAllocation", -- ' closing tick for hsc2hs
-               "requiresDedicatedAllocation"]
-        type CUnionType VkMemoryDedicatedRequirementsKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryDedicatedRequirementsKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryDedicatedRequirementsKHR =
-             '[VkMemoryRequirements2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkMemoryDedicatedRequirementsKHR where
-        type VkSTypeMType VkMemoryDedicatedRequirementsKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirementsKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryDedicatedRequirementsKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirementsKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirementsKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryDedicatedRequirementsKHR where
-        type FieldType "sType" VkMemoryDedicatedRequirementsKHR =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryDedicatedRequirementsKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryDedicatedRequirementsKHR =
-             #{offset VkMemoryDedicatedRequirementsKHR, sType}
-        type FieldIsArray "sType" VkMemoryDedicatedRequirementsKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirementsKHR, sType}
-
-instance CanReadField "sType" VkMemoryDedicatedRequirementsKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkMemoryDedicatedRequirementsKHR where
-        type VkPNextMType VkMemoryDedicatedRequirementsKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirementsKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryDedicatedRequirementsKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirementsKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirementsKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryDedicatedRequirementsKHR where
-        type FieldType "pNext" VkMemoryDedicatedRequirementsKHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryDedicatedRequirementsKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryDedicatedRequirementsKHR =
-             #{offset VkMemoryDedicatedRequirementsKHR, pNext}
-        type FieldIsArray "pNext" VkMemoryDedicatedRequirementsKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirementsKHR, pNext}
-
-instance CanReadField "pNext" VkMemoryDedicatedRequirementsKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPrefersDedicatedAllocation VkMemoryDedicatedRequirementsKHR
-         where
-        type VkPrefersDedicatedAllocationMType
-               VkMemoryDedicatedRequirementsKHR
-             = VkBool32
-
-        {-# NOINLINE vkPrefersDedicatedAllocation #-}
-        vkPrefersDedicatedAllocation x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirementsKHR, prefersDedicatedAllocation})
-
-        {-# INLINE vkPrefersDedicatedAllocationByteOffset #-}
-        vkPrefersDedicatedAllocationByteOffset ~_
-          = #{offset VkMemoryDedicatedRequirementsKHR, prefersDedicatedAllocation}
-
-        {-# INLINE readVkPrefersDedicatedAllocation #-}
-        readVkPrefersDedicatedAllocation p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirementsKHR, prefersDedicatedAllocation}
-
-        {-# INLINE writeVkPrefersDedicatedAllocation #-}
-        writeVkPrefersDedicatedAllocation p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirementsKHR, prefersDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "prefersDedicatedAllocation"
-           VkMemoryDedicatedRequirementsKHR
-         where
-        type FieldType "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             = VkBool32
-        type FieldOptional "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             =
-             #{offset VkMemoryDedicatedRequirementsKHR, prefersDedicatedAllocation}
-        type FieldIsArray "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirementsKHR, prefersDedicatedAllocation}
-
-instance CanReadField "prefersDedicatedAllocation"
-           VkMemoryDedicatedRequirementsKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPrefersDedicatedAllocation
-
-        {-# INLINE readField #-}
-        readField = readVkPrefersDedicatedAllocation
-
-instance {-# OVERLAPPING #-}
-         HasVkRequiresDedicatedAllocation VkMemoryDedicatedRequirementsKHR
-         where
-        type VkRequiresDedicatedAllocationMType
-               VkMemoryDedicatedRequirementsKHR
-             = VkBool32
-
-        {-# NOINLINE vkRequiresDedicatedAllocation #-}
-        vkRequiresDedicatedAllocation x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirementsKHR, requiresDedicatedAllocation})
-
-        {-# INLINE vkRequiresDedicatedAllocationByteOffset #-}
-        vkRequiresDedicatedAllocationByteOffset ~_
-          = #{offset VkMemoryDedicatedRequirementsKHR, requiresDedicatedAllocation}
-
-        {-# INLINE readVkRequiresDedicatedAllocation #-}
-        readVkRequiresDedicatedAllocation p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirementsKHR, requiresDedicatedAllocation}
-
-        {-# INLINE writeVkRequiresDedicatedAllocation #-}
-        writeVkRequiresDedicatedAllocation p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirementsKHR, requiresDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "requiresDedicatedAllocation"
-           VkMemoryDedicatedRequirementsKHR
-         where
-        type FieldType "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             = VkBool32
-        type FieldOptional "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             =
-             #{offset VkMemoryDedicatedRequirementsKHR, requiresDedicatedAllocation}
-        type FieldIsArray "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirementsKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirementsKHR, requiresDedicatedAllocation}
-
-instance CanReadField "requiresDedicatedAllocation"
-           VkMemoryDedicatedRequirementsKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkRequiresDedicatedAllocation
-
-        {-# INLINE readField #-}
-        readField = readVkRequiresDedicatedAllocation
-
-instance Show VkMemoryDedicatedRequirementsKHR where
-        showsPrec d x
-          = showString "VkMemoryDedicatedRequirementsKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPrefersDedicatedAllocation = " .
-                            showsPrec d (vkPrefersDedicatedAllocation x) .
-                              showString ", " .
-                                showString "vkRequiresDedicatedAllocation = " .
-                                  showsPrec d (vkRequiresDedicatedAllocation x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryFdPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryFdPropertiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryFdPropertiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryFdPropertiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryFdPropertiesKHR
        (VkMemoryFdPropertiesKHR(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryFdPropertiesKHR {
@@ -22,7 +22,7 @@
 --   >     uint32_t                         memoryTypeBits;
 --   > } VkMemoryFdPropertiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryFdPropertiesKHR.html VkMemoryFdPropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryFdPropertiesKHR.html VkMemoryFdPropertiesKHR registry at www.khronos.org>
 data VkMemoryFdPropertiesKHR = VkMemoryFdPropertiesKHR## Addr##
                                                         ByteArray##
 
@@ -71,27 +71,6 @@
         type ReturnedOnly VkMemoryFdPropertiesKHR = 'True -- ' closing tick for hsc2hs
         type StructExtends VkMemoryFdPropertiesKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMemoryFdPropertiesKHR
-         where
-        type VkSTypeMType VkMemoryFdPropertiesKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryFdPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkMemoryFdPropertiesKHR where
         type FieldType "sType" VkMemoryFdPropertiesKHR = VkStructureType
@@ -106,33 +85,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryFdPropertiesKHR, sType}
 
-instance CanReadField "sType" VkMemoryFdPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMemoryFdPropertiesKHR
-         where
-        type VkPNextMType VkMemoryFdPropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMemoryFdPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryFdPropertiesKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMemoryFdPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMemoryFdPropertiesKHR where
@@ -148,33 +116,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryFdPropertiesKHR, pNext}
 
-instance CanReadField "pNext" VkMemoryFdPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypeBits VkMemoryFdPropertiesKHR where
-        type VkMemoryTypeBitsMType VkMemoryFdPropertiesKHR = Word32
-
-        {-# NOINLINE vkMemoryTypeBits #-}
-        vkMemoryTypeBits x
+         CanReadField "pNext" VkMemoryFdPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, memoryTypeBits})
-
-        {-# INLINE vkMemoryTypeBitsByteOffset #-}
-        vkMemoryTypeBitsByteOffset ~_
-          = #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, pNext})
 
-        {-# INLINE readVkMemoryTypeBits #-}
-        readVkMemoryTypeBits p
-          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, pNext}
 
-        {-# INLINE writeVkMemoryTypeBits #-}
-        writeVkMemoryTypeBits p
-          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMemoryFdPropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryTypeBits" VkMemoryFdPropertiesKHR where
@@ -192,22 +149,31 @@
         fieldOffset
           = #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
 
-instance CanReadField "memoryTypeBits" VkMemoryFdPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMemoryTypeBits
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryTypeBits" VkMemoryFdPropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, memoryTypeBits})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryTypeBits
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMemoryTypeBits = " .
-                            showsPrec d (vkMemoryTypeBits x) . showChar '}'
+                          showString "memoryTypeBits = " .
+                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetAndroidHardwareBufferInfoANDROID.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetAndroidHardwareBufferInfoANDROID.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetAndroidHardwareBufferInfoANDROID.hsc
@@ -0,0 +1,221 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryGetAndroidHardwareBufferInfoANDROID
+       (VkMemoryGetAndroidHardwareBufferInfoANDROID(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkDeviceMemory)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
+--   >     VkStructureType sType;
+--   >     const void*                        pNext;
+--   >     VkDeviceMemory                     memory;
+--   > } VkMemoryGetAndroidHardwareBufferInfoANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html VkMemoryGetAndroidHardwareBufferInfoANDROID registry at www.khronos.org>
+data VkMemoryGetAndroidHardwareBufferInfoANDROID = VkMemoryGetAndroidHardwareBufferInfoANDROID## Addr##
+                                                                                                ByteArray##
+
+instance Eq VkMemoryGetAndroidHardwareBufferInfoANDROID where
+        (VkMemoryGetAndroidHardwareBufferInfoANDROID## a _) ==
+          x@(VkMemoryGetAndroidHardwareBufferInfoANDROID## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkMemoryGetAndroidHardwareBufferInfoANDROID where
+        (VkMemoryGetAndroidHardwareBufferInfoANDROID## a _) `compare`
+          x@(VkMemoryGetAndroidHardwareBufferInfoANDROID## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkMemoryGetAndroidHardwareBufferInfoANDROID
+         where
+        unsafeAddr (VkMemoryGetAndroidHardwareBufferInfoANDROID## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkMemoryGetAndroidHardwareBufferInfoANDROID## _ b)
+          = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkMemoryGetAndroidHardwareBufferInfoANDROID##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetFdInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetFdInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetFdInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetFdInfoKHR.hsc
@@ -5,27 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryGetFdInfoKHR
        (VkMemoryGetFdInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
+import           Foreign.Storable                                           (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                 (VkDeviceMemory)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                              (VkDeviceMemory)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryGetFdInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
 --   >     VkDeviceMemory                   memory;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
 --   > } VkMemoryGetFdInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryGetFdInfoKHR.html VkMemoryGetFdInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryGetFdInfoKHR.html VkMemoryGetFdInfoKHR registry at www.khronos.org>
 data VkMemoryGetFdInfoKHR = VkMemoryGetFdInfoKHR## Addr## ByteArray##
 
 instance Eq VkMemoryGetFdInfoKHR where
@@ -73,26 +73,6 @@
         type ReturnedOnly VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkMemoryGetFdInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMemoryGetFdInfoKHR where
-        type VkSTypeMType VkMemoryGetFdInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryGetFdInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkMemoryGetFdInfoKHR
          where
         type FieldType "sType" VkMemoryGetFdInfoKHR = VkStructureType
@@ -107,36 +87,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryGetFdInfoKHR, sType}
 
-instance CanReadField "sType" VkMemoryGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMemoryGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, sType}
 
-instance CanWriteField "sType" VkMemoryGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMemoryGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMemoryGetFdInfoKHR where
-        type VkPNextMType VkMemoryGetFdInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryGetFdInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryGetFdInfoKHR
          where
@@ -152,36 +118,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryGetFdInfoKHR, pNext}
 
-instance CanReadField "pNext" VkMemoryGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkMemoryGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkMemoryGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMemoryGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkMemory VkMemoryGetFdInfoKHR where
-        type VkMemoryMType VkMemoryGetFdInfoKHR = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkMemoryGetFdInfoKHR, memory}
-
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, memory}
-
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, memory}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-} HasField "memory" VkMemoryGetFdInfoKHR
          where
@@ -197,43 +149,27 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryGetFdInfoKHR, memory}
 
-instance CanReadField "memory" VkMemoryGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkMemory
+instance {-# OVERLAPPING #-}
+         CanReadField "memory" VkMemoryGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, memory})
 
         {-# INLINE readField #-}
-        readField = readVkMemory
+        readField p
+          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, memory}
 
-instance CanWriteField "memory" VkMemoryGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "memory" VkMemoryGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
-instance {-# OVERLAPPING #-} HasVkHandleType VkMemoryGetFdInfoKHR
-         where
-        type VkHandleTypeMType VkMemoryGetFdInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkMemoryGetFdInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, handleType}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, memory}
 
 instance {-# OVERLAPPING #-}
          HasField "handleType" VkMemoryGetFdInfoKHR where
         type FieldType "handleType" VkMemoryGetFdInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
+             VkExternalMemoryHandleTypeFlagBits
         type FieldOptional "handleType" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkMemoryGetFdInfoKHR =
              #{offset VkMemoryGetFdInfoKHR, handleType}
@@ -246,28 +182,34 @@
         fieldOffset
           = #{offset VkMemoryGetFdInfoKHR, handleType}
 
-instance CanReadField "handleType" VkMemoryGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkMemoryGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkMemoryGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkMemoryGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, handleType}
 
 instance Show VkMemoryGetFdInfoKHR where
         showsPrec d x
           = showString "VkMemoryGetFdInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMemory = " .
-                            showsPrec d (vkMemory x) .
+                          showString "memory = " .
+                            showsPrec d (getField @"memory" x) .
                               showString ", " .
-                                showString "vkHandleType = " .
-                                  showsPrec d (vkHandleType x) . showChar '}'
+                                showString "handleType = " .
+                                  showsPrec d (getField @"handleType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryGetWin32HandleInfoKHR.hsc
@@ -5,27 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryGetWin32HandleInfoKHR
        (VkMemoryGetWin32HandleInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
+import           Foreign.Storable                                           (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                                 (VkDeviceMemory)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                              (VkDeviceMemory)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryGetWin32HandleInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
 --   >     VkDeviceMemory                   memory;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
 --   > } VkMemoryGetWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryGetWin32HandleInfoKHR.html VkMemoryGetWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryGetWin32HandleInfoKHR.html VkMemoryGetWin32HandleInfoKHR registry at www.khronos.org>
 data VkMemoryGetWin32HandleInfoKHR = VkMemoryGetWin32HandleInfoKHR## Addr##
                                                                     ByteArray##
 
@@ -79,27 +79,6 @@
         type StructExtends VkMemoryGetWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkMemoryGetWin32HandleInfoKHR where
-        type VkSTypeMType VkMemoryGetWin32HandleInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkMemoryGetWin32HandleInfoKHR where
         type FieldType "sType" VkMemoryGetWin32HandleInfoKHR =
              VkStructureType
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkMemoryGetWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkMemoryGetWin32HandleInfoKHR where
-        type VkPNextMType VkMemoryGetWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkMemoryGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMemoryGetWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMemoryGetWin32HandleInfoKHR where
@@ -162,37 +126,22 @@
         fieldOffset
           = #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMemory VkMemoryGetWin32HandleInfoKHR where
-        type VkMemoryMType VkMemoryGetWin32HandleInfoKHR = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
+         CanReadField "pNext" VkMemoryGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkMemoryGetWin32HandleInfoKHR, memory}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, memory}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, memory}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMemoryGetWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "memory" VkMemoryGetWin32HandleInfoKHR where
@@ -210,43 +159,27 @@
         fieldOffset
           = #{offset VkMemoryGetWin32HandleInfoKHR, memory}
 
-instance CanReadField "memory" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkMemory
-
-        {-# INLINE readField #-}
-        readField = readVkMemory
-
-instance CanWriteField "memory" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkMemoryGetWin32HandleInfoKHR where
-        type VkHandleTypeMType VkMemoryGetWin32HandleInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "memory" VkMemoryGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, memory})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, memory}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
+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 =
-             VkExternalMemoryHandleTypeFlagBitsKHR
+             VkExternalMemoryHandleTypeFlagBits
         type FieldOptional "handleType" VkMemoryGetWin32HandleInfoKHR =
              'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkMemoryGetWin32HandleInfoKHR =
@@ -261,30 +194,34 @@
         fieldOffset
           = #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
 
-instance CanReadField "handleType" VkMemoryGetWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkMemoryGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkMemoryGetWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkMemoryGetWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
+        writeField p
+          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
 
 instance Show VkMemoryGetWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkMemoryGetWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMemory = " .
-                            showsPrec d (vkMemory x) .
+                          showString "memory = " .
+                            showsPrec d (getField @"memory" x) .
                               showString ", " .
-                                showString "vkHandleType = " .
-                                  showsPrec d (vkHandleType x) . showChar '}'
+                                showString "handleType = " .
+                                  showsPrec d (getField @"handleType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHeap.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHeap.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHeap.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHeap.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryHeap (VkMemoryHeap(..))
        where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.BaseTypes              (VkDeviceSize)
 import           Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags (VkMemoryHeapFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryHeap {
@@ -22,7 +22,7 @@
 --   >     VkMemoryHeapFlags      flags;
 --   > } VkMemoryHeap;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryHeap.html VkMemoryHeap registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryHeap.html VkMemoryHeap registry at www.khronos.org>
 data VkMemoryHeap = VkMemoryHeap## Addr## ByteArray##
 
 instance Eq VkMemoryHeap where
@@ -69,25 +69,6 @@
         type ReturnedOnly VkMemoryHeap = 'True -- ' closing tick for hsc2hs
         type StructExtends VkMemoryHeap = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSize VkMemoryHeap where
-        type VkSizeMType VkMemoryHeap = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHeap, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_ = #{offset VkMemoryHeap, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkMemoryHeap, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkMemoryHeap, size}
-
 instance {-# OVERLAPPING #-} HasField "size" VkMemoryHeap where
         type FieldType "size" VkMemoryHeap = VkDeviceSize
         type FieldOptional "size" VkMemoryHeap = 'False -- ' closing tick for hsc2hs
@@ -101,31 +82,21 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryHeap, size}
 
-instance CanReadField "size" VkMemoryHeap where
-        {-# INLINE getField #-}
-        getField = vkSize
-
-        {-# INLINE readField #-}
-        readField = readVkSize
-
-instance {-# OVERLAPPING #-} HasVkFlags VkMemoryHeap where
-        type VkFlagsMType VkMemoryHeap = VkMemoryHeapFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+instance {-# OVERLAPPING #-} CanReadField "size" VkMemoryHeap where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHeap, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_ = #{offset VkMemoryHeap, flags}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryHeap, size})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkMemoryHeap, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryHeap, size}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkMemoryHeap, flags}
+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
@@ -140,17 +111,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryHeap, flags}
 
-instance CanReadField "flags" VkMemoryHeap where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-} CanReadField "flags" VkMemoryHeap
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryHeap, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        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 "vkSize = " .
-                showsPrec d (vkSize x) .
+              showString "size = " .
+                showsPrec d (getField @"size" x) .
                   showString ", " .
-                    showString "vkFlags = " . showsPrec d (vkFlags x) . showChar '}'
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHostPointerPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHostPointerPropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHostPointerPropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryHostPointerPropertiesEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryHostPointerPropertiesEXT
        (VkMemoryHostPointerPropertiesEXT(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryHostPointerPropertiesEXT {
@@ -22,7 +22,7 @@
 --   >     uint32_t memoryTypeBits;
 --   > } VkMemoryHostPointerPropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryHostPointerPropertiesEXT.html VkMemoryHostPointerPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryHostPointerPropertiesEXT.html VkMemoryHostPointerPropertiesEXT registry at www.khronos.org>
 data VkMemoryHostPointerPropertiesEXT = VkMemoryHostPointerPropertiesEXT## Addr##
                                                                           ByteArray##
 
@@ -77,28 +77,6 @@
         type StructExtends VkMemoryHostPointerPropertiesEXT = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkMemoryHostPointerPropertiesEXT where
-        type VkSTypeMType VkMemoryHostPointerPropertiesEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryHostPointerPropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkMemoryHostPointerPropertiesEXT where
         type FieldType "sType" VkMemoryHostPointerPropertiesEXT =
              VkStructureType
@@ -115,39 +93,22 @@
         fieldOffset
           = #{offset VkMemoryHostPointerPropertiesEXT, sType}
 
-instance CanReadField "sType" VkMemoryHostPointerPropertiesEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkMemoryHostPointerPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkMemoryHostPointerPropertiesEXT where
-        type VkPNextMType VkMemoryHostPointerPropertiesEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkMemoryHostPointerPropertiesEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryHostPointerPropertiesEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMemoryHostPointerPropertiesEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMemoryHostPointerPropertiesEXT where
@@ -165,40 +126,22 @@
         fieldOffset
           = #{offset VkMemoryHostPointerPropertiesEXT, pNext}
 
-instance CanReadField "pNext" VkMemoryHostPointerPropertiesEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkMemoryHostPointerPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypeBits VkMemoryHostPointerPropertiesEXT where
-        type VkMemoryTypeBitsMType VkMemoryHostPointerPropertiesEXT =
-             Word32
-
-        {-# NOINLINE vkMemoryTypeBits #-}
-        vkMemoryTypeBits x
+         CanReadField "pNext" VkMemoryHostPointerPropertiesEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits})
-
-        {-# INLINE vkMemoryTypeBitsByteOffset #-}
-        vkMemoryTypeBitsByteOffset ~_
-          = #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, pNext})
 
-        {-# INLINE readVkMemoryTypeBits #-}
-        readVkMemoryTypeBits p
-          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, pNext}
 
-        {-# INLINE writeVkMemoryTypeBits #-}
-        writeVkMemoryTypeBits p
-          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMemoryHostPointerPropertiesEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryTypeBits" VkMemoryHostPointerPropertiesEXT where
@@ -220,29 +163,33 @@
         fieldOffset
           = #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
 
-instance CanReadField "memoryTypeBits"
-           VkMemoryHostPointerPropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryTypeBits" VkMemoryHostPointerPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkMemoryTypeBits
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryTypeBits
+        readField p
+          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
 
-instance CanWriteField "memoryTypeBits"
-           VkMemoryHostPointerPropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "memoryTypeBits" VkMemoryHostPointerPropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMemoryTypeBits
+        writeField p
+          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
 
 instance Show VkMemoryHostPointerPropertiesEXT where
         showsPrec d x
           = showString "VkMemoryHostPointerPropertiesEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMemoryTypeBits = " .
-                            showsPrec d (vkMemoryTypeBits x) . showChar '}'
+                          showString "memoryTypeBits = " .
+                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements.hsc
@@ -5,16 +5,16 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryRequirements
        (VkMemoryRequirements(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes     (VkDeviceSize)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes  (VkDeviceSize)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryRequirements {
 --   >     VkDeviceSize           size;
@@ -22,7 +22,7 @@
 --   >     uint32_t               memoryTypeBits;
 --   > } VkMemoryRequirements;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryRequirements.html VkMemoryRequirements registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryRequirements.html VkMemoryRequirements registry at www.khronos.org>
 data VkMemoryRequirements = VkMemoryRequirements## Addr## ByteArray##
 
 instance Eq VkMemoryRequirements where
@@ -70,26 +70,6 @@
         type ReturnedOnly VkMemoryRequirements = 'True -- ' closing tick for hsc2hs
         type StructExtends VkMemoryRequirements = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSize VkMemoryRequirements where
-        type VkSizeMType VkMemoryRequirements = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkMemoryRequirements, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkMemoryRequirements, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkMemoryRequirements, size}
-
 instance {-# OVERLAPPING #-} HasField "size" VkMemoryRequirements
          where
         type FieldType "size" VkMemoryRequirements = VkDeviceSize
@@ -104,33 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryRequirements, size}
 
-instance CanReadField "size" VkMemoryRequirements where
-        {-# INLINE getField #-}
-        getField = vkSize
-
-        {-# INLINE readField #-}
-        readField = readVkSize
-
-instance {-# OVERLAPPING #-} HasVkAlignment VkMemoryRequirements
-         where
-        type VkAlignmentMType VkMemoryRequirements = VkDeviceSize
-
-        {-# NOINLINE vkAlignment #-}
-        vkAlignment x
+instance {-# OVERLAPPING #-}
+         CanReadField "size" VkMemoryRequirements where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, alignment})
-
-        {-# INLINE vkAlignmentByteOffset #-}
-        vkAlignmentByteOffset ~_
-          = #{offset VkMemoryRequirements, alignment}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, size})
 
-        {-# INLINE readVkAlignment #-}
-        readVkAlignment p
-          = peekByteOff p #{offset VkMemoryRequirements, alignment}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryRequirements, size}
 
-        {-# INLINE writeVkAlignment #-}
-        writeVkAlignment p
-          = pokeByteOff p #{offset VkMemoryRequirements, alignment}
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkMemoryRequirements where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryRequirements, size}
 
 instance {-# OVERLAPPING #-}
          HasField "alignment" VkMemoryRequirements where
@@ -146,33 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryRequirements, alignment}
 
-instance CanReadField "alignment" VkMemoryRequirements where
-        {-# INLINE getField #-}
-        getField = vkAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkAlignment
-
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypeBits VkMemoryRequirements where
-        type VkMemoryTypeBitsMType VkMemoryRequirements = Word32
-
-        {-# NOINLINE vkMemoryTypeBits #-}
-        vkMemoryTypeBits x
+         CanReadField "alignment" VkMemoryRequirements where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, memoryTypeBits})
-
-        {-# INLINE vkMemoryTypeBitsByteOffset #-}
-        vkMemoryTypeBitsByteOffset ~_
-          = #{offset VkMemoryRequirements, memoryTypeBits}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, alignment})
 
-        {-# INLINE readVkMemoryTypeBits #-}
-        readVkMemoryTypeBits p
-          = peekByteOff p #{offset VkMemoryRequirements, memoryTypeBits}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryRequirements, alignment}
 
-        {-# INLINE writeVkMemoryTypeBits #-}
-        writeVkMemoryTypeBits p
-          = pokeByteOff p #{offset VkMemoryRequirements, memoryTypeBits}
+instance {-# OVERLAPPING #-}
+         CanWriteField "alignment" VkMemoryRequirements where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryRequirements, alignment}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryTypeBits" VkMemoryRequirements where
@@ -189,21 +147,31 @@
         fieldOffset
           = #{offset VkMemoryRequirements, memoryTypeBits}
 
-instance CanReadField "memoryTypeBits" VkMemoryRequirements where
-        {-# INLINE getField #-}
-        getField = vkMemoryTypeBits
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryTypeBits" VkMemoryRequirements where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, memoryTypeBits})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryTypeBits
+        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 "vkSize = " .
-                showsPrec d (vkSize x) .
+              showString "size = " .
+                showsPrec d (getField @"size" x) .
                   showString ", " .
-                    showString "vkAlignment = " .
-                      showsPrec d (vkAlignment x) .
+                    showString "alignment = " .
+                      showsPrec d (getField @"alignment" x) .
                         showString ", " .
-                          showString "vkMemoryTypeBits = " .
-                            showsPrec d (vkMemoryTypeBits x) . showChar '}'
+                          showString "memoryTypeBits = " .
+                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2.hsc
@@ -0,0 +1,182 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryRequirements2
+       (VkMemoryRequirements2(..)) where
+import           Foreign.Storable                                  (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements (VkMemoryRequirements)
+import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
+
+-- | > typedef struct VkMemoryRequirements2 {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkMemoryRequirements                                                 memoryRequirements;
+--   > } VkMemoryRequirements2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryRequirements2.html VkMemoryRequirements2 registry at www.khronos.org>
+data VkMemoryRequirements2 = VkMemoryRequirements2## Addr##
+                                                    ByteArray##
+
+instance Eq VkMemoryRequirements2 where
+        (VkMemoryRequirements2## a _) == x@(VkMemoryRequirements2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkMemoryRequirements2 where
+        (VkMemoryRequirements2## a _) `compare`
+          x@(VkMemoryRequirements2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkMemoryRequirements2 where
+        unsafeAddr (VkMemoryRequirements2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkMemoryRequirements2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkMemoryRequirements2## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2KHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR
+       (VkMemoryRequirements2(..), VkMemoryRequirements2KHR) where
+import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements2 (VkMemoryRequirements2 (..))
+
+-- | Alias for `VkMemoryRequirements2`
+type VkMemoryRequirements2KHR = VkMemoryRequirements2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryRequirements2KHR.hsc
+++ /dev/null
@@ -1,218 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR
-       (VkMemoryRequirements2KHR(..)) where
-import           Foreign.Storable                                  (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkMemoryRequirements (VkMemoryRequirements)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
-
--- | > typedef struct VkMemoryRequirements2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkMemoryRequirements                                                 memoryRequirements;
---   > } VkMemoryRequirements2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryRequirements2KHR.html VkMemoryRequirements2KHR registry at www.khronos.org>
-data VkMemoryRequirements2KHR = VkMemoryRequirements2KHR## Addr##
-                                                          ByteArray##
-
-instance Eq VkMemoryRequirements2KHR where
-        (VkMemoryRequirements2KHR## a _) ==
-          x@(VkMemoryRequirements2KHR## b _) = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryRequirements2KHR where
-        (VkMemoryRequirements2KHR## a _) `compare`
-          x@(VkMemoryRequirements2KHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryRequirements2KHR where
-        sizeOf ~_ = #{size VkMemoryRequirements2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryRequirements2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkMemoryRequirements2KHR where
-        unsafeAddr (VkMemoryRequirements2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkMemoryRequirements2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkMemoryRequirements2KHR## (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkMemoryRequirements2KHR where
-        type StructFields VkMemoryRequirements2KHR =
-             '["sType", "pNext", "memoryRequirements"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryRequirements2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryRequirements2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryRequirements2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkMemoryRequirements2KHR
-         where
-        type VkSTypeMType VkMemoryRequirements2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryRequirements2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryRequirements2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryRequirements2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryRequirements2KHR where
-        type FieldType "sType" VkMemoryRequirements2KHR = VkStructureType
-        type FieldOptional "sType" VkMemoryRequirements2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryRequirements2KHR =
-             #{offset VkMemoryRequirements2KHR, sType}
-        type FieldIsArray "sType" VkMemoryRequirements2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryRequirements2KHR, sType}
-
-instance CanReadField "sType" VkMemoryRequirements2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMemoryRequirements2KHR
-         where
-        type VkPNextMType VkMemoryRequirements2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryRequirements2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryRequirements2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryRequirements2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryRequirements2KHR where
-        type FieldType "pNext" VkMemoryRequirements2KHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryRequirements2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryRequirements2KHR =
-             #{offset VkMemoryRequirements2KHR, pNext}
-        type FieldIsArray "pNext" VkMemoryRequirements2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryRequirements2KHR, pNext}
-
-instance CanReadField "pNext" VkMemoryRequirements2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkMemoryRequirements VkMemoryRequirements2KHR where
-        type VkMemoryRequirementsMType VkMemoryRequirements2KHR =
-             VkMemoryRequirements
-
-        {-# NOINLINE vkMemoryRequirements #-}
-        vkMemoryRequirements x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements2KHR, memoryRequirements})
-
-        {-# INLINE vkMemoryRequirementsByteOffset #-}
-        vkMemoryRequirementsByteOffset ~_
-          = #{offset VkMemoryRequirements2KHR, memoryRequirements}
-
-        {-# INLINE readVkMemoryRequirements #-}
-        readVkMemoryRequirements p
-          = peekByteOff p #{offset VkMemoryRequirements2KHR, memoryRequirements}
-
-        {-# INLINE writeVkMemoryRequirements #-}
-        writeVkMemoryRequirements p
-          = pokeByteOff p #{offset VkMemoryRequirements2KHR, memoryRequirements}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryRequirements" VkMemoryRequirements2KHR where
-        type FieldType "memoryRequirements" VkMemoryRequirements2KHR =
-             VkMemoryRequirements
-        type FieldOptional "memoryRequirements" VkMemoryRequirements2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryRequirements" VkMemoryRequirements2KHR =
-             #{offset VkMemoryRequirements2KHR, memoryRequirements}
-        type FieldIsArray "memoryRequirements" VkMemoryRequirements2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryRequirements2KHR, memoryRequirements}
-
-instance CanReadField "memoryRequirements" VkMemoryRequirements2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMemoryRequirements
-
-        {-# INLINE readField #-}
-        readField = readVkMemoryRequirements
-
-instance Show VkMemoryRequirements2KHR where
-        showsPrec d x
-          = showString "VkMemoryRequirements2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkMemoryRequirements = " .
-                            showsPrec d (vkMemoryRequirements x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryType.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryType.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryType.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryType.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryType (VkMemoryType(..))
        where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags (VkMemoryPropertyFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryType {
@@ -21,7 +21,7 @@
 --   >     uint32_t               heapIndex;
 --   > } VkMemoryType;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryType.html VkMemoryType registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryType.html VkMemoryType registry at www.khronos.org>
 data VkMemoryType = VkMemoryType## Addr## ByteArray##
 
 instance Eq VkMemoryType where
@@ -68,26 +68,6 @@
         type ReturnedOnly VkMemoryType = 'True -- ' closing tick for hsc2hs
         type StructExtends VkMemoryType = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkPropertyFlags VkMemoryType where
-        type VkPropertyFlagsMType VkMemoryType = VkMemoryPropertyFlags
-
-        {-# NOINLINE vkPropertyFlags #-}
-        vkPropertyFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryType, propertyFlags})
-
-        {-# INLINE vkPropertyFlagsByteOffset #-}
-        vkPropertyFlagsByteOffset ~_
-          = #{offset VkMemoryType, propertyFlags}
-
-        {-# INLINE readVkPropertyFlags #-}
-        readVkPropertyFlags p
-          = peekByteOff p #{offset VkMemoryType, propertyFlags}
-
-        {-# INLINE writeVkPropertyFlags #-}
-        writeVkPropertyFlags p
-          = pokeByteOff p #{offset VkMemoryType, propertyFlags}
-
 instance {-# OVERLAPPING #-} HasField "propertyFlags" VkMemoryType
          where
         type FieldType "propertyFlags" VkMemoryType = VkMemoryPropertyFlags
@@ -102,32 +82,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryType, propertyFlags}
 
-instance CanReadField "propertyFlags" VkMemoryType where
-        {-# INLINE getField #-}
-        getField = vkPropertyFlags
-
-        {-# INLINE readField #-}
-        readField = readVkPropertyFlags
-
-instance {-# OVERLAPPING #-} HasVkHeapIndex VkMemoryType where
-        type VkHeapIndexMType VkMemoryType = Word32
-
-        {-# NOINLINE vkHeapIndex #-}
-        vkHeapIndex x
+instance {-# OVERLAPPING #-}
+         CanReadField "propertyFlags" VkMemoryType where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryType, heapIndex})
-
-        {-# INLINE vkHeapIndexByteOffset #-}
-        vkHeapIndexByteOffset ~_
-          = #{offset VkMemoryType, heapIndex}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryType, propertyFlags})
 
-        {-# INLINE readVkHeapIndex #-}
-        readVkHeapIndex p
-          = peekByteOff p #{offset VkMemoryType, heapIndex}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryType, propertyFlags}
 
-        {-# INLINE writeVkHeapIndex #-}
-        writeVkHeapIndex p
-          = pokeByteOff p #{offset VkMemoryType, heapIndex}
+instance {-# OVERLAPPING #-}
+         CanWriteField "propertyFlags" VkMemoryType where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryType, propertyFlags}
 
 instance {-# OVERLAPPING #-} HasField "heapIndex" VkMemoryType
          where
@@ -143,18 +113,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkMemoryType, heapIndex}
 
-instance CanReadField "heapIndex" VkMemoryType where
-        {-# INLINE getField #-}
-        getField = vkHeapIndex
+instance {-# OVERLAPPING #-} CanReadField "heapIndex" VkMemoryType
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryType, heapIndex})
 
         {-# INLINE readField #-}
-        readField = readVkHeapIndex
+        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 "vkPropertyFlags = " .
-                showsPrec d (vkPropertyFlags x) .
+              showString "propertyFlags = " .
+                showsPrec d (getField @"propertyFlags" x) .
                   showString ", " .
-                    showString "vkHeapIndex = " .
-                      showsPrec d (vkHeapIndex x) . showChar '}'
+                    showString "heapIndex = " .
+                      showsPrec d (getField @"heapIndex" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryWin32HandlePropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryWin32HandlePropertiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryWin32HandlePropertiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMemoryWin32HandlePropertiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMemoryWin32HandlePropertiesKHR
        (VkMemoryWin32HandlePropertiesKHR(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMemoryWin32HandlePropertiesKHR {
@@ -22,7 +22,7 @@
 --   >     uint32_t                         memoryTypeBits;
 --   > } VkMemoryWin32HandlePropertiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMemoryWin32HandlePropertiesKHR.html VkMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMemoryWin32HandlePropertiesKHR.html VkMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
 data VkMemoryWin32HandlePropertiesKHR = VkMemoryWin32HandlePropertiesKHR## Addr##
                                                                           ByteArray##
 
@@ -77,28 +77,6 @@
         type StructExtends VkMemoryWin32HandlePropertiesKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkMemoryWin32HandlePropertiesKHR where
-        type VkSTypeMType VkMemoryWin32HandlePropertiesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkMemoryWin32HandlePropertiesKHR where
         type FieldType "sType" VkMemoryWin32HandlePropertiesKHR =
              VkStructureType
@@ -115,34 +93,22 @@
         fieldOffset
           = #{offset VkMemoryWin32HandlePropertiesKHR, sType}
 
-instance CanReadField "sType" VkMemoryWin32HandlePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkMemoryWin32HandlePropertiesKHR where
-        type VkPNextMType VkMemoryWin32HandlePropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkMemoryWin32HandlePropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMemoryWin32HandlePropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMemoryWin32HandlePropertiesKHR where
@@ -160,35 +126,22 @@
         fieldOffset
           = #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
 
-instance CanReadField "pNext" VkMemoryWin32HandlePropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypeBits VkMemoryWin32HandlePropertiesKHR where
-        type VkMemoryTypeBitsMType VkMemoryWin32HandlePropertiesKHR =
-             Word32
-
-        {-# NOINLINE vkMemoryTypeBits #-}
-        vkMemoryTypeBits x
+         CanReadField "pNext" VkMemoryWin32HandlePropertiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits})
-
-        {-# INLINE vkMemoryTypeBitsByteOffset #-}
-        vkMemoryTypeBitsByteOffset ~_
-          = #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
+              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, pNext})
 
-        {-# INLINE readVkMemoryTypeBits #-}
-        readVkMemoryTypeBits p
-          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
 
-        {-# INLINE writeVkMemoryTypeBits #-}
-        writeVkMemoryTypeBits p
-          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMemoryWin32HandlePropertiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR where
@@ -210,23 +163,33 @@
         fieldOffset
           = #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
 
-instance CanReadField "memoryTypeBits"
-           VkMemoryWin32HandlePropertiesKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR
          where
-        {-# INLINE getField #-}
-        getField = vkMemoryTypeBits
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryTypeBits
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMemoryTypeBits = " .
-                            showsPrec d (vkMemoryTypeBits x) . showChar '}'
+                          showString "memoryTypeBits = " .
+                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMirSurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMirSurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMirSurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMirSurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMirSurfaceCreateInfoKHR
        (VkMirSurfaceCreateInfoKHR(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Include              (MirConnection,
                                                              MirSurface)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMirSurfaceCreateInfoKHR {
@@ -27,7 +27,7 @@
 --   >     MirSurface*                      mirSurface;
 --   > } VkMirSurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMirSurfaceCreateInfoKHR.html VkMirSurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMirSurfaceCreateInfoKHR.html VkMirSurfaceCreateInfoKHR registry at www.khronos.org>
 data VkMirSurfaceCreateInfoKHR = VkMirSurfaceCreateInfoKHR## Addr##
                                                             ByteArray##
 
@@ -77,27 +77,6 @@
         type ReturnedOnly VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkMirSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMirSurfaceCreateInfoKHR
-         where
-        type VkSTypeMType VkMirSurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMirSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkMirSurfaceCreateInfoKHR where
         type FieldType "sType" VkMirSurfaceCreateInfoKHR = VkStructureType
@@ -113,37 +92,22 @@
         fieldOffset
           = #{offset VkMirSurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMirSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, sType}
 
-instance CanWriteField "sType" VkMirSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMirSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMirSurfaceCreateInfoKHR
-         where
-        type VkPNextMType VkMirSurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMirSurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMirSurfaceCreateInfoKHR where
@@ -160,38 +124,22 @@
         fieldOffset
           = #{offset VkMirSurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkMirSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkMirSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMirSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkMirSurfaceCreateInfoKHR
-         where
-        type VkFlagsMType VkMirSurfaceCreateInfoKHR =
-             VkMirSurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkMirSurfaceCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkMirSurfaceCreateInfoKHR where
@@ -209,38 +157,22 @@
         fieldOffset
           = #{offset VkMirSurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkConnection VkMirSurfaceCreateInfoKHR where
-        type VkConnectionMType VkMirSurfaceCreateInfoKHR =
-             Ptr MirConnection
-
-        {-# NOINLINE vkConnection #-}
-        vkConnection x
+         CanReadField "flags" VkMirSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, connection})
-
-        {-# INLINE vkConnectionByteOffset #-}
-        vkConnectionByteOffset ~_
-          = #{offset VkMirSurfaceCreateInfoKHR, connection}
+              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, flags})
 
-        {-# INLINE readVkConnection #-}
-        readVkConnection p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, connection}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, flags}
 
-        {-# INLINE writeVkConnection #-}
-        writeVkConnection p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, connection}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkMirSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "connection" VkMirSurfaceCreateInfoKHR where
@@ -258,37 +190,22 @@
         fieldOffset
           = #{offset VkMirSurfaceCreateInfoKHR, connection}
 
-instance CanReadField "connection" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkConnection
-
-        {-# INLINE readField #-}
-        readField = readVkConnection
-
-instance CanWriteField "connection" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkConnection
-
 instance {-# OVERLAPPING #-}
-         HasVkMirSurface VkMirSurfaceCreateInfoKHR where
-        type VkMirSurfaceMType VkMirSurfaceCreateInfoKHR = Ptr MirSurface
-
-        {-# NOINLINE vkMirSurface #-}
-        vkMirSurface x
+         CanReadField "connection" VkMirSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, mirSurface})
-
-        {-# INLINE vkMirSurfaceByteOffset #-}
-        vkMirSurfaceByteOffset ~_
-          = #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
+              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, connection})
 
-        {-# INLINE readVkMirSurface #-}
-        readVkMirSurface p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, connection}
 
-        {-# INLINE writeVkMirSurface #-}
-        writeVkMirSurface p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
+instance {-# OVERLAPPING #-}
+         CanWriteField "connection" VkMirSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, connection}
 
 instance {-# OVERLAPPING #-}
          HasField "mirSurface" VkMirSurfaceCreateInfoKHR where
@@ -306,31 +223,37 @@
         fieldOffset
           = #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
 
-instance CanReadField "mirSurface" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkMirSurface
+instance {-# OVERLAPPING #-}
+         CanReadField "mirSurface" VkMirSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, mirSurface})
 
         {-# INLINE readField #-}
-        readField = readVkMirSurface
+        readField p
+          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
 
-instance CanWriteField "mirSurface" VkMirSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "mirSurface" VkMirSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkMirSurface
+        writeField p
+          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
 
 instance Show VkMirSurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkMirSurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkConnection = " .
-                                  showsPrec d (vkConnection x) .
+                                showString "connection = " .
+                                  showsPrec d (getField @"connection" x) .
                                     showString ", " .
-                                      showString "vkMirSurface = " .
-                                        showsPrec d (vkMirSurface x) . showChar '}'
+                                      showString "mirSurface = " .
+                                        showsPrec d (getField @"mirSurface" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkMultisamplePropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkMultisamplePropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkMultisamplePropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkMultisamplePropertiesEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkMultisamplePropertiesEXT
        (VkMultisamplePropertiesEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D    (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMultisamplePropertiesEXT {
@@ -23,7 +23,7 @@
 --   >     VkExtent2D                       maxSampleLocationGridSize;
 --   > } VkMultisamplePropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkMultisamplePropertiesEXT.html VkMultisamplePropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkMultisamplePropertiesEXT.html VkMultisamplePropertiesEXT registry at www.khronos.org>
 data VkMultisamplePropertiesEXT = VkMultisamplePropertiesEXT## Addr##
                                                               ByteArray##
 
@@ -75,27 +75,6 @@
         type ReturnedOnly VkMultisamplePropertiesEXT = 'True -- ' closing tick for hsc2hs
         type StructExtends VkMultisamplePropertiesEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkMultisamplePropertiesEXT
-         where
-        type VkSTypeMType VkMultisamplePropertiesEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkMultisamplePropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkMultisamplePropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkMultisamplePropertiesEXT where
         type FieldType "sType" VkMultisamplePropertiesEXT = VkStructureType
@@ -111,33 +90,22 @@
         fieldOffset
           = #{offset VkMultisamplePropertiesEXT, sType}
 
-instance CanReadField "sType" VkMultisamplePropertiesEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkMultisamplePropertiesEXT
-         where
-        type VkPNextMType VkMultisamplePropertiesEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkMultisamplePropertiesEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkMultisamplePropertiesEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkMultisamplePropertiesEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMultisamplePropertiesEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkMultisamplePropertiesEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkMultisamplePropertiesEXT where
@@ -154,34 +122,22 @@
         fieldOffset
           = #{offset VkMultisamplePropertiesEXT, pNext}
 
-instance CanReadField "pNext" VkMultisamplePropertiesEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxSampleLocationGridSize VkMultisamplePropertiesEXT where
-        type VkMaxSampleLocationGridSizeMType VkMultisamplePropertiesEXT =
-             VkExtent2D
-
-        {-# NOINLINE vkMaxSampleLocationGridSize #-}
-        vkMaxSampleLocationGridSize x
+         CanReadField "pNext" VkMultisamplePropertiesEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize})
-
-        {-# INLINE vkMaxSampleLocationGridSizeByteOffset #-}
-        vkMaxSampleLocationGridSizeByteOffset ~_
-          = #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
+              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, pNext})
 
-        {-# INLINE readVkMaxSampleLocationGridSize #-}
-        readVkMaxSampleLocationGridSize p
-          = peekByteOff p #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkMultisamplePropertiesEXT, pNext}
 
-        {-# INLINE writeVkMaxSampleLocationGridSize #-}
-        writeVkMaxSampleLocationGridSize p
-          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkMultisamplePropertiesEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSampleLocationGridSize" VkMultisamplePropertiesEXT
@@ -207,23 +163,35 @@
         fieldOffset
           = #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
 
-instance CanReadField "maxSampleLocationGridSize"
-           VkMultisamplePropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "maxSampleLocationGridSize" VkMultisamplePropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkMaxSampleLocationGridSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize})
 
         {-# INLINE readField #-}
-        readField = readVkMaxSampleLocationGridSize
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMaxSampleLocationGridSize = " .
-                            showsPrec d (vkMaxSampleLocationGridSize x) . showChar '}'
+                          showString "maxSampleLocationGridSize = " .
+                            showsPrec d (getField @"maxSampleLocationGridSize" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableCreateInfoNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableCreateInfoNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableCreateInfoNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableCreateInfoNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTableCreateInfoNVX
        (VkObjectTableCreateInfoNVX(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX       (VkObjectEntryTypeNVX)
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTableCreateInfoNVX {
@@ -32,7 +32,7 @@
 --   >     uint32_t maxPipelineLayouts;
 --   > } VkObjectTableCreateInfoNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTableCreateInfoNVX.html VkObjectTableCreateInfoNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTableCreateInfoNVX.html VkObjectTableCreateInfoNVX registry at www.khronos.org>
 data VkObjectTableCreateInfoNVX = VkObjectTableCreateInfoNVX## Addr##
                                                               ByteArray##
 
@@ -88,27 +88,6 @@
         type ReturnedOnly VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
         type StructExtends VkObjectTableCreateInfoNVX = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkObjectTableCreateInfoNVX
-         where
-        type VkSTypeMType VkObjectTableCreateInfoNVX = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkObjectTableCreateInfoNVX where
         type FieldType "sType" VkObjectTableCreateInfoNVX = VkStructureType
@@ -124,37 +103,22 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, sType}
 
-instance CanReadField "sType" VkObjectTableCreateInfoNVX where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkObjectTableCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, sType}
 
-instance CanWriteField "sType" VkObjectTableCreateInfoNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkObjectTableCreateInfoNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkObjectTableCreateInfoNVX
-         where
-        type VkPNextMType VkObjectTableCreateInfoNVX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkObjectTableCreateInfoNVX where
@@ -171,37 +135,22 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, pNext}
 
-instance CanReadField "pNext" VkObjectTableCreateInfoNVX where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkObjectCount VkObjectTableCreateInfoNVX where
-        type VkObjectCountMType VkObjectTableCreateInfoNVX = Word32
-
-        {-# NOINLINE vkObjectCount #-}
-        vkObjectCount x
+         CanReadField "pNext" VkObjectTableCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, objectCount})
-
-        {-# INLINE vkObjectCountByteOffset #-}
-        vkObjectCountByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, objectCount}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pNext})
 
-        {-# INLINE readVkObjectCount #-}
-        readVkObjectCount p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, objectCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pNext}
 
-        {-# INLINE writeVkObjectCount #-}
-        writeVkObjectCount p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, objectCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkObjectTableCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "objectCount" VkObjectTableCreateInfoNVX where
@@ -219,40 +168,22 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, objectCount}
 
-instance CanReadField "objectCount" VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkObjectCount
-
-        {-# INLINE readField #-}
-        readField = readVkObjectCount
-
-instance CanWriteField "objectCount" VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkObjectCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPObjectEntryTypes VkObjectTableCreateInfoNVX where
-        type VkPObjectEntryTypesMType VkObjectTableCreateInfoNVX =
-             Ptr VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkPObjectEntryTypes #-}
-        vkPObjectEntryTypes x
+         CanReadField "objectCount" VkObjectTableCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes})
-
-        {-# INLINE vkPObjectEntryTypesByteOffset #-}
-        vkPObjectEntryTypesByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, objectCount})
 
-        {-# INLINE readVkPObjectEntryTypes #-}
-        readVkPObjectEntryTypes p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, objectCount}
 
-        {-# INLINE writeVkPObjectEntryTypes #-}
-        writeVkPObjectEntryTypes p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "objectCount" VkObjectTableCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, objectCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
@@ -272,42 +203,22 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
 
-instance CanReadField "pObjectEntryTypes"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPObjectEntryTypes
-
-        {-# INLINE readField #-}
-        readField = readVkPObjectEntryTypes
-
-instance CanWriteField "pObjectEntryTypes"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPObjectEntryTypes
-
 instance {-# OVERLAPPING #-}
-         HasVkPObjectEntryCounts VkObjectTableCreateInfoNVX where
-        type VkPObjectEntryCountsMType VkObjectTableCreateInfoNVX =
-             Ptr Word32
-
-        {-# NOINLINE vkPObjectEntryCounts #-}
-        vkPObjectEntryCounts x
+         CanReadField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts})
-
-        {-# INLINE vkPObjectEntryCountsByteOffset #-}
-        vkPObjectEntryCountsByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes})
 
-        {-# INLINE readVkPObjectEntryCounts #-}
-        readVkPObjectEntryCounts p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
 
-        {-# INLINE writeVkPObjectEntryCounts #-}
-        writeVkPObjectEntryCounts p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
 
 instance {-# OVERLAPPING #-}
          HasField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
@@ -327,42 +238,22 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
 
-instance CanReadField "pObjectEntryCounts"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPObjectEntryCounts
-
-        {-# INLINE readField #-}
-        readField = readVkPObjectEntryCounts
-
-instance CanWriteField "pObjectEntryCounts"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPObjectEntryCounts
-
 instance {-# OVERLAPPING #-}
-         HasVkPObjectEntryUsageFlags VkObjectTableCreateInfoNVX where
-        type VkPObjectEntryUsageFlagsMType VkObjectTableCreateInfoNVX =
-             Ptr VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkPObjectEntryUsageFlags #-}
-        vkPObjectEntryUsageFlags x
+         CanReadField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags})
-
-        {-# INLINE vkPObjectEntryUsageFlagsByteOffset #-}
-        vkPObjectEntryUsageFlagsByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts})
 
-        {-# INLINE readVkPObjectEntryUsageFlags #-}
-        readVkPObjectEntryUsageFlags p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
 
-        {-# INLINE writeVkPObjectEntryUsageFlags #-}
-        writeVkPObjectEntryUsageFlags p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
 
 instance {-# OVERLAPPING #-}
          HasField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX where
@@ -386,44 +277,24 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
 
-instance CanReadField "pObjectEntryUsageFlags"
-           VkObjectTableCreateInfoNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPObjectEntryUsageFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags})
 
         {-# INLINE readField #-}
-        readField = readVkPObjectEntryUsageFlags
-
-instance CanWriteField "pObjectEntryUsageFlags"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPObjectEntryUsageFlags
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
 
 instance {-# OVERLAPPING #-}
-         HasVkMaxUniformBuffersPerDescriptor VkObjectTableCreateInfoNVX
+         CanWriteField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
          where
-        type VkMaxUniformBuffersPerDescriptorMType
-               VkObjectTableCreateInfoNVX
-             = Word32
-
-        {-# NOINLINE vkMaxUniformBuffersPerDescriptor #-}
-        vkMaxUniformBuffersPerDescriptor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor})
-
-        {-# INLINE vkMaxUniformBuffersPerDescriptorByteOffset #-}
-        vkMaxUniformBuffersPerDescriptorByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
-
-        {-# INLINE readVkMaxUniformBuffersPerDescriptor #-}
-        readVkMaxUniformBuffersPerDescriptor p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
-
-        {-# INLINE writeVkMaxUniformBuffersPerDescriptor #-}
-        writeVkMaxUniformBuffersPerDescriptor p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
 
 instance {-# OVERLAPPING #-}
          HasField "maxUniformBuffersPerDescriptor"
@@ -450,44 +321,26 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
 
-instance CanReadField "maxUniformBuffersPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxUniformBuffersPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxUniformBuffersPerDescriptor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor})
 
         {-# INLINE readField #-}
-        readField = readVkMaxUniformBuffersPerDescriptor
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
 
-instance CanWriteField "maxUniformBuffersPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxUniformBuffersPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxUniformBuffersPerDescriptor
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxStorageBuffersPerDescriptor VkObjectTableCreateInfoNVX
-         where
-        type VkMaxStorageBuffersPerDescriptorMType
-               VkObjectTableCreateInfoNVX
-             = Word32
-
-        {-# NOINLINE vkMaxStorageBuffersPerDescriptor #-}
-        vkMaxStorageBuffersPerDescriptor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor})
-
-        {-# INLINE vkMaxStorageBuffersPerDescriptorByteOffset #-}
-        vkMaxStorageBuffersPerDescriptorByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
-
-        {-# INLINE readVkMaxStorageBuffersPerDescriptor #-}
-        readVkMaxStorageBuffersPerDescriptor p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
-
-        {-# INLINE writeVkMaxStorageBuffersPerDescriptor #-}
-        writeVkMaxStorageBuffersPerDescriptor p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
 
 instance {-# OVERLAPPING #-}
          HasField "maxStorageBuffersPerDescriptor"
@@ -514,43 +367,26 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
 
-instance CanReadField "maxStorageBuffersPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxStorageBuffersPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxStorageBuffersPerDescriptor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor})
 
         {-# INLINE readField #-}
-        readField = readVkMaxStorageBuffersPerDescriptor
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
 
-instance CanWriteField "maxStorageBuffersPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxStorageBuffersPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxStorageBuffersPerDescriptor
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxStorageImagesPerDescriptor VkObjectTableCreateInfoNVX where
-        type VkMaxStorageImagesPerDescriptorMType
-               VkObjectTableCreateInfoNVX
-             = Word32
-
-        {-# NOINLINE vkMaxStorageImagesPerDescriptor #-}
-        vkMaxStorageImagesPerDescriptor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor})
-
-        {-# INLINE vkMaxStorageImagesPerDescriptorByteOffset #-}
-        vkMaxStorageImagesPerDescriptorByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
-
-        {-# INLINE readVkMaxStorageImagesPerDescriptor #-}
-        readVkMaxStorageImagesPerDescriptor p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
-
-        {-# INLINE writeVkMaxStorageImagesPerDescriptor #-}
-        writeVkMaxStorageImagesPerDescriptor p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
 
 instance {-# OVERLAPPING #-}
          HasField "maxStorageImagesPerDescriptor" VkObjectTableCreateInfoNVX
@@ -576,43 +412,26 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
 
-instance CanReadField "maxStorageImagesPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxStorageImagesPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxStorageImagesPerDescriptor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor})
 
         {-# INLINE readField #-}
-        readField = readVkMaxStorageImagesPerDescriptor
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
 
-instance CanWriteField "maxStorageImagesPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxStorageImagesPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxStorageImagesPerDescriptor
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSampledImagesPerDescriptor VkObjectTableCreateInfoNVX where
-        type VkMaxSampledImagesPerDescriptorMType
-               VkObjectTableCreateInfoNVX
-             = Word32
-
-        {-# NOINLINE vkMaxSampledImagesPerDescriptor #-}
-        vkMaxSampledImagesPerDescriptor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor})
-
-        {-# INLINE vkMaxSampledImagesPerDescriptorByteOffset #-}
-        vkMaxSampledImagesPerDescriptorByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
-
-        {-# INLINE readVkMaxSampledImagesPerDescriptor #-}
-        readVkMaxSampledImagesPerDescriptor p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
-
-        {-# INLINE writeVkMaxSampledImagesPerDescriptor #-}
-        writeVkMaxSampledImagesPerDescriptor p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSampledImagesPerDescriptor" VkObjectTableCreateInfoNVX
@@ -638,41 +457,26 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
 
-instance CanReadField "maxSampledImagesPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxSampledImagesPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
-        {-# INLINE getField #-}
-        getField = vkMaxSampledImagesPerDescriptor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor})
 
         {-# INLINE readField #-}
-        readField = readVkMaxSampledImagesPerDescriptor
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
 
-instance CanWriteField "maxSampledImagesPerDescriptor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxSampledImagesPerDescriptor"
            VkObjectTableCreateInfoNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxSampledImagesPerDescriptor
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPipelineLayouts VkObjectTableCreateInfoNVX where
-        type VkMaxPipelineLayoutsMType VkObjectTableCreateInfoNVX = Word32
-
-        {-# NOINLINE vkMaxPipelineLayouts #-}
-        vkMaxPipelineLayouts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts})
-
-        {-# INLINE vkMaxPipelineLayoutsByteOffset #-}
-        vkMaxPipelineLayoutsByteOffset ~_
-          = #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
-
-        {-# INLINE readVkMaxPipelineLayouts #-}
-        readVkMaxPipelineLayouts p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
-
-        {-# INLINE writeVkMaxPipelineLayouts #-}
-        writeVkMaxPipelineLayouts p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
 
 instance {-# OVERLAPPING #-}
          HasField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
@@ -692,73 +496,81 @@
         fieldOffset
           = #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
 
-instance CanReadField "maxPipelineLayouts"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPipelineLayouts
+instance {-# OVERLAPPING #-}
+         CanReadField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts})
 
         {-# INLINE readField #-}
-        readField = readVkMaxPipelineLayouts
+        readField p
+          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
 
-instance CanWriteField "maxPipelineLayouts"
-           VkObjectTableCreateInfoNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxPipelineLayouts
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
 
 instance Show VkObjectTableCreateInfoNVX where
         showsPrec d x
           = showString "VkObjectTableCreateInfoNVX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkObjectCount = " .
-                            showsPrec d (vkObjectCount x) .
+                          showString "objectCount = " .
+                            showsPrec d (getField @"objectCount" x) .
                               showString ", " .
-                                showString "vkPObjectEntryTypes = " .
-                                  showsPrec d (vkPObjectEntryTypes x) .
+                                showString "pObjectEntryTypes = " .
+                                  showsPrec d (getField @"pObjectEntryTypes" x) .
                                     showString ", " .
-                                      showString "vkPObjectEntryCounts = " .
-                                        showsPrec d (vkPObjectEntryCounts x) .
+                                      showString "pObjectEntryCounts = " .
+                                        showsPrec d (getField @"pObjectEntryCounts" x) .
                                           showString ", " .
-                                            showString "vkPObjectEntryUsageFlags = " .
-                                              showsPrec d (vkPObjectEntryUsageFlags x) .
+                                            showString "pObjectEntryUsageFlags = " .
+                                              showsPrec d (getField @"pObjectEntryUsageFlags" x) .
                                                 showString ", " .
-                                                  showString "vkMaxUniformBuffersPerDescriptor = " .
-                                                    showsPrec d (vkMaxUniformBuffersPerDescriptor x)
+                                                  showString "maxUniformBuffersPerDescriptor = " .
+                                                    showsPrec d
+                                                      (getField @"maxUniformBuffersPerDescriptor" x)
                                                       .
                                                       showString ", " .
                                                         showString
-                                                          "vkMaxStorageBuffersPerDescriptor = "
+                                                          "maxStorageBuffersPerDescriptor = "
                                                           .
                                                           showsPrec d
-                                                            (vkMaxStorageBuffersPerDescriptor x)
+                                                            (getField
+                                                               @"maxStorageBuffersPerDescriptor"
+                                                               x)
                                                             .
                                                             showString ", " .
                                                               showString
-                                                                "vkMaxStorageImagesPerDescriptor = "
+                                                                "maxStorageImagesPerDescriptor = "
                                                                 .
                                                                 showsPrec d
-                                                                  (vkMaxStorageImagesPerDescriptor
+                                                                  (getField
+                                                                     @"maxStorageImagesPerDescriptor"
                                                                      x)
                                                                   .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkMaxSampledImagesPerDescriptor = "
+                                                                      "maxSampledImagesPerDescriptor = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkMaxSampledImagesPerDescriptor
+                                                                        (getField
+                                                                           @"maxSampledImagesPerDescriptor"
                                                                            x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkMaxPipelineLayouts = "
+                                                                            "maxPipelineLayouts = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkMaxPipelineLayouts
+                                                                              (getField
+                                                                                 @"maxPipelineLayouts"
                                                                                  x)
                                                                               . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableDescriptorSetEntryNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableDescriptorSetEntryNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableDescriptorSetEntryNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableDescriptorSetEntryNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTableDescriptorSetEntryNVX
        (VkObjectTableDescriptorSetEntryNVX(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
 import           Graphics.Vulkan.Types.Handles                         (VkDescriptorSet,
                                                                         VkPipelineLayout)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTableDescriptorSetEntryNVX {
@@ -26,7 +26,7 @@
 --   >     VkDescriptorSet              descriptorSet;
 --   > } VkObjectTableDescriptorSetEntryNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTableDescriptorSetEntryNVX.html VkObjectTableDescriptorSetEntryNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTableDescriptorSetEntryNVX.html VkObjectTableDescriptorSetEntryNVX registry at www.khronos.org>
 data VkObjectTableDescriptorSetEntryNVX = VkObjectTableDescriptorSetEntryNVX## Addr##
                                                                               ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkObjectTableDescriptorSetEntryNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkType VkObjectTableDescriptorSetEntryNVX where
-        type VkTypeMType VkObjectTableDescriptorSetEntryNVX =
-             VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkObjectTableDescriptorSetEntryNVX, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
          HasField "type" VkObjectTableDescriptorSetEntryNVX where
         type FieldType "type" VkObjectTableDescriptorSetEntryNVX =
              VkObjectEntryTypeNVX
@@ -120,40 +98,22 @@
         fieldOffset
           = #{offset VkObjectTableDescriptorSetEntryNVX, type}
 
-instance CanReadField "type" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkObjectTableDescriptorSetEntryNVX where
-        type VkFlagsMType VkObjectTableDescriptorSetEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "type" VkObjectTableDescriptorSetEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkObjectTableDescriptorSetEntryNVX, flags}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, type})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, type}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkObjectTableDescriptorSetEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, type}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkObjectTableDescriptorSetEntryNVX where
@@ -173,40 +133,22 @@
         fieldOffset
           = #{offset VkObjectTableDescriptorSetEntryNVX, flags}
 
-instance CanReadField "flags" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPipelineLayout VkObjectTableDescriptorSetEntryNVX where
-        type VkPipelineLayoutMType VkObjectTableDescriptorSetEntryNVX =
-             VkPipelineLayout
-
-        {-# NOINLINE vkPipelineLayout #-}
-        vkPipelineLayout x
+         CanReadField "flags" VkObjectTableDescriptorSetEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout})
-
-        {-# INLINE vkPipelineLayoutByteOffset #-}
-        vkPipelineLayoutByteOffset ~_
-          = #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, flags})
 
-        {-# INLINE readVkPipelineLayout #-}
-        readVkPipelineLayout p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, flags}
 
-        {-# INLINE writeVkPipelineLayout #-}
-        writeVkPipelineLayout p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkObjectTableDescriptorSetEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX where
@@ -230,42 +172,24 @@
         fieldOffset
           = #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
 
-instance CanReadField "pipelineLayout"
-           VkObjectTableDescriptorSetEntryNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPipelineLayout
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout})
 
         {-# INLINE readField #-}
-        readField = readVkPipelineLayout
+        readField p
+          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
 
-instance CanWriteField "pipelineLayout"
-           VkObjectTableDescriptorSetEntryNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPipelineLayout
-
-instance {-# OVERLAPPING #-}
-         HasVkDescriptorSet VkObjectTableDescriptorSetEntryNVX where
-        type VkDescriptorSetMType VkObjectTableDescriptorSetEntryNVX =
-             VkDescriptorSet
-
-        {-# NOINLINE vkDescriptorSet #-}
-        vkDescriptorSet x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet})
-
-        {-# INLINE vkDescriptorSetByteOffset #-}
-        vkDescriptorSetByteOffset ~_
-          = #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
-
-        {-# INLINE readVkDescriptorSet #-}
-        readVkDescriptorSet p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
-
-        {-# INLINE writeVkDescriptorSet #-}
-        writeVkDescriptorSet p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorSet" VkObjectTableDescriptorSetEntryNVX where
@@ -288,32 +212,36 @@
         fieldOffset
           = #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
 
-instance CanReadField "descriptorSet"
-           VkObjectTableDescriptorSetEntryNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "descriptorSet" VkObjectTableDescriptorSetEntryNVX
          where
-        {-# INLINE getField #-}
-        getField = vkDescriptorSet
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet})
 
         {-# INLINE readField #-}
-        readField = readVkDescriptorSet
+        readField p
+          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
 
-instance CanWriteField "descriptorSet"
-           VkObjectTableDescriptorSetEntryNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorSet" VkObjectTableDescriptorSetEntryNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDescriptorSet
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
 
 instance Show VkObjectTableDescriptorSetEntryNVX where
         showsPrec d x
           = showString "VkObjectTableDescriptorSetEntryNVX {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkFlags = " .
-                      showsPrec d (vkFlags x) .
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) .
                         showString ", " .
-                          showString "vkPipelineLayout = " .
-                            showsPrec d (vkPipelineLayout x) .
+                          showString "pipelineLayout = " .
+                            showsPrec d (getField @"pipelineLayout" x) .
                               showString ", " .
-                                showString "vkDescriptorSet = " .
-                                  showsPrec d (vkDescriptorSet x) . showChar '}'
+                                showString "descriptorSet = " .
+                                  showsPrec d (getField @"descriptorSet" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableEntryNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableEntryNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableEntryNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableEntryNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTableEntryNVX
        (VkObjectTableEntryNVX(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX       (VkObjectEntryTypeNVX)
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTableEntryNVX {
@@ -22,7 +22,7 @@
 --   >     VkObjectEntryUsageFlagsNVX   flags;
 --   > } VkObjectTableEntryNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTableEntryNVX.html VkObjectTableEntryNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTableEntryNVX.html VkObjectTableEntryNVX registry at www.khronos.org>
 data VkObjectTableEntryNVX = VkObjectTableEntryNVX## Addr##
                                                     ByteArray##
 
@@ -70,26 +70,6 @@
         type ReturnedOnly VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
         type StructExtends VkObjectTableEntryNVX = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkType VkObjectTableEntryNVX where
-        type VkTypeMType VkObjectTableEntryNVX = VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableEntryNVX, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkObjectTableEntryNVX, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkObjectTableEntryNVX, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkObjectTableEntryNVX, type}
-
 instance {-# OVERLAPPING #-} HasField "type" VkObjectTableEntryNVX
          where
         type FieldType "type" VkObjectTableEntryNVX = VkObjectEntryTypeNVX
@@ -104,37 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkObjectTableEntryNVX, type}
 
-instance CanReadField "type" VkObjectTableEntryNVX where
-        {-# INLINE getField #-}
-        getField = vkType
+instance {-# OVERLAPPING #-}
+         CanReadField "type" VkObjectTableEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableEntryNVX, type})
 
         {-# INLINE readField #-}
-        readField = readVkType
+        readField p
+          = peekByteOff p #{offset VkObjectTableEntryNVX, type}
 
-instance CanWriteField "type" VkObjectTableEntryNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkObjectTableEntryNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkType
-
-instance {-# OVERLAPPING #-} HasVkFlags VkObjectTableEntryNVX where
-        type VkFlagsMType VkObjectTableEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableEntryNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkObjectTableEntryNVX, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkObjectTableEntryNVX, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkObjectTableEntryNVX, flags}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableEntryNVX, type}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkObjectTableEntryNVX
          where
@@ -151,21 +116,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkObjectTableEntryNVX, flags}
 
-instance CanReadField "flags" VkObjectTableEntryNVX where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkObjectTableEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableEntryNVX, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkObjectTableEntryNVX, flags}
 
-instance CanWriteField "flags" VkObjectTableEntryNVX where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkObjectTableEntryNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableEntryNVX, flags}
 
 instance Show VkObjectTableEntryNVX where
         showsPrec d x
           = showString "VkObjectTableEntryNVX {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkFlags = " . showsPrec d (vkFlags x) . showChar '}'
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableIndexBufferEntryNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableIndexBufferEntryNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableIndexBufferEntryNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableIndexBufferEntryNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTableIndexBufferEntryNVX
        (VkObjectTableIndexBufferEntryNVX(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX       (VkObjectEntryTypeNVX)
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
 import           Graphics.Vulkan.Types.Handles                         (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTableIndexBufferEntryNVX {
@@ -26,7 +26,7 @@
 --   >     VkIndexType                  indexType;
 --   > } VkObjectTableIndexBufferEntryNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTableIndexBufferEntryNVX.html VkObjectTableIndexBufferEntryNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTableIndexBufferEntryNVX.html VkObjectTableIndexBufferEntryNVX registry at www.khronos.org>
 data VkObjectTableIndexBufferEntryNVX = VkObjectTableIndexBufferEntryNVX## Addr##
                                                                           ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkObjectTableIndexBufferEntryNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkType VkObjectTableIndexBufferEntryNVX where
-        type VkTypeMType VkObjectTableIndexBufferEntryNVX =
-             VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkObjectTableIndexBufferEntryNVX, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
          HasField "type" VkObjectTableIndexBufferEntryNVX where
         type FieldType "type" VkObjectTableIndexBufferEntryNVX =
              VkObjectEntryTypeNVX
@@ -118,39 +96,22 @@
         fieldOffset
           = #{offset VkObjectTableIndexBufferEntryNVX, type}
 
-instance CanReadField "type" VkObjectTableIndexBufferEntryNVX where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkObjectTableIndexBufferEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkObjectTableIndexBufferEntryNVX where
-        type VkFlagsMType VkObjectTableIndexBufferEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "type" VkObjectTableIndexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkObjectTableIndexBufferEntryNVX, flags}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, type})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, type}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkObjectTableIndexBufferEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, type}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkObjectTableIndexBufferEntryNVX where
@@ -169,39 +130,22 @@
         fieldOffset
           = #{offset VkObjectTableIndexBufferEntryNVX, flags}
 
-instance CanReadField "flags" VkObjectTableIndexBufferEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkObjectTableIndexBufferEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkBuffer VkObjectTableIndexBufferEntryNVX where
-        type VkBufferMType VkObjectTableIndexBufferEntryNVX = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
+         CanReadField "flags" VkObjectTableIndexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkObjectTableIndexBufferEntryNVX, buffer}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, flags})
 
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, buffer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, flags}
 
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, buffer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkObjectTableIndexBufferEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkObjectTableIndexBufferEntryNVX where
@@ -220,40 +164,22 @@
         fieldOffset
           = #{offset VkObjectTableIndexBufferEntryNVX, buffer}
 
-instance CanReadField "buffer" VkObjectTableIndexBufferEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkBuffer
-
-instance CanWriteField "buffer" VkObjectTableIndexBufferEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
 instance {-# OVERLAPPING #-}
-         HasVkIndexType VkObjectTableIndexBufferEntryNVX where
-        type VkIndexTypeMType VkObjectTableIndexBufferEntryNVX =
-             VkIndexType
-
-        {-# NOINLINE vkIndexType #-}
-        vkIndexType x
+         CanReadField "buffer" VkObjectTableIndexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, indexType})
-
-        {-# INLINE vkIndexTypeByteOffset #-}
-        vkIndexTypeByteOffset ~_
-          = #{offset VkObjectTableIndexBufferEntryNVX, indexType}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, buffer})
 
-        {-# INLINE readVkIndexType #-}
-        readVkIndexType p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, indexType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, buffer}
 
-        {-# INLINE writeVkIndexType #-}
-        writeVkIndexType p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, indexType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkObjectTableIndexBufferEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, buffer}
 
 instance {-# OVERLAPPING #-}
          HasField "indexType" VkObjectTableIndexBufferEntryNVX where
@@ -273,30 +199,34 @@
         fieldOffset
           = #{offset VkObjectTableIndexBufferEntryNVX, indexType}
 
-instance CanReadField "indexType" VkObjectTableIndexBufferEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkIndexType
+instance {-# OVERLAPPING #-}
+         CanReadField "indexType" VkObjectTableIndexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, indexType})
 
         {-# INLINE readField #-}
-        readField = readVkIndexType
+        readField p
+          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, indexType}
 
-instance CanWriteField "indexType" VkObjectTableIndexBufferEntryNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "indexType" VkObjectTableIndexBufferEntryNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkIndexType
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, indexType}
 
 instance Show VkObjectTableIndexBufferEntryNVX where
         showsPrec d x
           = showString "VkObjectTableIndexBufferEntryNVX {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkFlags = " .
-                      showsPrec d (vkFlags x) .
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) .
                         showString ", " .
-                          showString "vkBuffer = " .
-                            showsPrec d (vkBuffer x) .
+                          showString "buffer = " .
+                            showsPrec d (getField @"buffer" x) .
                               showString ", " .
-                                showString "vkIndexType = " .
-                                  showsPrec d (vkIndexType x) . showChar '}'
+                                showString "indexType = " .
+                                  showsPrec d (getField @"indexType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePipelineEntryNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePipelineEntryNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePipelineEntryNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePipelineEntryNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTablePipelineEntryNVX
        (VkObjectTablePipelineEntryNVX(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX       (VkObjectEntryTypeNVX)
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
 import           Graphics.Vulkan.Types.Handles                         (VkPipeline)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTablePipelineEntryNVX {
@@ -24,7 +24,7 @@
 --   >     VkPipeline                   pipeline;
 --   > } VkObjectTablePipelineEntryNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTablePipelineEntryNVX.html VkObjectTablePipelineEntryNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTablePipelineEntryNVX.html VkObjectTablePipelineEntryNVX registry at www.khronos.org>
 data VkObjectTablePipelineEntryNVX = VkObjectTablePipelineEntryNVX## Addr##
                                                                     ByteArray##
 
@@ -78,28 +78,6 @@
         type StructExtends VkObjectTablePipelineEntryNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkType VkObjectTablePipelineEntryNVX where
-        type VkTypeMType VkObjectTablePipelineEntryNVX =
-             VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkObjectTablePipelineEntryNVX, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
          HasField "type" VkObjectTablePipelineEntryNVX where
         type FieldType "type" VkObjectTablePipelineEntryNVX =
              VkObjectEntryTypeNVX
@@ -115,38 +93,22 @@
         fieldOffset
           = #{offset VkObjectTablePipelineEntryNVX, type}
 
-instance CanReadField "type" VkObjectTablePipelineEntryNVX where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkObjectTablePipelineEntryNVX where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkObjectTablePipelineEntryNVX where
-        type VkFlagsMType VkObjectTablePipelineEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "type" VkObjectTablePipelineEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkObjectTablePipelineEntryNVX, flags}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, type})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, type}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkObjectTablePipelineEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, type}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkObjectTablePipelineEntryNVX where
@@ -164,37 +126,22 @@
         fieldOffset
           = #{offset VkObjectTablePipelineEntryNVX, flags}
 
-instance CanReadField "flags" VkObjectTablePipelineEntryNVX where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkObjectTablePipelineEntryNVX where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPipeline VkObjectTablePipelineEntryNVX where
-        type VkPipelineMType VkObjectTablePipelineEntryNVX = VkPipeline
-
-        {-# NOINLINE vkPipeline #-}
-        vkPipeline x
+         CanReadField "flags" VkObjectTablePipelineEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, pipeline})
-
-        {-# INLINE vkPipelineByteOffset #-}
-        vkPipelineByteOffset ~_
-          = #{offset VkObjectTablePipelineEntryNVX, pipeline}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, flags})
 
-        {-# INLINE readVkPipeline #-}
-        readVkPipeline p
-          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, pipeline}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, flags}
 
-        {-# INLINE writeVkPipeline #-}
-        writeVkPipeline p
-          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, pipeline}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkObjectTablePipelineEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pipeline" VkObjectTablePipelineEntryNVX where
@@ -213,27 +160,31 @@
         fieldOffset
           = #{offset VkObjectTablePipelineEntryNVX, pipeline}
 
-instance CanReadField "pipeline" VkObjectTablePipelineEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkPipeline
+instance {-# OVERLAPPING #-}
+         CanReadField "pipeline" VkObjectTablePipelineEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, pipeline})
 
         {-# INLINE readField #-}
-        readField = readVkPipeline
+        readField p
+          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, pipeline}
 
-instance CanWriteField "pipeline" VkObjectTablePipelineEntryNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipeline" VkObjectTablePipelineEntryNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkPipeline
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, pipeline}
 
 instance Show VkObjectTablePipelineEntryNVX where
         showsPrec d x
           = showString "VkObjectTablePipelineEntryNVX {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkFlags = " .
-                      showsPrec d (vkFlags x) .
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) .
                         showString ", " .
-                          showString "vkPipeline = " .
-                            showsPrec d (vkPipeline x) . showChar '}'
+                          showString "pipeline = " .
+                            showsPrec d (getField @"pipeline" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePushConstantEntryNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePushConstantEntryNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePushConstantEntryNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTablePushConstantEntryNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTablePushConstantEntryNVX
        (VkObjectTablePushConstantEntryNVX(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
 import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags         (VkShaderStageFlags)
 import           Graphics.Vulkan.Types.Handles                         (VkPipelineLayout)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTablePushConstantEntryNVX {
@@ -26,7 +26,7 @@
 --   >     VkShaderStageFlags           stageFlags;
 --   > } VkObjectTablePushConstantEntryNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTablePushConstantEntryNVX.html VkObjectTablePushConstantEntryNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTablePushConstantEntryNVX.html VkObjectTablePushConstantEntryNVX registry at www.khronos.org>
 data VkObjectTablePushConstantEntryNVX = VkObjectTablePushConstantEntryNVX## Addr##
                                                                             ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkObjectTablePushConstantEntryNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkType VkObjectTablePushConstantEntryNVX where
-        type VkTypeMType VkObjectTablePushConstantEntryNVX =
-             VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkObjectTablePushConstantEntryNVX, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
          HasField "type" VkObjectTablePushConstantEntryNVX where
         type FieldType "type" VkObjectTablePushConstantEntryNVX =
              VkObjectEntryTypeNVX
@@ -119,40 +97,22 @@
         fieldOffset
           = #{offset VkObjectTablePushConstantEntryNVX, type}
 
-instance CanReadField "type" VkObjectTablePushConstantEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkObjectTablePushConstantEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkObjectTablePushConstantEntryNVX where
-        type VkFlagsMType VkObjectTablePushConstantEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "type" VkObjectTablePushConstantEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkObjectTablePushConstantEntryNVX, flags}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, type})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, type}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkObjectTablePushConstantEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, type}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkObjectTablePushConstantEntryNVX where
@@ -172,40 +132,22 @@
         fieldOffset
           = #{offset VkObjectTablePushConstantEntryNVX, flags}
 
-instance CanReadField "flags" VkObjectTablePushConstantEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkObjectTablePushConstantEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPipelineLayout VkObjectTablePushConstantEntryNVX where
-        type VkPipelineLayoutMType VkObjectTablePushConstantEntryNVX =
-             VkPipelineLayout
-
-        {-# NOINLINE vkPipelineLayout #-}
-        vkPipelineLayout x
+         CanReadField "flags" VkObjectTablePushConstantEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout})
-
-        {-# INLINE vkPipelineLayoutByteOffset #-}
-        vkPipelineLayoutByteOffset ~_
-          = #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, flags})
 
-        {-# INLINE readVkPipelineLayout #-}
-        readVkPipelineLayout p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, flags}
 
-        {-# INLINE writeVkPipelineLayout #-}
-        writeVkPipelineLayout p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkObjectTablePushConstantEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineLayout" VkObjectTablePushConstantEntryNVX where
@@ -228,42 +170,24 @@
         fieldOffset
           = #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
 
-instance CanReadField "pipelineLayout"
-           VkObjectTablePushConstantEntryNVX
+instance {-# OVERLAPPING #-}
+         CanReadField "pipelineLayout" VkObjectTablePushConstantEntryNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPipelineLayout
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout})
 
         {-# INLINE readField #-}
-        readField = readVkPipelineLayout
+        readField p
+          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
 
-instance CanWriteField "pipelineLayout"
-           VkObjectTablePushConstantEntryNVX
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipelineLayout" VkObjectTablePushConstantEntryNVX
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPipelineLayout
-
-instance {-# OVERLAPPING #-}
-         HasVkStageFlags VkObjectTablePushConstantEntryNVX where
-        type VkStageFlagsMType VkObjectTablePushConstantEntryNVX =
-             VkShaderStageFlags
-
-        {-# NOINLINE vkStageFlags #-}
-        vkStageFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, stageFlags})
-
-        {-# INLINE vkStageFlagsByteOffset #-}
-        vkStageFlagsByteOffset ~_
-          = #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
-
-        {-# INLINE readVkStageFlags #-}
-        readVkStageFlags p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
-
-        {-# INLINE writeVkStageFlags #-}
-        writeVkStageFlags p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
 
 instance {-# OVERLAPPING #-}
          HasField "stageFlags" VkObjectTablePushConstantEntryNVX where
@@ -283,32 +207,34 @@
         fieldOffset
           = #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
 
-instance CanReadField "stageFlags"
-           VkObjectTablePushConstantEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkStageFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "stageFlags" VkObjectTablePushConstantEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, stageFlags})
 
         {-# INLINE readField #-}
-        readField = readVkStageFlags
+        readField p
+          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
 
-instance CanWriteField "stageFlags"
-           VkObjectTablePushConstantEntryNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "stageFlags" VkObjectTablePushConstantEntryNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkStageFlags
+        writeField p
+          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
 
 instance Show VkObjectTablePushConstantEntryNVX where
         showsPrec d x
           = showString "VkObjectTablePushConstantEntryNVX {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkFlags = " .
-                      showsPrec d (vkFlags x) .
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) .
                         showString ", " .
-                          showString "vkPipelineLayout = " .
-                            showsPrec d (vkPipelineLayout x) .
+                          showString "pipelineLayout = " .
+                            showsPrec d (getField @"pipelineLayout" x) .
                               showString ", " .
-                                showString "vkStageFlags = " .
-                                  showsPrec d (vkStageFlags x) . showChar '}'
+                                showString "stageFlags = " .
+                                  showsPrec d (getField @"stageFlags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableVertexBufferEntryNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableVertexBufferEntryNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableVertexBufferEntryNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkObjectTableVertexBufferEntryNVX.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkObjectTableVertexBufferEntryNVX
        (VkObjectTableVertexBufferEntryNVX(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX       (VkObjectEntryTypeNVX)
 import           Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX (VkObjectEntryUsageFlagsNVX)
 import           Graphics.Vulkan.Types.Handles                         (VkBuffer)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkObjectTableVertexBufferEntryNVX {
@@ -24,7 +24,7 @@
 --   >     VkBuffer                     buffer;
 --   > } VkObjectTableVertexBufferEntryNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkObjectTableVertexBufferEntryNVX.html VkObjectTableVertexBufferEntryNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectTableVertexBufferEntryNVX.html VkObjectTableVertexBufferEntryNVX registry at www.khronos.org>
 data VkObjectTableVertexBufferEntryNVX = VkObjectTableVertexBufferEntryNVX## Addr##
                                                                             ByteArray##
 
@@ -79,28 +79,6 @@
         type StructExtends VkObjectTableVertexBufferEntryNVX = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkType VkObjectTableVertexBufferEntryNVX where
-        type VkTypeMType VkObjectTableVertexBufferEntryNVX =
-             VkObjectEntryTypeNVX
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkObjectTableVertexBufferEntryNVX, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
          HasField "type" VkObjectTableVertexBufferEntryNVX where
         type FieldType "type" VkObjectTableVertexBufferEntryNVX =
              VkObjectEntryTypeNVX
@@ -117,40 +95,22 @@
         fieldOffset
           = #{offset VkObjectTableVertexBufferEntryNVX, type}
 
-instance CanReadField "type" VkObjectTableVertexBufferEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkObjectTableVertexBufferEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkObjectTableVertexBufferEntryNVX where
-        type VkFlagsMType VkObjectTableVertexBufferEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "type" VkObjectTableVertexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkObjectTableVertexBufferEntryNVX, flags}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, type})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, type}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "type" VkObjectTableVertexBufferEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, type}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkObjectTableVertexBufferEntryNVX where
@@ -170,39 +130,22 @@
         fieldOffset
           = #{offset VkObjectTableVertexBufferEntryNVX, flags}
 
-instance CanReadField "flags" VkObjectTableVertexBufferEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkObjectTableVertexBufferEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkBuffer VkObjectTableVertexBufferEntryNVX where
-        type VkBufferMType VkObjectTableVertexBufferEntryNVX = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
+         CanReadField "flags" VkObjectTableVertexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkObjectTableVertexBufferEntryNVX, buffer}
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, flags})
 
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, buffer}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, flags}
 
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, buffer}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkObjectTableVertexBufferEntryNVX where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "buffer" VkObjectTableVertexBufferEntryNVX where
@@ -222,26 +165,31 @@
         fieldOffset
           = #{offset VkObjectTableVertexBufferEntryNVX, buffer}
 
-instance CanReadField "buffer" VkObjectTableVertexBufferEntryNVX
-         where
-        {-# INLINE getField #-}
-        getField = vkBuffer
+instance {-# OVERLAPPING #-}
+         CanReadField "buffer" VkObjectTableVertexBufferEntryNVX where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, buffer})
 
         {-# INLINE readField #-}
-        readField = readVkBuffer
+        readField p
+          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, buffer}
 
-instance CanWriteField "buffer" VkObjectTableVertexBufferEntryNVX
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkObjectTableVertexBufferEntryNVX where
         {-# INLINE writeField #-}
-        writeField = writeVkBuffer
+        writeField p
+          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, buffer}
 
 instance Show VkObjectTableVertexBufferEntryNVX where
         showsPrec d x
           = showString "VkObjectTableVertexBufferEntryNVX {" .
-              showString "vkType = " .
-                showsPrec d (vkType x) .
+              showString "type = " .
+                showsPrec d (getField @"type" x) .
                   showString ", " .
-                    showString "vkFlags = " .
-                      showsPrec d (vkFlags x) .
+                    showString "flags = " .
+                      showsPrec d (getField @"flags" x) .
                         showString ", " .
-                          showString "vkBuffer = " . showsPrec d (vkBuffer x) . showChar '}'
+                          showString "buffer = " .
+                            showsPrec d (getField @"buffer" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkOffset2D.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkOffset2D.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkOffset2D.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkOffset2D.hsc
@@ -5,22 +5,22 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkOffset2D (VkOffset2D(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkOffset2D {
 --   >     int32_t        x;
 --   >     int32_t        y;
 --   > } VkOffset2D;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkOffset2D.html VkOffset2D registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkOffset2D.html VkOffset2D registry at www.khronos.org>
 data VkOffset2D = VkOffset2D## Addr## ByteArray##
 
 instance Eq VkOffset2D where
@@ -67,23 +67,6 @@
         type ReturnedOnly VkOffset2D = 'False -- ' closing tick for hsc2hs
         type StructExtends VkOffset2D = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkOffset2D where
-        type VkXMType VkOffset2D = Int32
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset2D, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_ = #{offset VkOffset2D, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p = peekByteOff p #{offset VkOffset2D, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p = pokeByteOff p #{offset VkOffset2D, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkOffset2D where
         type FieldType "x" VkOffset2D = Int32
         type FieldOptional "x" VkOffset2D = 'False -- ' closing tick for hsc2hs
@@ -97,33 +80,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkOffset2D, x}
 
-instance CanReadField "x" VkOffset2D where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-} CanReadField "x" VkOffset2D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkOffset2D, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p = peekByteOff p #{offset VkOffset2D, x}
 
-instance CanWriteField "x" VkOffset2D where
+instance {-# OVERLAPPING #-} CanWriteField "x" VkOffset2D where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkOffset2D where
-        type VkYMType VkOffset2D = Int32
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset2D, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_ = #{offset VkOffset2D, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p = peekByteOff p #{offset VkOffset2D, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p = pokeByteOff p #{offset VkOffset2D, y}
+        writeField p = pokeByteOff p #{offset VkOffset2D, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkOffset2D where
         type FieldType "y" VkOffset2D = Int32
@@ -138,21 +106,23 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkOffset2D, y}
 
-instance CanReadField "y" VkOffset2D where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-} CanReadField "y" VkOffset2D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkOffset2D, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p = peekByteOff p #{offset VkOffset2D, y}
 
-instance CanWriteField "y" VkOffset2D where
+instance {-# OVERLAPPING #-} CanWriteField "y" VkOffset2D where
         {-# INLINE writeField #-}
-        writeField = writeVkY
+        writeField p = pokeByteOff p #{offset VkOffset2D, y}
 
 instance Show VkOffset2D where
         showsPrec d x
           = showString "VkOffset2D {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " . showsPrec d (vkY x) . showChar '}'
+                    showString "y = " . showsPrec d (getField @"y" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkOffset3D.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkOffset3D.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkOffset3D.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkOffset3D.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkOffset3D (VkOffset3D(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkOffset3D {
 --   >     int32_t        x;
@@ -21,7 +21,7 @@
 --   >     int32_t        z;
 --   > } VkOffset3D;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkOffset3D.html VkOffset3D registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkOffset3D.html VkOffset3D registry at www.khronos.org>
 data VkOffset3D = VkOffset3D## Addr## ByteArray##
 
 instance Eq VkOffset3D where
@@ -68,23 +68,6 @@
         type ReturnedOnly VkOffset3D = 'False -- ' closing tick for hsc2hs
         type StructExtends VkOffset3D = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkOffset3D where
-        type VkXMType VkOffset3D = Int32
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset3D, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_ = #{offset VkOffset3D, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p = peekByteOff p #{offset VkOffset3D, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p = pokeByteOff p #{offset VkOffset3D, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkOffset3D where
         type FieldType "x" VkOffset3D = Int32
         type FieldOptional "x" VkOffset3D = 'False -- ' closing tick for hsc2hs
@@ -98,33 +81,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkOffset3D, x}
 
-instance CanReadField "x" VkOffset3D where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-} CanReadField "x" VkOffset3D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkOffset3D, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p = peekByteOff p #{offset VkOffset3D, x}
 
-instance CanWriteField "x" VkOffset3D where
+instance {-# OVERLAPPING #-} CanWriteField "x" VkOffset3D where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkOffset3D where
-        type VkYMType VkOffset3D = Int32
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset3D, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_ = #{offset VkOffset3D, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p = peekByteOff p #{offset VkOffset3D, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p = pokeByteOff p #{offset VkOffset3D, y}
+        writeField p = pokeByteOff p #{offset VkOffset3D, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkOffset3D where
         type FieldType "y" VkOffset3D = Int32
@@ -139,33 +107,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkOffset3D, y}
 
-instance CanReadField "y" VkOffset3D where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-} CanReadField "y" VkOffset3D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkOffset3D, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p = peekByteOff p #{offset VkOffset3D, y}
 
-instance CanWriteField "y" VkOffset3D where
+instance {-# OVERLAPPING #-} CanWriteField "y" VkOffset3D where
         {-# INLINE writeField #-}
-        writeField = writeVkY
-
-instance {-# OVERLAPPING #-} HasVkZ VkOffset3D where
-        type VkZMType VkOffset3D = Int32
-
-        {-# NOINLINE vkZ #-}
-        vkZ x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset3D, z})
-
-        {-# INLINE vkZByteOffset #-}
-        vkZByteOffset ~_ = #{offset VkOffset3D, z}
-
-        {-# INLINE readVkZ #-}
-        readVkZ p = peekByteOff p #{offset VkOffset3D, z}
-
-        {-# INLINE writeVkZ #-}
-        writeVkZ p = pokeByteOff p #{offset VkOffset3D, z}
+        writeField p = pokeByteOff p #{offset VkOffset3D, y}
 
 instance {-# OVERLAPPING #-} HasField "z" VkOffset3D where
         type FieldType "z" VkOffset3D = Int32
@@ -180,24 +133,26 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkOffset3D, z}
 
-instance CanReadField "z" VkOffset3D where
-        {-# INLINE getField #-}
-        getField = vkZ
+instance {-# OVERLAPPING #-} CanReadField "z" VkOffset3D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkOffset3D, z})
 
         {-# INLINE readField #-}
-        readField = readVkZ
+        readField p = peekByteOff p #{offset VkOffset3D, z}
 
-instance CanWriteField "z" VkOffset3D where
+instance {-# OVERLAPPING #-} CanWriteField "z" VkOffset3D where
         {-# INLINE writeField #-}
-        writeField = writeVkZ
+        writeField p = pokeByteOff p #{offset VkOffset3D, z}
 
 instance Show VkOffset3D where
         showsPrec d x
           = showString "VkOffset3D {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " .
-                      showsPrec d (vkY x) .
+                    showString "y = " .
+                      showsPrec d (getField @"y" x) .
                         showString ", " .
-                          showString "vkZ = " . showsPrec d (vkZ x) . showChar '}'
+                          showString "z = " . showsPrec d (getField @"z" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPastPresentationTimingGOOGLE.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPastPresentationTimingGOOGLE.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPastPresentationTimingGOOGLE.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPastPresentationTimingGOOGLE.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPastPresentationTimingGOOGLE
        (VkPastPresentationTimingGOOGLE(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPastPresentationTimingGOOGLE {
 --   >     uint32_t                         presentID;
@@ -23,7 +23,7 @@
 --   >     uint64_t                         presentMargin;
 --   > } VkPastPresentationTimingGOOGLE;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPastPresentationTimingGOOGLE.html VkPastPresentationTimingGOOGLE registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPastPresentationTimingGOOGLE.html VkPastPresentationTimingGOOGLE registry at www.khronos.org>
 data VkPastPresentationTimingGOOGLE = VkPastPresentationTimingGOOGLE## Addr##
                                                                       ByteArray##
 
@@ -78,27 +78,6 @@
         type StructExtends VkPastPresentationTimingGOOGLE = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkPresentID VkPastPresentationTimingGOOGLE where
-        type VkPresentIDMType VkPastPresentationTimingGOOGLE = Word32
-
-        {-# NOINLINE vkPresentID #-}
-        vkPresentID x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, presentID})
-
-        {-# INLINE vkPresentIDByteOffset #-}
-        vkPresentIDByteOffset ~_
-          = #{offset VkPastPresentationTimingGOOGLE, presentID}
-
-        {-# INLINE readVkPresentID #-}
-        readVkPresentID p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, presentID}
-
-        {-# INLINE writeVkPresentID #-}
-        writeVkPresentID p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
          HasField "presentID" VkPastPresentationTimingGOOGLE where
         type FieldType "presentID" VkPastPresentationTimingGOOGLE = Word32
         type FieldOptional "presentID" VkPastPresentationTimingGOOGLE =
@@ -115,40 +94,22 @@
         fieldOffset
           = #{offset VkPastPresentationTimingGOOGLE, presentID}
 
-instance CanReadField "presentID" VkPastPresentationTimingGOOGLE
-         where
-        {-# INLINE getField #-}
-        getField = vkPresentID
-
-        {-# INLINE readField #-}
-        readField = readVkPresentID
-
-instance CanWriteField "presentID" VkPastPresentationTimingGOOGLE
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPresentID
-
 instance {-# OVERLAPPING #-}
-         HasVkDesiredPresentTime VkPastPresentationTimingGOOGLE where
-        type VkDesiredPresentTimeMType VkPastPresentationTimingGOOGLE =
-             Word64
-
-        {-# NOINLINE vkDesiredPresentTime #-}
-        vkDesiredPresentTime x
+         CanReadField "presentID" VkPastPresentationTimingGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime})
-
-        {-# INLINE vkDesiredPresentTimeByteOffset #-}
-        vkDesiredPresentTimeByteOffset ~_
-          = #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
+              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, presentID})
 
-        {-# INLINE readVkDesiredPresentTime #-}
-        readVkDesiredPresentTime p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, presentID}
 
-        {-# INLINE writeVkDesiredPresentTime #-}
-        writeVkDesiredPresentTime p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
+instance {-# OVERLAPPING #-}
+         CanWriteField "presentID" VkPastPresentationTimingGOOGLE where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, presentID}
 
 instance {-# OVERLAPPING #-}
          HasField "desiredPresentTime" VkPastPresentationTimingGOOGLE where
@@ -172,42 +133,24 @@
         fieldOffset
           = #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
 
-instance CanReadField "desiredPresentTime"
-           VkPastPresentationTimingGOOGLE
+instance {-# OVERLAPPING #-}
+         CanReadField "desiredPresentTime" VkPastPresentationTimingGOOGLE
          where
-        {-# INLINE getField #-}
-        getField = vkDesiredPresentTime
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime})
 
         {-# INLINE readField #-}
-        readField = readVkDesiredPresentTime
+        readField p
+          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
 
-instance CanWriteField "desiredPresentTime"
-           VkPastPresentationTimingGOOGLE
+instance {-# OVERLAPPING #-}
+         CanWriteField "desiredPresentTime" VkPastPresentationTimingGOOGLE
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDesiredPresentTime
-
-instance {-# OVERLAPPING #-}
-         HasVkActualPresentTime VkPastPresentationTimingGOOGLE where
-        type VkActualPresentTimeMType VkPastPresentationTimingGOOGLE =
-             Word64
-
-        {-# NOINLINE vkActualPresentTime #-}
-        vkActualPresentTime x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, actualPresentTime})
-
-        {-# INLINE vkActualPresentTimeByteOffset #-}
-        vkActualPresentTimeByteOffset ~_
-          = #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
-
-        {-# INLINE readVkActualPresentTime #-}
-        readVkActualPresentTime p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
-
-        {-# INLINE writeVkActualPresentTime #-}
-        writeVkActualPresentTime p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
+        writeField p
+          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
 
 instance {-# OVERLAPPING #-}
          HasField "actualPresentTime" VkPastPresentationTimingGOOGLE where
@@ -230,42 +173,24 @@
         fieldOffset
           = #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
 
-instance CanReadField "actualPresentTime"
-           VkPastPresentationTimingGOOGLE
+instance {-# OVERLAPPING #-}
+         CanReadField "actualPresentTime" VkPastPresentationTimingGOOGLE
          where
-        {-# INLINE getField #-}
-        getField = vkActualPresentTime
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, actualPresentTime})
 
         {-# INLINE readField #-}
-        readField = readVkActualPresentTime
+        readField p
+          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
 
-instance CanWriteField "actualPresentTime"
-           VkPastPresentationTimingGOOGLE
+instance {-# OVERLAPPING #-}
+         CanWriteField "actualPresentTime" VkPastPresentationTimingGOOGLE
          where
         {-# INLINE writeField #-}
-        writeField = writeVkActualPresentTime
-
-instance {-# OVERLAPPING #-}
-         HasVkEarliestPresentTime VkPastPresentationTimingGOOGLE where
-        type VkEarliestPresentTimeMType VkPastPresentationTimingGOOGLE =
-             Word64
-
-        {-# NOINLINE vkEarliestPresentTime #-}
-        vkEarliestPresentTime x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime})
-
-        {-# INLINE vkEarliestPresentTimeByteOffset #-}
-        vkEarliestPresentTimeByteOffset ~_
-          = #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
-
-        {-# INLINE readVkEarliestPresentTime #-}
-        readVkEarliestPresentTime p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
-
-        {-# INLINE writeVkEarliestPresentTime #-}
-        writeVkEarliestPresentTime p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
+        writeField p
+          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
 
 instance {-# OVERLAPPING #-}
          HasField "earliestPresentTime" VkPastPresentationTimingGOOGLE where
@@ -289,41 +214,24 @@
         fieldOffset
           = #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
 
-instance CanReadField "earliestPresentTime"
-           VkPastPresentationTimingGOOGLE
+instance {-# OVERLAPPING #-}
+         CanReadField "earliestPresentTime" VkPastPresentationTimingGOOGLE
          where
-        {-# INLINE getField #-}
-        getField = vkEarliestPresentTime
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime})
 
         {-# INLINE readField #-}
-        readField = readVkEarliestPresentTime
+        readField p
+          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
 
-instance CanWriteField "earliestPresentTime"
-           VkPastPresentationTimingGOOGLE
+instance {-# OVERLAPPING #-}
+         CanWriteField "earliestPresentTime" VkPastPresentationTimingGOOGLE
          where
         {-# INLINE writeField #-}
-        writeField = writeVkEarliestPresentTime
-
-instance {-# OVERLAPPING #-}
-         HasVkPresentMargin VkPastPresentationTimingGOOGLE where
-        type VkPresentMarginMType VkPastPresentationTimingGOOGLE = Word64
-
-        {-# NOINLINE vkPresentMargin #-}
-        vkPresentMargin x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, presentMargin})
-
-        {-# INLINE vkPresentMarginByteOffset #-}
-        vkPresentMarginByteOffset ~_
-          = #{offset VkPastPresentationTimingGOOGLE, presentMargin}
-
-        {-# INLINE readVkPresentMargin #-}
-        readVkPresentMargin p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, presentMargin}
-
-        {-# INLINE writeVkPresentMargin #-}
-        writeVkPresentMargin p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, presentMargin}
+        writeField p
+          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
 
 instance {-# OVERLAPPING #-}
          HasField "presentMargin" VkPastPresentationTimingGOOGLE where
@@ -343,35 +251,37 @@
         fieldOffset
           = #{offset VkPastPresentationTimingGOOGLE, presentMargin}
 
-instance CanReadField "presentMargin"
-           VkPastPresentationTimingGOOGLE
-         where
-        {-# INLINE getField #-}
-        getField = vkPresentMargin
+instance {-# OVERLAPPING #-}
+         CanReadField "presentMargin" VkPastPresentationTimingGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, presentMargin})
 
         {-# INLINE readField #-}
-        readField = readVkPresentMargin
+        readField p
+          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, presentMargin}
 
-instance CanWriteField "presentMargin"
-           VkPastPresentationTimingGOOGLE
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "presentMargin" VkPastPresentationTimingGOOGLE where
         {-# INLINE writeField #-}
-        writeField = writeVkPresentMargin
+        writeField p
+          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, presentMargin}
 
 instance Show VkPastPresentationTimingGOOGLE where
         showsPrec d x
           = showString "VkPastPresentationTimingGOOGLE {" .
-              showString "vkPresentID = " .
-                showsPrec d (vkPresentID x) .
+              showString "presentID = " .
+                showsPrec d (getField @"presentID" x) .
                   showString ", " .
-                    showString "vkDesiredPresentTime = " .
-                      showsPrec d (vkDesiredPresentTime x) .
+                    showString "desiredPresentTime = " .
+                      showsPrec d (getField @"desiredPresentTime" x) .
                         showString ", " .
-                          showString "vkActualPresentTime = " .
-                            showsPrec d (vkActualPresentTime x) .
+                          showString "actualPresentTime = " .
+                            showsPrec d (getField @"actualPresentTime" x) .
                               showString ", " .
-                                showString "vkEarliestPresentTime = " .
-                                  showsPrec d (vkEarliestPresentTime x) .
+                                showString "earliestPresentTime = " .
+                                  showsPrec d (getField @"earliestPresentTime" x) .
                                     showString ", " .
-                                      showString "vkPresentMargin = " .
-                                        showsPrec d (vkPresentMargin x) . showChar '}'
+                                      showString "presentMargin = " .
+                                        showsPrec d (getField @"presentMargin" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeatures.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeatures.hsc
@@ -0,0 +1,364 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeatures
+       (VkPhysicalDevice16BitStorageFeatures(..)) where
+import           Foreign.Storable                                       (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo        (VkDeviceCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+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/man/html/VkPhysicalDevice16BitStorageFeatures.html VkPhysicalDevice16BitStorageFeatures registry at www.khronos.org>
+data VkPhysicalDevice16BitStorageFeatures = VkPhysicalDevice16BitStorageFeatures## Addr##
+                                                                                  ByteArray##
+
+instance Eq VkPhysicalDevice16BitStorageFeatures where
+        (VkPhysicalDevice16BitStorageFeatures## a _) ==
+          x@(VkPhysicalDevice16BitStorageFeatures## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDevice16BitStorageFeatures where
+        (VkPhysicalDevice16BitStorageFeatures## a _) `compare`
+          x@(VkPhysicalDevice16BitStorageFeatures## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDevice16BitStorageFeatures
+         where
+        unsafeAddr (VkPhysicalDevice16BitStorageFeatures## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDevice16BitStorageFeatures## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDevice16BitStorageFeatures##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeaturesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeaturesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeaturesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeaturesKHR
+       (VkPhysicalDevice16BitStorageFeatures(..),
+        VkPhysicalDevice16BitStorageFeaturesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeatures
+                                                                                    (VkPhysicalDevice16BitStorageFeatures (..))
+
+-- | Alias for `VkPhysicalDevice16BitStorageFeatures`
+type VkPhysicalDevice16BitStorageFeaturesKHR =
+     VkPhysicalDevice16BitStorageFeatures
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeaturesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeaturesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevice16BitStorageFeaturesKHR.hsc
+++ /dev/null
@@ -1,478 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeaturesKHR
-       (VkPhysicalDevice16BitStorageFeaturesKHR(..)) where
-import           Foreign.Storable                                          (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                           (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo           (VkDeviceCreateInfo)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR (VkPhysicalDeviceFeatures2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDevice16BitStorageFeaturesKHR {
---   >     VkStructureType sType;
---   >     void*      pNext;
---   >     VkBool32                         storageBuffer16BitAccess;
---   >     VkBool32                         uniformAndStorageBuffer16BitAccess;
---   >     VkBool32                         storagePushConstant16;
---   >     VkBool32                         storageInputOutput16;
---   > } VkPhysicalDevice16BitStorageFeaturesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html VkPhysicalDevice16BitStorageFeaturesKHR registry at www.khronos.org>
-data VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeaturesKHR## Addr##
-                                                                                        ByteArray##
-
-instance Eq VkPhysicalDevice16BitStorageFeaturesKHR where
-        (VkPhysicalDevice16BitStorageFeaturesKHR## a _) ==
-          x@(VkPhysicalDevice16BitStorageFeaturesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDevice16BitStorageFeaturesKHR where
-        (VkPhysicalDevice16BitStorageFeaturesKHR## a _) `compare`
-          x@(VkPhysicalDevice16BitStorageFeaturesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDevice16BitStorageFeaturesKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDevice16BitStorageFeaturesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDevice16BitStorageFeaturesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        unsafeAddr (VkPhysicalDevice16BitStorageFeaturesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDevice16BitStorageFeaturesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDevice16BitStorageFeaturesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type StructFields VkPhysicalDevice16BitStorageFeaturesKHR =
-             '["sType", "pNext", "storageBuffer16BitAccess", -- ' closing tick for hsc2hs
-               "uniformAndStorageBuffer16BitAccess", "storagePushConstant16",
-               "storageInputOutput16"]
-        type CUnionType VkPhysicalDevice16BitStorageFeaturesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDevice16BitStorageFeaturesKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDevice16BitStorageFeaturesKHR =
-             '[VkPhysicalDeviceFeatures2KHR, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDevice16BitStorageFeaturesKHR where
-        type VkSTypeMType VkPhysicalDevice16BitStorageFeaturesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeaturesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDevice16BitStorageFeaturesKHR where
-        type FieldType "sType" VkPhysicalDevice16BitStorageFeaturesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDevice16BitStorageFeaturesKHR =
-             #{offset VkPhysicalDevice16BitStorageFeaturesKHR, sType}
-        type FieldIsArray "sType" VkPhysicalDevice16BitStorageFeaturesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDevice16BitStorageFeaturesKHR where
-        type VkPNextMType VkPhysicalDevice16BitStorageFeaturesKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeaturesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDevice16BitStorageFeaturesKHR where
-        type FieldType "pNext" VkPhysicalDevice16BitStorageFeaturesKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDevice16BitStorageFeaturesKHR =
-             #{offset VkPhysicalDevice16BitStorageFeaturesKHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDevice16BitStorageFeaturesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkStorageBuffer16BitAccess
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type VkStorageBuffer16BitAccessMType
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkStorageBuffer16BitAccess #-}
-        vkStorageBuffer16BitAccess x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageBuffer16BitAccess})
-
-        {-# INLINE vkStorageBuffer16BitAccessByteOffset #-}
-        vkStorageBuffer16BitAccessByteOffset ~_
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageBuffer16BitAccess}
-
-        {-# INLINE readVkStorageBuffer16BitAccess #-}
-        readVkStorageBuffer16BitAccess p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageBuffer16BitAccess}
-
-        {-# INLINE writeVkStorageBuffer16BitAccess #-}
-        writeVkStorageBuffer16BitAccess p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "storageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type FieldType "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-        type FieldOptional "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             =
-             #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageBuffer16BitAccess}
-        type FieldIsArray "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageBuffer16BitAccess}
-
-instance CanReadField "storageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkStorageBuffer16BitAccess
-
-        {-# INLINE readField #-}
-        readField = readVkStorageBuffer16BitAccess
-
-instance CanWriteField "storageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStorageBuffer16BitAccess
-
-instance {-# OVERLAPPING #-}
-         HasVkUniformAndStorageBuffer16BitAccess
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type VkUniformAndStorageBuffer16BitAccessMType
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkUniformAndStorageBuffer16BitAccess #-}
-        vkUniformAndStorageBuffer16BitAccess x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeaturesKHR, uniformAndStorageBuffer16BitAccess})
-
-        {-# INLINE vkUniformAndStorageBuffer16BitAccessByteOffset #-}
-        vkUniformAndStorageBuffer16BitAccessByteOffset ~_
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, uniformAndStorageBuffer16BitAccess}
-
-        {-# INLINE readVkUniformAndStorageBuffer16BitAccess #-}
-        readVkUniformAndStorageBuffer16BitAccess p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, uniformAndStorageBuffer16BitAccess}
-
-        {-# INLINE writeVkUniformAndStorageBuffer16BitAccess #-}
-        writeVkUniformAndStorageBuffer16BitAccess p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, uniformAndStorageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "uniformAndStorageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type FieldType "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-        type FieldOptional "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             =
-             #{offset VkPhysicalDevice16BitStorageFeaturesKHR, uniformAndStorageBuffer16BitAccess}
-        type FieldIsArray "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, uniformAndStorageBuffer16BitAccess}
-
-instance CanReadField "uniformAndStorageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkUniformAndStorageBuffer16BitAccess
-
-        {-# INLINE readField #-}
-        readField = readVkUniformAndStorageBuffer16BitAccess
-
-instance CanWriteField "uniformAndStorageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkUniformAndStorageBuffer16BitAccess
-
-instance {-# OVERLAPPING #-}
-         HasVkStoragePushConstant16 VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type VkStoragePushConstant16MType
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkStoragePushConstant16 #-}
-        vkStoragePushConstant16 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storagePushConstant16})
-
-        {-# INLINE vkStoragePushConstant16ByteOffset #-}
-        vkStoragePushConstant16ByteOffset ~_
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storagePushConstant16}
-
-        {-# INLINE readVkStoragePushConstant16 #-}
-        readVkStoragePushConstant16 p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storagePushConstant16}
-
-        {-# INLINE writeVkStoragePushConstant16 #-}
-        writeVkStoragePushConstant16 p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storagePushConstant16}
-
-instance {-# OVERLAPPING #-}
-         HasField "storagePushConstant16"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type FieldType "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-        type FieldOptional "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             =
-             #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storagePushConstant16}
-        type FieldIsArray "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storagePushConstant16}
-
-instance CanReadField "storagePushConstant16"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkStoragePushConstant16
-
-        {-# INLINE readField #-}
-        readField = readVkStoragePushConstant16
-
-instance CanWriteField "storagePushConstant16"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStoragePushConstant16
-
-instance {-# OVERLAPPING #-}
-         HasVkStorageInputOutput16 VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type VkStorageInputOutput16MType
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkStorageInputOutput16 #-}
-        vkStorageInputOutput16 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageInputOutput16})
-
-        {-# INLINE vkStorageInputOutput16ByteOffset #-}
-        vkStorageInputOutput16ByteOffset ~_
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageInputOutput16}
-
-        {-# INLINE readVkStorageInputOutput16 #-}
-        readVkStorageInputOutput16 p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageInputOutput16}
-
-        {-# INLINE writeVkStorageInputOutput16 #-}
-        writeVkStorageInputOutput16 p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageInputOutput16}
-
-instance {-# OVERLAPPING #-}
-         HasField "storageInputOutput16"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        type FieldType "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = VkBool32
-        type FieldOptional "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             =
-             #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageInputOutput16}
-        type FieldIsArray "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeaturesKHR, storageInputOutput16}
-
-instance CanReadField "storageInputOutput16"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkStorageInputOutput16
-
-        {-# INLINE readField #-}
-        readField = readVkStorageInputOutput16
-
-instance CanWriteField "storageInputOutput16"
-           VkPhysicalDevice16BitStorageFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStorageInputOutput16
-
-instance Show VkPhysicalDevice16BitStorageFeaturesKHR where
-        showsPrec d x
-          = showString "VkPhysicalDevice16BitStorageFeaturesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkStorageBuffer16BitAccess = " .
-                            showsPrec d (vkStorageBuffer16BitAccess x) .
-                              showString ", " .
-                                showString "vkUniformAndStorageBuffer16BitAccess = " .
-                                  showsPrec d (vkUniformAndStorageBuffer16BitAccess x) .
-                                    showString ", " .
-                                      showString "vkStoragePushConstant16 = " .
-                                        showsPrec d (vkStoragePushConstant16 x) .
-                                          showString ", " .
-                                            showString "vkStorageInputOutput16 = " .
-                                              showsPrec d (vkStorageInputOutput16 x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
        (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(..)) where
-import           Foreign.Storable                                          (Storable (..))
+import           Foreign.Storable                                       (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                           (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR (VkPhysicalDeviceFeatures2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
 --   >     VkStructureType sType;
@@ -24,7 +24,7 @@
 --   >     VkBool32                         advancedBlendCoherentOperations;
 --   > } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT registry at www.khronos.org>
 data VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT## Addr##
                                                                                                             ByteArray##
 
@@ -89,29 +89,7 @@
              = 'False -- ' closing tick for hsc2hs
         type StructExtends
                VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = '[VkPhysicalDeviceFeatures2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT where
-        type VkSTypeMType VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
+             = '[VkPhysicalDeviceFeatures2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
@@ -137,42 +115,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
 
-instance CanWriteField "sType"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType"
            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT where
-        type VkPNextMType VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
@@ -198,45 +160,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendCoherentOperations
+         CanWriteField "pNext"
            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
-        type VkAdvancedBlendCoherentOperationsMType
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = VkBool32
-
-        {-# NOINLINE vkAdvancedBlendCoherentOperations #-}
-        vkAdvancedBlendCoherentOperations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations})
-
-        {-# INLINE vkAdvancedBlendCoherentOperationsByteOffset #-}
-        vkAdvancedBlendCoherentOperationsByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
-
-        {-# INLINE readVkAdvancedBlendCoherentOperations #-}
-        readVkAdvancedBlendCoherentOperations p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
-
-        {-# INLINE writeVkAdvancedBlendCoherentOperations #-}
-        writeVkAdvancedBlendCoherentOperations p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendCoherentOperations"
@@ -263,31 +206,38 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
 
-instance CanReadField "advancedBlendCoherentOperations"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendCoherentOperations"
            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendCoherentOperations
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendCoherentOperations
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
 
-instance CanWriteField "advancedBlendCoherentOperations"
+instance {-# OVERLAPPING #-}
+         CanWriteField "advancedBlendCoherentOperations"
            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAdvancedBlendCoherentOperations
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
 
 instance Show VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
          where
         showsPrec d x
           = showString "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {"
               .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkAdvancedBlendCoherentOperations = " .
-                            showsPrec d (vkAdvancedBlendCoherentOperations x) . showChar '}'
+                          showString "advancedBlendCoherentOperations = " .
+                            showsPrec d (getField @"advancedBlendCoherentOperations" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
        (VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
 --   >     VkStructureType sType;
@@ -29,7 +29,7 @@
 --   >     VkBool32                         advancedBlendAllOperations;
 --   > } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT registry at www.khronos.org>
 data VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT## Addr##
                                                                                                                 ByteArray##
 
@@ -104,31 +104,7 @@
              = 'True -- ' closing tick for hsc2hs
         type StructExtends
                VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type VkSTypeMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
+             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType"
@@ -155,38 +131,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
+         CanWriteField "sType"
+           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkPNextMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext"
@@ -213,39 +177,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendMaxColorAttachments
+         CanWriteField "pNext"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkAdvancedBlendMaxColorAttachmentsMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = Word32
-
-        {-# NOINLINE vkAdvancedBlendMaxColorAttachments #-}
-        vkAdvancedBlendMaxColorAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments})
-
-        {-# INLINE vkAdvancedBlendMaxColorAttachmentsByteOffset #-}
-        vkAdvancedBlendMaxColorAttachmentsByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
-
-        {-# INLINE readVkAdvancedBlendMaxColorAttachments #-}
-        readVkAdvancedBlendMaxColorAttachments p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
-
-        {-# INLINE writeVkAdvancedBlendMaxColorAttachments #-}
-        writeVkAdvancedBlendMaxColorAttachments p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendMaxColorAttachments"
@@ -272,39 +223,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
 
-instance CanReadField "advancedBlendMaxColorAttachments"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendMaxColorAttachments"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendMaxColorAttachments
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendMaxColorAttachments
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendIndependentBlend
+         CanWriteField "advancedBlendMaxColorAttachments"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkAdvancedBlendIndependentBlendMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkAdvancedBlendIndependentBlend #-}
-        vkAdvancedBlendIndependentBlend x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend})
-
-        {-# INLINE vkAdvancedBlendIndependentBlendByteOffset #-}
-        vkAdvancedBlendIndependentBlendByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
-
-        {-# INLINE readVkAdvancedBlendIndependentBlend #-}
-        readVkAdvancedBlendIndependentBlend p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
-
-        {-# INLINE writeVkAdvancedBlendIndependentBlend #-}
-        writeVkAdvancedBlendIndependentBlend p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendIndependentBlend"
@@ -331,39 +269,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
 
-instance CanReadField "advancedBlendIndependentBlend"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendIndependentBlend"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendIndependentBlend
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendIndependentBlend
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendNonPremultipliedSrcColor
+         CanWriteField "advancedBlendIndependentBlend"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkAdvancedBlendNonPremultipliedSrcColorMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkAdvancedBlendNonPremultipliedSrcColor #-}
-        vkAdvancedBlendNonPremultipliedSrcColor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor})
-
-        {-# INLINE vkAdvancedBlendNonPremultipliedSrcColorByteOffset #-}
-        vkAdvancedBlendNonPremultipliedSrcColorByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
-
-        {-# INLINE readVkAdvancedBlendNonPremultipliedSrcColor #-}
-        readVkAdvancedBlendNonPremultipliedSrcColor p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
-
-        {-# INLINE writeVkAdvancedBlendNonPremultipliedSrcColor #-}
-        writeVkAdvancedBlendNonPremultipliedSrcColor p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendNonPremultipliedSrcColor"
@@ -390,39 +315,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
 
-instance CanReadField "advancedBlendNonPremultipliedSrcColor"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendNonPremultipliedSrcColor"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendNonPremultipliedSrcColor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendNonPremultipliedSrcColor
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendNonPremultipliedDstColor
+         CanWriteField "advancedBlendNonPremultipliedSrcColor"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkAdvancedBlendNonPremultipliedDstColorMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkAdvancedBlendNonPremultipliedDstColor #-}
-        vkAdvancedBlendNonPremultipliedDstColor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor})
-
-        {-# INLINE vkAdvancedBlendNonPremultipliedDstColorByteOffset #-}
-        vkAdvancedBlendNonPremultipliedDstColorByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
-
-        {-# INLINE readVkAdvancedBlendNonPremultipliedDstColor #-}
-        readVkAdvancedBlendNonPremultipliedDstColor p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
-
-        {-# INLINE writeVkAdvancedBlendNonPremultipliedDstColor #-}
-        writeVkAdvancedBlendNonPremultipliedDstColor p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendNonPremultipliedDstColor"
@@ -449,39 +361,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
 
-instance CanReadField "advancedBlendNonPremultipliedDstColor"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendNonPremultipliedDstColor"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendNonPremultipliedDstColor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendNonPremultipliedDstColor
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendCorrelatedOverlap
+         CanWriteField "advancedBlendNonPremultipliedDstColor"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkAdvancedBlendCorrelatedOverlapMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkAdvancedBlendCorrelatedOverlap #-}
-        vkAdvancedBlendCorrelatedOverlap x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap})
-
-        {-# INLINE vkAdvancedBlendCorrelatedOverlapByteOffset #-}
-        vkAdvancedBlendCorrelatedOverlapByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
-
-        {-# INLINE readVkAdvancedBlendCorrelatedOverlap #-}
-        readVkAdvancedBlendCorrelatedOverlap p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
-
-        {-# INLINE writeVkAdvancedBlendCorrelatedOverlap #-}
-        writeVkAdvancedBlendCorrelatedOverlap p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendCorrelatedOverlap"
@@ -508,39 +407,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
 
-instance CanReadField "advancedBlendCorrelatedOverlap"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendCorrelatedOverlap"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendCorrelatedOverlap
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendCorrelatedOverlap
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
 
 instance {-# OVERLAPPING #-}
-         HasVkAdvancedBlendAllOperations
+         CanWriteField "advancedBlendCorrelatedOverlap"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        type VkAdvancedBlendAllOperationsMType
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkAdvancedBlendAllOperations #-}
-        vkAdvancedBlendAllOperations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations})
-
-        {-# INLINE vkAdvancedBlendAllOperationsByteOffset #-}
-        vkAdvancedBlendAllOperationsByteOffset ~_
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
-
-        {-# INLINE readVkAdvancedBlendAllOperations #-}
-        readVkAdvancedBlendAllOperations p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
-
-        {-# INLINE writeVkAdvancedBlendAllOperations #-}
-        writeVkAdvancedBlendAllOperations p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
 
 instance {-# OVERLAPPING #-}
          HasField "advancedBlendAllOperations"
@@ -567,48 +453,63 @@
         fieldOffset
           = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
 
-instance CanReadField "advancedBlendAllOperations"
+instance {-# OVERLAPPING #-}
+         CanReadField "advancedBlendAllOperations"
            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAdvancedBlendAllOperations
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations})
 
         {-# INLINE readField #-}
-        readField = readVkAdvancedBlendAllOperations
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkAdvancedBlendMaxColorAttachments = " .
-                            showsPrec d (vkAdvancedBlendMaxColorAttachments x) .
+                          showString "advancedBlendMaxColorAttachments = " .
+                            showsPrec d (getField @"advancedBlendMaxColorAttachments" x) .
                               showString ", " .
-                                showString "vkAdvancedBlendIndependentBlend = " .
-                                  showsPrec d (vkAdvancedBlendIndependentBlend x) .
+                                showString "advancedBlendIndependentBlend = " .
+                                  showsPrec d (getField @"advancedBlendIndependentBlend" x) .
                                     showString ", " .
-                                      showString "vkAdvancedBlendNonPremultipliedSrcColor = " .
-                                        showsPrec d (vkAdvancedBlendNonPremultipliedSrcColor x) .
+                                      showString "advancedBlendNonPremultipliedSrcColor = " .
+                                        showsPrec d
+                                          (getField @"advancedBlendNonPremultipliedSrcColor" x)
+                                          .
                                           showString ", " .
-                                            showString "vkAdvancedBlendNonPremultipliedDstColor = "
-                                              .
+                                            showString "advancedBlendNonPremultipliedDstColor = " .
                                               showsPrec d
-                                                (vkAdvancedBlendNonPremultipliedDstColor x)
+                                                (getField @"advancedBlendNonPremultipliedDstColor"
+                                                   x)
                                                 .
                                                 showString ", " .
-                                                  showString "vkAdvancedBlendCorrelatedOverlap = " .
-                                                    showsPrec d (vkAdvancedBlendCorrelatedOverlap x)
+                                                  showString "advancedBlendCorrelatedOverlap = " .
+                                                    showsPrec d
+                                                      (getField @"advancedBlendCorrelatedOverlap" x)
                                                       .
                                                       showString ", " .
-                                                        showString "vkAdvancedBlendAllOperations = "
-                                                          .
+                                                        showString "advancedBlendAllOperations = " .
                                                           showsPrec d
-                                                            (vkAdvancedBlendAllOperations x)
+                                                            (getField @"advancedBlendAllOperations"
+                                                               x)
                                                             . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceConservativeRasterizationPropertiesEXT
        (VkPhysicalDeviceConservativeRasterizationPropertiesEXT(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
 --   >     VkStructureType sType;
@@ -32,7 +32,7 @@
 --   >     VkBool32               conservativeRasterizationPostDepthCoverage;
 --   > } VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html VkPhysicalDeviceConservativeRasterizationPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html VkPhysicalDeviceConservativeRasterizationPropertiesEXT registry at www.khronos.org>
 data VkPhysicalDeviceConservativeRasterizationPropertiesEXT = VkPhysicalDeviceConservativeRasterizationPropertiesEXT## Addr##
                                                                                                                       ByteArray##
 
@@ -111,31 +111,7 @@
              = 'False -- ' closing tick for hsc2hs
         type StructExtends
                VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type VkSTypeMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
+             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType"
@@ -162,44 +138,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
 
-instance CanWriteField "sType"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type VkPNextMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext"
@@ -226,45 +184,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkPrimitiveOverestimationSize
+         CanWriteField "pNext"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkPrimitiveOverestimationSizeMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = #{type float}
-
-        {-# NOINLINE vkPrimitiveOverestimationSize #-}
-        vkPrimitiveOverestimationSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize})
-
-        {-# INLINE vkPrimitiveOverestimationSizeByteOffset #-}
-        vkPrimitiveOverestimationSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
-
-        {-# INLINE readVkPrimitiveOverestimationSize #-}
-        readVkPrimitiveOverestimationSize p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
-
-        {-# INLINE writeVkPrimitiveOverestimationSize #-}
-        writeVkPrimitiveOverestimationSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "primitiveOverestimationSize"
@@ -291,45 +230,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
 
-instance CanReadField "primitiveOverestimationSize"
+instance {-# OVERLAPPING #-}
+         CanReadField "primitiveOverestimationSize"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPrimitiveOverestimationSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize})
 
         {-# INLINE readField #-}
-        readField = readVkPrimitiveOverestimationSize
-
-instance CanWriteField "primitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPrimitiveOverestimationSize
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
 
 instance {-# OVERLAPPING #-}
-         HasVkMaxExtraPrimitiveOverestimationSize
+         CanWriteField "primitiveOverestimationSize"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkMaxExtraPrimitiveOverestimationSizeMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = #{type float}
-
-        {-# NOINLINE vkMaxExtraPrimitiveOverestimationSize #-}
-        vkMaxExtraPrimitiveOverestimationSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize})
-
-        {-# INLINE vkMaxExtraPrimitiveOverestimationSizeByteOffset #-}
-        vkMaxExtraPrimitiveOverestimationSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
-
-        {-# INLINE readVkMaxExtraPrimitiveOverestimationSize #-}
-        readVkMaxExtraPrimitiveOverestimationSize p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
-
-        {-# INLINE writeVkMaxExtraPrimitiveOverestimationSize #-}
-        writeVkMaxExtraPrimitiveOverestimationSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
 
 instance {-# OVERLAPPING #-}
          HasField "maxExtraPrimitiveOverestimationSize"
@@ -356,46 +276,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
 
-instance CanReadField "maxExtraPrimitiveOverestimationSize"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxExtraPrimitiveOverestimationSize"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkMaxExtraPrimitiveOverestimationSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize})
 
         {-# INLINE readField #-}
-        readField = readVkMaxExtraPrimitiveOverestimationSize
-
-instance CanWriteField "maxExtraPrimitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMaxExtraPrimitiveOverestimationSize
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
 
 instance {-# OVERLAPPING #-}
-         HasVkExtraPrimitiveOverestimationSizeGranularity
+         CanWriteField "maxExtraPrimitiveOverestimationSize"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkExtraPrimitiveOverestimationSizeGranularityMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = #{type float}
-
-        {-# NOINLINE vkExtraPrimitiveOverestimationSizeGranularity #-}
-        vkExtraPrimitiveOverestimationSizeGranularity x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity})
-
-        {-# INLINE vkExtraPrimitiveOverestimationSizeGranularityByteOffset
-                   #-}
-        vkExtraPrimitiveOverestimationSizeGranularityByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
-
-        {-# INLINE readVkExtraPrimitiveOverestimationSizeGranularity #-}
-        readVkExtraPrimitiveOverestimationSizeGranularity p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
-
-        {-# INLINE writeVkExtraPrimitiveOverestimationSizeGranularity #-}
-        writeVkExtraPrimitiveOverestimationSizeGranularity p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
 
 instance {-# OVERLAPPING #-}
          HasField "extraPrimitiveOverestimationSizeGranularity"
@@ -422,46 +322,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
 
-instance CanReadField "extraPrimitiveOverestimationSizeGranularity"
+instance {-# OVERLAPPING #-}
+         CanReadField "extraPrimitiveOverestimationSizeGranularity"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkExtraPrimitiveOverestimationSizeGranularity
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity})
 
         {-# INLINE readField #-}
-        readField = readVkExtraPrimitiveOverestimationSizeGranularity
-
-instance CanWriteField
-           "extraPrimitiveOverestimationSizeGranularity"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkExtraPrimitiveOverestimationSizeGranularity
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
 
 instance {-# OVERLAPPING #-}
-         HasVkPrimitiveUnderestimation
+         CanWriteField "extraPrimitiveOverestimationSizeGranularity"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkPrimitiveUnderestimationMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkPrimitiveUnderestimation #-}
-        vkPrimitiveUnderestimation x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation})
-
-        {-# INLINE vkPrimitiveUnderestimationByteOffset #-}
-        vkPrimitiveUnderestimationByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
-
-        {-# INLINE readVkPrimitiveUnderestimation #-}
-        readVkPrimitiveUnderestimation p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
-
-        {-# INLINE writeVkPrimitiveUnderestimation #-}
-        writeVkPrimitiveUnderestimation p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
 
 instance {-# OVERLAPPING #-}
          HasField "primitiveUnderestimation"
@@ -488,45 +368,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
 
-instance CanReadField "primitiveUnderestimation"
+instance {-# OVERLAPPING #-}
+         CanReadField "primitiveUnderestimation"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPrimitiveUnderestimation
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation})
 
         {-# INLINE readField #-}
-        readField = readVkPrimitiveUnderestimation
-
-instance CanWriteField "primitiveUnderestimation"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPrimitiveUnderestimation
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
 
 instance {-# OVERLAPPING #-}
-         HasVkConservativePointAndLineRasterization
+         CanWriteField "primitiveUnderestimation"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkConservativePointAndLineRasterizationMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkConservativePointAndLineRasterization #-}
-        vkConservativePointAndLineRasterization x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization})
-
-        {-# INLINE vkConservativePointAndLineRasterizationByteOffset #-}
-        vkConservativePointAndLineRasterizationByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
-
-        {-# INLINE readVkConservativePointAndLineRasterization #-}
-        readVkConservativePointAndLineRasterization p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
-
-        {-# INLINE writeVkConservativePointAndLineRasterization #-}
-        writeVkConservativePointAndLineRasterization p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
 
 instance {-# OVERLAPPING #-}
          HasField "conservativePointAndLineRasterization"
@@ -553,45 +414,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
 
-instance CanReadField "conservativePointAndLineRasterization"
+instance {-# OVERLAPPING #-}
+         CanReadField "conservativePointAndLineRasterization"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkConservativePointAndLineRasterization
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization})
 
         {-# INLINE readField #-}
-        readField = readVkConservativePointAndLineRasterization
-
-instance CanWriteField "conservativePointAndLineRasterization"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkConservativePointAndLineRasterization
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
 
 instance {-# OVERLAPPING #-}
-         HasVkDegenerateTrianglesRasterized
+         CanWriteField "conservativePointAndLineRasterization"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkDegenerateTrianglesRasterizedMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkDegenerateTrianglesRasterized #-}
-        vkDegenerateTrianglesRasterized x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized})
-
-        {-# INLINE vkDegenerateTrianglesRasterizedByteOffset #-}
-        vkDegenerateTrianglesRasterizedByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
-
-        {-# INLINE readVkDegenerateTrianglesRasterized #-}
-        readVkDegenerateTrianglesRasterized p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
-
-        {-# INLINE writeVkDegenerateTrianglesRasterized #-}
-        writeVkDegenerateTrianglesRasterized p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
 
 instance {-# OVERLAPPING #-}
          HasField "degenerateTrianglesRasterized"
@@ -618,45 +460,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
 
-instance CanReadField "degenerateTrianglesRasterized"
+instance {-# OVERLAPPING #-}
+         CanReadField "degenerateTrianglesRasterized"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkDegenerateTrianglesRasterized
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized})
 
         {-# INLINE readField #-}
-        readField = readVkDegenerateTrianglesRasterized
-
-instance CanWriteField "degenerateTrianglesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDegenerateTrianglesRasterized
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
 
 instance {-# OVERLAPPING #-}
-         HasVkDegenerateLinesRasterized
+         CanWriteField "degenerateTrianglesRasterized"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkDegenerateLinesRasterizedMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkDegenerateLinesRasterized #-}
-        vkDegenerateLinesRasterized x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized})
-
-        {-# INLINE vkDegenerateLinesRasterizedByteOffset #-}
-        vkDegenerateLinesRasterizedByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
-
-        {-# INLINE readVkDegenerateLinesRasterized #-}
-        readVkDegenerateLinesRasterized p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
-
-        {-# INLINE writeVkDegenerateLinesRasterized #-}
-        writeVkDegenerateLinesRasterized p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
 
 instance {-# OVERLAPPING #-}
          HasField "degenerateLinesRasterized"
@@ -683,45 +506,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
 
-instance CanReadField "degenerateLinesRasterized"
+instance {-# OVERLAPPING #-}
+         CanReadField "degenerateLinesRasterized"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkDegenerateLinesRasterized
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized})
 
         {-# INLINE readField #-}
-        readField = readVkDegenerateLinesRasterized
-
-instance CanWriteField "degenerateLinesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDegenerateLinesRasterized
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
 
 instance {-# OVERLAPPING #-}
-         HasVkFullyCoveredFragmentShaderInputVariable
+         CanWriteField "degenerateLinesRasterized"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkFullyCoveredFragmentShaderInputVariableMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkFullyCoveredFragmentShaderInputVariable #-}
-        vkFullyCoveredFragmentShaderInputVariable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable})
-
-        {-# INLINE vkFullyCoveredFragmentShaderInputVariableByteOffset #-}
-        vkFullyCoveredFragmentShaderInputVariableByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
-
-        {-# INLINE readVkFullyCoveredFragmentShaderInputVariable #-}
-        readVkFullyCoveredFragmentShaderInputVariable p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
-
-        {-# INLINE writeVkFullyCoveredFragmentShaderInputVariable #-}
-        writeVkFullyCoveredFragmentShaderInputVariable p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
 
 instance {-# OVERLAPPING #-}
          HasField "fullyCoveredFragmentShaderInputVariable"
@@ -748,46 +552,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
 
-instance CanReadField "fullyCoveredFragmentShaderInputVariable"
+instance {-# OVERLAPPING #-}
+         CanReadField "fullyCoveredFragmentShaderInputVariable"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkFullyCoveredFragmentShaderInputVariable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable})
 
         {-# INLINE readField #-}
-        readField = readVkFullyCoveredFragmentShaderInputVariable
-
-instance CanWriteField "fullyCoveredFragmentShaderInputVariable"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFullyCoveredFragmentShaderInputVariable
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
 
 instance {-# OVERLAPPING #-}
-         HasVkConservativeRasterizationPostDepthCoverage
+         CanWriteField "fullyCoveredFragmentShaderInputVariable"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        type VkConservativeRasterizationPostDepthCoverageMType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkConservativeRasterizationPostDepthCoverage #-}
-        vkConservativeRasterizationPostDepthCoverage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage})
-
-        {-# INLINE vkConservativeRasterizationPostDepthCoverageByteOffset
-                   #-}
-        vkConservativeRasterizationPostDepthCoverageByteOffset ~_
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
-
-        {-# INLINE readVkConservativeRasterizationPostDepthCoverage #-}
-        readVkConservativeRasterizationPostDepthCoverage p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
-
-        {-# INLINE writeVkConservativeRasterizationPostDepthCoverage #-}
-        writeVkConservativeRasterizationPostDepthCoverage p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
 
 instance {-# OVERLAPPING #-}
          HasField "conservativeRasterizationPostDepthCoverage"
@@ -814,20 +598,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
 
-instance CanReadField "conservativeRasterizationPostDepthCoverage"
+instance {-# OVERLAPPING #-}
+         CanReadField "conservativeRasterizationPostDepthCoverage"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkConservativeRasterizationPostDepthCoverage
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage})
 
         {-# INLINE readField #-}
-        readField = readVkConservativeRasterizationPostDepthCoverage
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
 
-instance CanWriteField "conservativeRasterizationPostDepthCoverage"
+instance {-# OVERLAPPING #-}
+         CanWriteField "conservativeRasterizationPostDepthCoverage"
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkConservativeRasterizationPostDepthCoverage
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
 
 instance Show
            VkPhysicalDeviceConservativeRasterizationPropertiesEXT
@@ -836,60 +626,68 @@
           = showString
               "VkPhysicalDeviceConservativeRasterizationPropertiesEXT {"
               .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPrimitiveOverestimationSize = " .
-                            showsPrec d (vkPrimitiveOverestimationSize x) .
+                          showString "primitiveOverestimationSize = " .
+                            showsPrec d (getField @"primitiveOverestimationSize" x) .
                               showString ", " .
-                                showString "vkMaxExtraPrimitiveOverestimationSize = " .
-                                  showsPrec d (vkMaxExtraPrimitiveOverestimationSize x) .
+                                showString "maxExtraPrimitiveOverestimationSize = " .
+                                  showsPrec d (getField @"maxExtraPrimitiveOverestimationSize" x) .
                                     showString ", " .
-                                      showString "vkExtraPrimitiveOverestimationSizeGranularity = "
-                                        .
+                                      showString "extraPrimitiveOverestimationSizeGranularity = " .
                                         showsPrec d
-                                          (vkExtraPrimitiveOverestimationSizeGranularity x)
+                                          (getField @"extraPrimitiveOverestimationSizeGranularity"
+                                             x)
                                           .
                                           showString ", " .
-                                            showString "vkPrimitiveUnderestimation = " .
-                                              showsPrec d (vkPrimitiveUnderestimation x) .
+                                            showString "primitiveUnderestimation = " .
+                                              showsPrec d (getField @"primitiveUnderestimation" x) .
                                                 showString ", " .
                                                   showString
-                                                    "vkConservativePointAndLineRasterization = "
+                                                    "conservativePointAndLineRasterization = "
                                                     .
                                                     showsPrec d
-                                                      (vkConservativePointAndLineRasterization x)
+                                                      (getField
+                                                         @"conservativePointAndLineRasterization"
+                                                         x)
                                                       .
                                                       showString ", " .
                                                         showString
-                                                          "vkDegenerateTrianglesRasterized = "
+                                                          "degenerateTrianglesRasterized = "
                                                           .
                                                           showsPrec d
-                                                            (vkDegenerateTrianglesRasterized x)
+                                                            (getField
+                                                               @"degenerateTrianglesRasterized"
+                                                               x)
                                                             .
                                                             showString ", " .
                                                               showString
-                                                                "vkDegenerateLinesRasterized = "
+                                                                "degenerateLinesRasterized = "
                                                                 .
                                                                 showsPrec d
-                                                                  (vkDegenerateLinesRasterized x)
+                                                                  (getField
+                                                                     @"degenerateLinesRasterized"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkFullyCoveredFragmentShaderInputVariable = "
+                                                                      "fullyCoveredFragmentShaderInputVariable = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkFullyCoveredFragmentShaderInputVariable
+                                                                        (getField
+                                                                           @"fullyCoveredFragmentShaderInputVariable"
                                                                            x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkConservativeRasterizationPostDepthCoverage = "
+                                                                            "conservativeRasterizationPostDepthCoverage = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkConservativeRasterizationPostDepthCoverage
+                                                                              (getField
+                                                                                 @"conservativeRasterizationPostDepthCoverage"
                                                                                  x)
                                                                               . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceDiscardRectanglePropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceDiscardRectanglePropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceDiscardRectanglePropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceDiscardRectanglePropertiesEXT.hsc
@@ -5,17 +5,17 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceDiscardRectanglePropertiesEXT
        (VkPhysicalDeviceDiscardRectanglePropertiesEXT(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
 --   >     VkStructureType sType;
@@ -23,7 +23,7 @@
 --   >     uint32_t               maxDiscardRectangles;
 --   > } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html VkPhysicalDeviceDiscardRectanglePropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html VkPhysicalDeviceDiscardRectanglePropertiesEXT registry at www.khronos.org>
 data VkPhysicalDeviceDiscardRectanglePropertiesEXT = VkPhysicalDeviceDiscardRectanglePropertiesEXT## Addr##
                                                                                                     ByteArray##
 
@@ -85,29 +85,7 @@
         type ReturnedOnly VkPhysicalDeviceDiscardRectanglePropertiesEXT =
              'False -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceDiscardRectanglePropertiesEXT where
-        type VkSTypeMType VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
+             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceDiscardRectanglePropertiesEXT
@@ -133,42 +111,24 @@
         fieldOffset
           = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
 
-instance CanReadField "sType"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPhysicalDeviceDiscardRectanglePropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
 
-instance CanWriteField "sType"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPhysicalDeviceDiscardRectanglePropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceDiscardRectanglePropertiesEXT where
-        type VkPNextMType VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDeviceDiscardRectanglePropertiesEXT
@@ -194,45 +154,24 @@
         fieldOffset
           = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
 
-instance CanReadField "pNext"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPhysicalDeviceDiscardRectanglePropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkMaxDiscardRectangles
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
+         CanWriteField "pNext" VkPhysicalDeviceDiscardRectanglePropertiesEXT
          where
-        type VkMaxDiscardRectanglesMType
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = Word32
-
-        {-# NOINLINE vkMaxDiscardRectangles #-}
-        vkMaxDiscardRectangles x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles})
-
-        {-# INLINE vkMaxDiscardRectanglesByteOffset #-}
-        vkMaxDiscardRectanglesByteOffset ~_
-          = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
-
-        {-# INLINE readVkMaxDiscardRectangles #-}
-        readVkMaxDiscardRectangles p
-          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
-
-        {-# INLINE writeVkMaxDiscardRectangles #-}
-        writeVkMaxDiscardRectangles p
-          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "maxDiscardRectangles"
@@ -259,29 +198,35 @@
         fieldOffset
           = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
 
-instance CanReadField "maxDiscardRectangles"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxDiscardRectangles"
            VkPhysicalDeviceDiscardRectanglePropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkMaxDiscardRectangles
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles})
 
         {-# INLINE readField #-}
-        readField = readVkMaxDiscardRectangles
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
 
-instance CanWriteField "maxDiscardRectangles"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxDiscardRectangles"
            VkPhysicalDeviceDiscardRectanglePropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxDiscardRectangles
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
 
 instance Show VkPhysicalDeviceDiscardRectanglePropertiesEXT where
         showsPrec d x
           = showString "VkPhysicalDeviceDiscardRectanglePropertiesEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMaxDiscardRectangles = " .
-                            showsPrec d (vkMaxDiscardRectangles x) . showChar '}'
+                          showString "maxDiscardRectangles = " .
+                            showsPrec d (getField @"maxDiscardRectangles" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfo.hsc
@@ -0,0 +1,275 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo
+       (VkPhysicalDeviceExternalBufferInfo(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags             (VkBufferCreateFlags)
+import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags              (VkBufferUsageFlags)
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceExternalBufferInfo.html VkPhysicalDeviceExternalBufferInfo registry at www.khronos.org>
+data VkPhysicalDeviceExternalBufferInfo = VkPhysicalDeviceExternalBufferInfo## Addr##
+                                                                              ByteArray##
+
+instance Eq VkPhysicalDeviceExternalBufferInfo where
+        (VkPhysicalDeviceExternalBufferInfo## a _) ==
+          x@(VkPhysicalDeviceExternalBufferInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceExternalBufferInfo where
+        (VkPhysicalDeviceExternalBufferInfo## a _) `compare`
+          x@(VkPhysicalDeviceExternalBufferInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceExternalBufferInfo where
+        unsafeAddr (VkPhysicalDeviceExternalBufferInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceExternalBufferInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceExternalBufferInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfoKHR
+       (VkPhysicalDeviceExternalBufferInfo(..),
+        VkPhysicalDeviceExternalBufferInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo (VkPhysicalDeviceExternalBufferInfo (..))
+
+-- | Alias for `VkPhysicalDeviceExternalBufferInfo`
+type VkPhysicalDeviceExternalBufferInfoKHR =
+     VkPhysicalDeviceExternalBufferInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalBufferInfoKHR.hsc
+++ /dev/null
@@ -1,375 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfoKHR
-       (VkPhysicalDeviceExternalBufferInfoKHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkBufferCreateFlags                (VkBufferCreateFlags)
-import           Graphics.Vulkan.Types.Enum.VkBufferUsageFlags                 (VkBufferUsageFlags)
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceExternalBufferInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBufferCreateFlags flags;
---   >     VkBufferUsageFlags               usage;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
---   > } VkPhysicalDeviceExternalBufferInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html VkPhysicalDeviceExternalBufferInfoKHR registry at www.khronos.org>
-data VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfoKHR## Addr##
-                                                                                    ByteArray##
-
-instance Eq VkPhysicalDeviceExternalBufferInfoKHR where
-        (VkPhysicalDeviceExternalBufferInfoKHR## a _) ==
-          x@(VkPhysicalDeviceExternalBufferInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalBufferInfoKHR where
-        (VkPhysicalDeviceExternalBufferInfoKHR## a _) `compare`
-          x@(VkPhysicalDeviceExternalBufferInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalBufferInfoKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalBufferInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalBufferInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        unsafeAddr (VkPhysicalDeviceExternalBufferInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceExternalBufferInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceExternalBufferInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalBufferInfoKHR where
-        type StructFields VkPhysicalDeviceExternalBufferInfoKHR =
-             '["sType", "pNext", "flags", "usage", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalBufferInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalBufferInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalBufferInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceExternalBufferInfoKHR where
-        type VkSTypeMType VkPhysicalDeviceExternalBufferInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalBufferInfoKHR where
-        type FieldType "sType" VkPhysicalDeviceExternalBufferInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalBufferInfoKHR =
-             #{offset VkPhysicalDeviceExternalBufferInfoKHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceExternalBufferInfoKHR where
-        type VkPNextMType VkPhysicalDeviceExternalBufferInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalBufferInfoKHR where
-        type FieldType "pNext" VkPhysicalDeviceExternalBufferInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalBufferInfoKHR =
-             #{offset VkPhysicalDeviceExternalBufferInfoKHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPhysicalDeviceExternalBufferInfoKHR where
-        type VkFlagsMType VkPhysicalDeviceExternalBufferInfoKHR =
-             VkBufferCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPhysicalDeviceExternalBufferInfoKHR where
-        type FieldType "flags" VkPhysicalDeviceExternalBufferInfoKHR =
-             VkBufferCreateFlags
-        type FieldOptional "flags" VkPhysicalDeviceExternalBufferInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPhysicalDeviceExternalBufferInfoKHR =
-             #{offset VkPhysicalDeviceExternalBufferInfoKHR, flags}
-        type FieldIsArray "flags" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, flags}
-
-instance CanReadField "flags" VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-}
-         HasVkUsage VkPhysicalDeviceExternalBufferInfoKHR where
-        type VkUsageMType VkPhysicalDeviceExternalBufferInfoKHR =
-             VkBufferUsageFlags
-
-        {-# NOINLINE vkUsage #-}
-        vkUsage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfoKHR, usage})
-
-        {-# INLINE vkUsageByteOffset #-}
-        vkUsageByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, usage}
-
-        {-# INLINE readVkUsage #-}
-        readVkUsage p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, usage}
-
-        {-# INLINE writeVkUsage #-}
-        writeVkUsage p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkPhysicalDeviceExternalBufferInfoKHR where
-        type FieldType "usage" VkPhysicalDeviceExternalBufferInfoKHR =
-             VkBufferUsageFlags
-        type FieldOptional "usage" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkPhysicalDeviceExternalBufferInfoKHR =
-             #{offset VkPhysicalDeviceExternalBufferInfoKHR, usage}
-        type FieldIsArray "usage" VkPhysicalDeviceExternalBufferInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, usage}
-
-instance CanReadField "usage" VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkUsage
-
-        {-# INLINE readField #-}
-        readField = readVkUsage
-
-instance CanWriteField "usage"
-           VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkUsage
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleType VkPhysicalDeviceExternalBufferInfoKHR where
-        type VkHandleTypeMType VkPhysicalDeviceExternalBufferInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalBufferInfoKHR where
-        type FieldType "handleType" VkPhysicalDeviceExternalBufferInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-        type FieldOptional "handleType"
-               VkPhysicalDeviceExternalBufferInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkPhysicalDeviceExternalBufferInfoKHR
-             =
-             #{offset VkPhysicalDeviceExternalBufferInfoKHR, handleType}
-        type FieldIsArray "handleType"
-               VkPhysicalDeviceExternalBufferInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfoKHR, handleType}
-
-instance CanReadField "handleType"
-           VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType"
-           VkPhysicalDeviceExternalBufferInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance Show VkPhysicalDeviceExternalBufferInfoKHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalBufferInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
-                              showString ", " .
-                                showString "vkUsage = " .
-                                  showsPrec d (vkUsage x) .
-                                    showString ", " .
-                                      showString "vkHandleType = " .
-                                        showsPrec d (vkHandleType x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfo.hsc
@@ -0,0 +1,194 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo
+       (VkPhysicalDeviceExternalFenceInfo(..)) where
+import           Foreign.Storable                                          (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags (VkExternalFenceHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
+import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceExternalFenceInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalFenceHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalFenceInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceExternalFenceInfo.html VkPhysicalDeviceExternalFenceInfo registry at www.khronos.org>
+data VkPhysicalDeviceExternalFenceInfo = VkPhysicalDeviceExternalFenceInfo## Addr##
+                                                                            ByteArray##
+
+instance Eq VkPhysicalDeviceExternalFenceInfo where
+        (VkPhysicalDeviceExternalFenceInfo## a _) ==
+          x@(VkPhysicalDeviceExternalFenceInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceExternalFenceInfo where
+        (VkPhysicalDeviceExternalFenceInfo## a _) `compare`
+          x@(VkPhysicalDeviceExternalFenceInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceExternalFenceInfo where
+        unsafeAddr (VkPhysicalDeviceExternalFenceInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceExternalFenceInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceExternalFenceInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfoKHR
+       (VkPhysicalDeviceExternalFenceInfo(..),
+        VkPhysicalDeviceExternalFenceInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo (VkPhysicalDeviceExternalFenceInfo (..))
+
+-- | Alias for `VkPhysicalDeviceExternalFenceInfo`
+type VkPhysicalDeviceExternalFenceInfoKHR =
+     VkPhysicalDeviceExternalFenceInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalFenceInfoKHR.hsc
+++ /dev/null
@@ -1,254 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfoKHR
-       (VkPhysicalDeviceExternalFenceInfoKHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR (VkExternalFenceHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceExternalFenceInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalFenceHandleTypeFlagBitsKHR handleType;
---   > } VkPhysicalDeviceExternalFenceInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html VkPhysicalDeviceExternalFenceInfoKHR registry at www.khronos.org>
-data VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfoKHR## Addr##
-                                                                                  ByteArray##
-
-instance Eq VkPhysicalDeviceExternalFenceInfoKHR where
-        (VkPhysicalDeviceExternalFenceInfoKHR## a _) ==
-          x@(VkPhysicalDeviceExternalFenceInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalFenceInfoKHR where
-        (VkPhysicalDeviceExternalFenceInfoKHR## a _) `compare`
-          x@(VkPhysicalDeviceExternalFenceInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalFenceInfoKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalFenceInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalFenceInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        unsafeAddr (VkPhysicalDeviceExternalFenceInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceExternalFenceInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceExternalFenceInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalFenceInfoKHR where
-        type StructFields VkPhysicalDeviceExternalFenceInfoKHR =
-             '["sType", "pNext", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalFenceInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalFenceInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalFenceInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceExternalFenceInfoKHR where
-        type VkSTypeMType VkPhysicalDeviceExternalFenceInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalFenceInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalFenceInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalFenceInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalFenceInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalFenceInfoKHR where
-        type FieldType "sType" VkPhysicalDeviceExternalFenceInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalFenceInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalFenceInfoKHR =
-             #{offset VkPhysicalDeviceExternalFenceInfoKHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalFenceInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalFenceInfoKHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceExternalFenceInfoKHR where
-        type VkPNextMType VkPhysicalDeviceExternalFenceInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalFenceInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalFenceInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalFenceInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalFenceInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalFenceInfoKHR where
-        type FieldType "pNext" VkPhysicalDeviceExternalFenceInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalFenceInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalFenceInfoKHR =
-             #{offset VkPhysicalDeviceExternalFenceInfoKHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalFenceInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalFenceInfoKHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleType VkPhysicalDeviceExternalFenceInfoKHR where
-        type VkHandleTypeMType VkPhysicalDeviceExternalFenceInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalFenceInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalFenceInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalFenceInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalFenceInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalFenceInfoKHR where
-        type FieldType "handleType" VkPhysicalDeviceExternalFenceInfoKHR =
-             VkExternalFenceHandleTypeFlagBitsKHR
-        type FieldOptional "handleType"
-               VkPhysicalDeviceExternalFenceInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkPhysicalDeviceExternalFenceInfoKHR
-             =
-             #{offset VkPhysicalDeviceExternalFenceInfoKHR, handleType}
-        type FieldIsArray "handleType" VkPhysicalDeviceExternalFenceInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalFenceInfoKHR, handleType}
-
-instance CanReadField "handleType"
-           VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType"
-           VkPhysicalDeviceExternalFenceInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance Show VkPhysicalDeviceExternalFenceInfoKHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalFenceInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfo.hsc
@@ -0,0 +1,206 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfo
+       (VkPhysicalDeviceExternalImageFormatInfo(..)) where
+import           Foreign.Storable                                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags    (VkExternalMemoryHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2 (VkPhysicalDeviceImageFormatInfo2)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceExternalImageFormatInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalImageFormatInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceExternalImageFormatInfo.html VkPhysicalDeviceExternalImageFormatInfo registry at www.khronos.org>
+data VkPhysicalDeviceExternalImageFormatInfo = VkPhysicalDeviceExternalImageFormatInfo## Addr##
+                                                                                        ByteArray##
+
+instance Eq VkPhysicalDeviceExternalImageFormatInfo where
+        (VkPhysicalDeviceExternalImageFormatInfo## a _) ==
+          x@(VkPhysicalDeviceExternalImageFormatInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceExternalImageFormatInfo where
+        (VkPhysicalDeviceExternalImageFormatInfo## a _) `compare`
+          x@(VkPhysicalDeviceExternalImageFormatInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceExternalImageFormatInfo
+         where
+        unsafeAddr (VkPhysicalDeviceExternalImageFormatInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceExternalImageFormatInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceExternalImageFormatInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfoKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfoKHR
+       (VkPhysicalDeviceExternalImageFormatInfo(..),
+        VkPhysicalDeviceExternalImageFormatInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfo
+                                                                                       (VkPhysicalDeviceExternalImageFormatInfo (..))
+
+-- | Alias for `VkPhysicalDeviceExternalImageFormatInfo`
+type VkPhysicalDeviceExternalImageFormatInfoKHR =
+     VkPhysicalDeviceExternalImageFormatInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalImageFormatInfoKHR.hsc
+++ /dev/null
@@ -1,280 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfoKHR
-       (VkPhysicalDeviceExternalImageFormatInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
-                                                                                   (VkExternalMemoryHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR
-                                                                                   (VkPhysicalDeviceImageFormatInfo2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceExternalImageFormatInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagBitsKHR handleType;
---   > } VkPhysicalDeviceExternalImageFormatInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html VkPhysicalDeviceExternalImageFormatInfoKHR registry at www.khronos.org>
-data VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfoKHR## Addr##
-                                                                                              ByteArray##
-
-instance Eq VkPhysicalDeviceExternalImageFormatInfoKHR where
-        (VkPhysicalDeviceExternalImageFormatInfoKHR## a _) ==
-          x@(VkPhysicalDeviceExternalImageFormatInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalImageFormatInfoKHR where
-        (VkPhysicalDeviceExternalImageFormatInfoKHR## a _) `compare`
-          x@(VkPhysicalDeviceExternalImageFormatInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalImageFormatInfoKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalImageFormatInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalImageFormatInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        unsafeAddr (VkPhysicalDeviceExternalImageFormatInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceExternalImageFormatInfoKHR## _ b)
-          = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceExternalImageFormatInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        type StructFields VkPhysicalDeviceExternalImageFormatInfoKHR =
-             '["sType", "pNext", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalImageFormatInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalImageFormatInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalImageFormatInfoKHR =
-             '[VkPhysicalDeviceImageFormatInfo2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceExternalImageFormatInfoKHR where
-        type VkSTypeMType VkPhysicalDeviceExternalImageFormatInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalImageFormatInfoKHR where
-        type FieldType "sType" VkPhysicalDeviceExternalImageFormatInfoKHR =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalImageFormatInfoKHR
-             =
-             #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceExternalImageFormatInfoKHR where
-        type VkPNextMType VkPhysicalDeviceExternalImageFormatInfoKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalImageFormatInfoKHR where
-        type FieldType "pNext" VkPhysicalDeviceExternalImageFormatInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalImageFormatInfoKHR
-             =
-             #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleType VkPhysicalDeviceExternalImageFormatInfoKHR where
-        type VkHandleTypeMType VkPhysicalDeviceExternalImageFormatInfoKHR =
-             VkExternalMemoryHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        type FieldType "handleType"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = VkExternalMemoryHandleTypeFlagBitsKHR
-        type FieldOptional "handleType"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             =
-             #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, handleType}
-        type FieldIsArray "handleType"
-               VkPhysicalDeviceExternalImageFormatInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalImageFormatInfoKHR, handleType}
-
-instance CanReadField "handleType"
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType"
-           VkPhysicalDeviceExternalImageFormatInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance Show VkPhysicalDeviceExternalImageFormatInfoKHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalImageFormatInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalMemoryHostPropertiesEXT
        (VkPhysicalDeviceExternalMemoryHostPropertiesEXT(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkDeviceSize)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                          (VkDeviceSize)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
 --   >     VkStructureType sType;
@@ -24,7 +24,7 @@
 --   >     VkDeviceSize minImportedHostPointerAlignment;
 --   > } VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html VkPhysicalDeviceExternalMemoryHostPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html VkPhysicalDeviceExternalMemoryHostPropertiesEXT registry at www.khronos.org>
 data VkPhysicalDeviceExternalMemoryHostPropertiesEXT = VkPhysicalDeviceExternalMemoryHostPropertiesEXT## Addr##
                                                                                                         ByteArray##
 
@@ -87,29 +87,7 @@
         type ReturnedOnly VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
              'False -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceExternalMemoryHostPropertiesEXT where
-        type VkSTypeMType VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
+             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceExternalMemoryHostPropertiesEXT
@@ -135,42 +113,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPhysicalDeviceExternalMemoryHostPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
 
-instance CanWriteField "sType"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType"
            VkPhysicalDeviceExternalMemoryHostPropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceExternalMemoryHostPropertiesEXT where
-        type VkPNextMType VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDeviceExternalMemoryHostPropertiesEXT
@@ -196,45 +158,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPhysicalDeviceExternalMemoryHostPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkMinImportedHostPointerAlignment
+         CanWriteField "pNext"
            VkPhysicalDeviceExternalMemoryHostPropertiesEXT
          where
-        type VkMinImportedHostPointerAlignmentMType
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = VkDeviceSize
-
-        {-# NOINLINE vkMinImportedHostPointerAlignment #-}
-        vkMinImportedHostPointerAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment})
-
-        {-# INLINE vkMinImportedHostPointerAlignmentByteOffset #-}
-        vkMinImportedHostPointerAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
-
-        {-# INLINE readVkMinImportedHostPointerAlignment #-}
-        readVkMinImportedHostPointerAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
-
-        {-# INLINE writeVkMinImportedHostPointerAlignment #-}
-        writeVkMinImportedHostPointerAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "minImportedHostPointerAlignment"
@@ -261,29 +204,36 @@
         fieldOffset
           = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
 
-instance CanReadField "minImportedHostPointerAlignment"
+instance {-# OVERLAPPING #-}
+         CanReadField "minImportedHostPointerAlignment"
            VkPhysicalDeviceExternalMemoryHostPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkMinImportedHostPointerAlignment
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment})
 
         {-# INLINE readField #-}
-        readField = readVkMinImportedHostPointerAlignment
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
 
-instance CanWriteField "minImportedHostPointerAlignment"
+instance {-# OVERLAPPING #-}
+         CanWriteField "minImportedHostPointerAlignment"
            VkPhysicalDeviceExternalMemoryHostPropertiesEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMinImportedHostPointerAlignment
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
 
 instance Show VkPhysicalDeviceExternalMemoryHostPropertiesEXT where
         showsPrec d x
           = showString "VkPhysicalDeviceExternalMemoryHostPropertiesEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMinImportedHostPointerAlignment = " .
-                            showsPrec d (vkMinImportedHostPointerAlignment x) . showChar '}'
+                          showString "minImportedHostPointerAlignment = " .
+                            showsPrec d (getField @"minImportedHostPointerAlignment" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfo.hsc
@@ -0,0 +1,202 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo
+       (VkPhysicalDeviceExternalSemaphoreInfo(..)) where
+import           Foreign.Storable                                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalSemaphoreInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html VkPhysicalDeviceExternalSemaphoreInfo registry at www.khronos.org>
+data VkPhysicalDeviceExternalSemaphoreInfo = VkPhysicalDeviceExternalSemaphoreInfo## Addr##
+                                                                                    ByteArray##
+
+instance Eq VkPhysicalDeviceExternalSemaphoreInfo where
+        (VkPhysicalDeviceExternalSemaphoreInfo## a _) ==
+          x@(VkPhysicalDeviceExternalSemaphoreInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceExternalSemaphoreInfo where
+        (VkPhysicalDeviceExternalSemaphoreInfo## a _) `compare`
+          x@(VkPhysicalDeviceExternalSemaphoreInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceExternalSemaphoreInfo
+         where
+        unsafeAddr (VkPhysicalDeviceExternalSemaphoreInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceExternalSemaphoreInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceExternalSemaphoreInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfoKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfoKHR
+       (VkPhysicalDeviceExternalSemaphoreInfo(..),
+        VkPhysicalDeviceExternalSemaphoreInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo
+                                                                                     (VkPhysicalDeviceExternalSemaphoreInfo (..))
+
+-- | Alias for `VkPhysicalDeviceExternalSemaphoreInfo`
+type VkPhysicalDeviceExternalSemaphoreInfoKHR =
+     VkPhysicalDeviceExternalSemaphoreInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceExternalSemaphoreInfoKHR.hsc
+++ /dev/null
@@ -1,268 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfoKHR
-       (VkPhysicalDeviceExternalSemaphoreInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceExternalSemaphoreInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalSemaphoreHandleTypeFlagBitsKHR handleType;
---   > } VkPhysicalDeviceExternalSemaphoreInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html VkPhysicalDeviceExternalSemaphoreInfoKHR registry at www.khronos.org>
-data VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfoKHR## Addr##
-                                                                                          ByteArray##
-
-instance Eq VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        (VkPhysicalDeviceExternalSemaphoreInfoKHR## a _) ==
-          x@(VkPhysicalDeviceExternalSemaphoreInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        (VkPhysicalDeviceExternalSemaphoreInfoKHR## a _) `compare`
-          x@(VkPhysicalDeviceExternalSemaphoreInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalSemaphoreInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalSemaphoreInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        unsafeAddr (VkPhysicalDeviceExternalSemaphoreInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceExternalSemaphoreInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceExternalSemaphoreInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        type StructFields VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             '["sType", "pNext", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalSemaphoreInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalSemaphoreInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalSemaphoreInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        type VkSTypeMType VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        type FieldType "sType" VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        type VkPNextMType VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        type FieldType "pNext" VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkHandleType VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        type VkHandleTypeMType VkPhysicalDeviceExternalSemaphoreInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, handleType}
-
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, handleType}
-
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        type FieldType "handleType"
-               VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = VkExternalSemaphoreHandleTypeFlagBitsKHR
-        type FieldOptional "handleType"
-               VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType"
-               VkPhysicalDeviceExternalSemaphoreInfoKHR
-             =
-             #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, handleType}
-        type FieldIsArray "handleType"
-               VkPhysicalDeviceExternalSemaphoreInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfoKHR, handleType}
-
-instance CanReadField "handleType"
-           VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
-
-        {-# INLINE readField #-}
-        readField = readVkHandleType
-
-instance CanWriteField "handleType"
-           VkPhysicalDeviceExternalSemaphoreInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkHandleType
-
-instance Show VkPhysicalDeviceExternalSemaphoreInfoKHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalSemaphoreInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkHandleType = " .
-                            showsPrec d (vkHandleType x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures.hsc
@@ -5,3707 +5,2796 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
-       (VkPhysicalDeviceFeatures(..)) where
-import           Foreign.Storable                    (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes     (VkBool32)
-import           Graphics.Vulkan.Types.StructMembers
-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.0-extensions/man/html/VkPhysicalDeviceFeatures.html VkPhysicalDeviceFeatures registry at www.khronos.org>
-data VkPhysicalDeviceFeatures = VkPhysicalDeviceFeatures## Addr##
-                                                          ByteArray##
-
-instance Eq VkPhysicalDeviceFeatures where
-        (VkPhysicalDeviceFeatures## a _) ==
-          x@(VkPhysicalDeviceFeatures## b _) = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceFeatures where
-        (VkPhysicalDeviceFeatures## a _) `compare`
-          x@(VkPhysicalDeviceFeatures## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceFeatures where
-        unsafeAddr (VkPhysicalDeviceFeatures## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceFeatures## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceFeatures## (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-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 #-}
-         HasVkRobustBufferAccess VkPhysicalDeviceFeatures where
-        type VkRobustBufferAccessMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkRobustBufferAccess #-}
-        vkRobustBufferAccess x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, robustBufferAccess})
-
-        {-# INLINE vkRobustBufferAccessByteOffset #-}
-        vkRobustBufferAccessByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-
-        {-# INLINE readVkRobustBufferAccess #-}
-        readVkRobustBufferAccess p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-
-        {-# INLINE writeVkRobustBufferAccess #-}
-        writeVkRobustBufferAccess p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-
-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 CanReadField "robustBufferAccess" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkRobustBufferAccess
-
-        {-# INLINE readField #-}
-        readField = readVkRobustBufferAccess
-
-instance CanWriteField "robustBufferAccess"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkRobustBufferAccess
-
-instance {-# OVERLAPPING #-}
-         HasVkFullDrawIndexUint32 VkPhysicalDeviceFeatures where
-        type VkFullDrawIndexUint32MType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkFullDrawIndexUint32 #-}
-        vkFullDrawIndexUint32 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32})
-
-        {-# INLINE vkFullDrawIndexUint32ByteOffset #-}
-        vkFullDrawIndexUint32ByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-
-        {-# INLINE readVkFullDrawIndexUint32 #-}
-        readVkFullDrawIndexUint32 p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-
-        {-# INLINE writeVkFullDrawIndexUint32 #-}
-        writeVkFullDrawIndexUint32 p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-
-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 CanReadField "fullDrawIndexUint32"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkFullDrawIndexUint32
-
-        {-# INLINE readField #-}
-        readField = readVkFullDrawIndexUint32
-
-instance CanWriteField "fullDrawIndexUint32"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFullDrawIndexUint32
-
-instance {-# OVERLAPPING #-}
-         HasVkImageCubeArray VkPhysicalDeviceFeatures where
-        type VkImageCubeArrayMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkImageCubeArray #-}
-        vkImageCubeArray x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, imageCubeArray})
-
-        {-# INLINE vkImageCubeArrayByteOffset #-}
-        vkImageCubeArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-
-        {-# INLINE readVkImageCubeArray #-}
-        readVkImageCubeArray p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-
-        {-# INLINE writeVkImageCubeArray #-}
-        writeVkImageCubeArray p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-
-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 CanReadField "imageCubeArray" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkImageCubeArray
-
-        {-# INLINE readField #-}
-        readField = readVkImageCubeArray
-
-instance CanWriteField "imageCubeArray" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageCubeArray
-
-instance {-# OVERLAPPING #-}
-         HasVkIndependentBlend VkPhysicalDeviceFeatures where
-        type VkIndependentBlendMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkIndependentBlend #-}
-        vkIndependentBlend x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, independentBlend})
-
-        {-# INLINE vkIndependentBlendByteOffset #-}
-        vkIndependentBlendByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, independentBlend}
-
-        {-# INLINE readVkIndependentBlend #-}
-        readVkIndependentBlend p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, independentBlend}
-
-        {-# INLINE writeVkIndependentBlend #-}
-        writeVkIndependentBlend p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, independentBlend}
-
-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 CanReadField "independentBlend" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkIndependentBlend
-
-        {-# INLINE readField #-}
-        readField = readVkIndependentBlend
-
-instance CanWriteField "independentBlend" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkIndependentBlend
-
-instance {-# OVERLAPPING #-}
-         HasVkGeometryShader VkPhysicalDeviceFeatures where
-        type VkGeometryShaderMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkGeometryShader #-}
-        vkGeometryShader x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, geometryShader})
-
-        {-# INLINE vkGeometryShaderByteOffset #-}
-        vkGeometryShaderByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, geometryShader}
-
-        {-# INLINE readVkGeometryShader #-}
-        readVkGeometryShader p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, geometryShader}
-
-        {-# INLINE writeVkGeometryShader #-}
-        writeVkGeometryShader p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, geometryShader}
-
-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 CanReadField "geometryShader" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkGeometryShader
-
-        {-# INLINE readField #-}
-        readField = readVkGeometryShader
-
-instance CanWriteField "geometryShader" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkGeometryShader
-
-instance {-# OVERLAPPING #-}
-         HasVkTessellationShader VkPhysicalDeviceFeatures where
-        type VkTessellationShaderMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkTessellationShader #-}
-        vkTessellationShader x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, tessellationShader})
-
-        {-# INLINE vkTessellationShaderByteOffset #-}
-        vkTessellationShaderByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, tessellationShader}
-
-        {-# INLINE readVkTessellationShader #-}
-        readVkTessellationShader p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, tessellationShader}
-
-        {-# INLINE writeVkTessellationShader #-}
-        writeVkTessellationShader p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, tessellationShader}
-
-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 CanReadField "tessellationShader" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkTessellationShader
-
-        {-# INLINE readField #-}
-        readField = readVkTessellationShader
-
-instance CanWriteField "tessellationShader"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTessellationShader
-
-instance {-# OVERLAPPING #-}
-         HasVkSampleRateShading VkPhysicalDeviceFeatures where
-        type VkSampleRateShadingMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkSampleRateShading #-}
-        vkSampleRateShading x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sampleRateShading})
-
-        {-# INLINE vkSampleRateShadingByteOffset #-}
-        vkSampleRateShadingByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-
-        {-# INLINE readVkSampleRateShading #-}
-        readVkSampleRateShading p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-
-        {-# INLINE writeVkSampleRateShading #-}
-        writeVkSampleRateShading p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-
-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 CanReadField "sampleRateShading" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSampleRateShading
-
-        {-# INLINE readField #-}
-        readField = readVkSampleRateShading
-
-instance CanWriteField "sampleRateShading" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSampleRateShading
-
-instance {-# OVERLAPPING #-}
-         HasVkDualSrcBlend VkPhysicalDeviceFeatures where
-        type VkDualSrcBlendMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkDualSrcBlend #-}
-        vkDualSrcBlend x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, dualSrcBlend})
-
-        {-# INLINE vkDualSrcBlendByteOffset #-}
-        vkDualSrcBlendByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-
-        {-# INLINE readVkDualSrcBlend #-}
-        readVkDualSrcBlend p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-
-        {-# INLINE writeVkDualSrcBlend #-}
-        writeVkDualSrcBlend p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-
-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 CanReadField "dualSrcBlend" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkDualSrcBlend
-
-        {-# INLINE readField #-}
-        readField = readVkDualSrcBlend
-
-instance CanWriteField "dualSrcBlend" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDualSrcBlend
-
-instance {-# OVERLAPPING #-} HasVkLogicOp VkPhysicalDeviceFeatures
-         where
-        type VkLogicOpMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkLogicOp #-}
-        vkLogicOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, logicOp})
-
-        {-# INLINE vkLogicOpByteOffset #-}
-        vkLogicOpByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, logicOp}
-
-        {-# INLINE readVkLogicOp #-}
-        readVkLogicOp p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, logicOp}
-
-        {-# INLINE writeVkLogicOp #-}
-        writeVkLogicOp p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, logicOp}
-
-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 CanReadField "logicOp" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkLogicOp
-
-        {-# INLINE readField #-}
-        readField = readVkLogicOp
-
-instance CanWriteField "logicOp" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkLogicOp
-
-instance {-# OVERLAPPING #-}
-         HasVkMultiDrawIndirect VkPhysicalDeviceFeatures where
-        type VkMultiDrawIndirectMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkMultiDrawIndirect #-}
-        vkMultiDrawIndirect x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, multiDrawIndirect})
-
-        {-# INLINE vkMultiDrawIndirectByteOffset #-}
-        vkMultiDrawIndirectByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-
-        {-# INLINE readVkMultiDrawIndirect #-}
-        readVkMultiDrawIndirect p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-
-        {-# INLINE writeVkMultiDrawIndirect #-}
-        writeVkMultiDrawIndirect p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-
-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 CanReadField "multiDrawIndirect" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkMultiDrawIndirect
-
-        {-# INLINE readField #-}
-        readField = readVkMultiDrawIndirect
-
-instance CanWriteField "multiDrawIndirect" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMultiDrawIndirect
-
-instance {-# OVERLAPPING #-}
-         HasVkDrawIndirectFirstInstance VkPhysicalDeviceFeatures where
-        type VkDrawIndirectFirstInstanceMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkDrawIndirectFirstInstance #-}
-        vkDrawIndirectFirstInstance x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance})
-
-        {-# INLINE vkDrawIndirectFirstInstanceByteOffset #-}
-        vkDrawIndirectFirstInstanceByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-
-        {-# INLINE readVkDrawIndirectFirstInstance #-}
-        readVkDrawIndirectFirstInstance p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-
-        {-# INLINE writeVkDrawIndirectFirstInstance #-}
-        writeVkDrawIndirectFirstInstance p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-
-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 CanReadField "drawIndirectFirstInstance"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkDrawIndirectFirstInstance
-
-        {-# INLINE readField #-}
-        readField = readVkDrawIndirectFirstInstance
-
-instance CanWriteField "drawIndirectFirstInstance"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDrawIndirectFirstInstance
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthClamp VkPhysicalDeviceFeatures where
-        type VkDepthClampMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkDepthClamp #-}
-        vkDepthClamp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, depthClamp})
-
-        {-# INLINE vkDepthClampByteOffset #-}
-        vkDepthClampByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, depthClamp}
-
-        {-# INLINE readVkDepthClamp #-}
-        readVkDepthClamp p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, depthClamp}
-
-        {-# INLINE writeVkDepthClamp #-}
-        writeVkDepthClamp p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, depthClamp}
-
-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 CanReadField "depthClamp" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkDepthClamp
-
-        {-# INLINE readField #-}
-        readField = readVkDepthClamp
-
-instance CanWriteField "depthClamp" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkDepthClamp
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBiasClamp VkPhysicalDeviceFeatures where
-        type VkDepthBiasClampMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkDepthBiasClamp #-}
-        vkDepthBiasClamp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, depthBiasClamp})
-
-        {-# INLINE vkDepthBiasClampByteOffset #-}
-        vkDepthBiasClampByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-
-        {-# INLINE readVkDepthBiasClamp #-}
-        readVkDepthBiasClamp p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-
-        {-# INLINE writeVkDepthBiasClamp #-}
-        writeVkDepthBiasClamp p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-
-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 CanReadField "depthBiasClamp" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkDepthBiasClamp
-
-        {-# INLINE readField #-}
-        readField = readVkDepthBiasClamp
-
-instance CanWriteField "depthBiasClamp" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDepthBiasClamp
-
-instance {-# OVERLAPPING #-}
-         HasVkFillModeNonSolid VkPhysicalDeviceFeatures where
-        type VkFillModeNonSolidMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkFillModeNonSolid #-}
-        vkFillModeNonSolid x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, fillModeNonSolid})
-
-        {-# INLINE vkFillModeNonSolidByteOffset #-}
-        vkFillModeNonSolidByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-
-        {-# INLINE readVkFillModeNonSolid #-}
-        readVkFillModeNonSolid p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-
-        {-# INLINE writeVkFillModeNonSolid #-}
-        writeVkFillModeNonSolid p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-
-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 CanReadField "fillModeNonSolid" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkFillModeNonSolid
-
-        {-# INLINE readField #-}
-        readField = readVkFillModeNonSolid
-
-instance CanWriteField "fillModeNonSolid" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFillModeNonSolid
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBounds VkPhysicalDeviceFeatures where
-        type VkDepthBoundsMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkDepthBounds #-}
-        vkDepthBounds x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, depthBounds})
-
-        {-# INLINE vkDepthBoundsByteOffset #-}
-        vkDepthBoundsByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, depthBounds}
-
-        {-# INLINE readVkDepthBounds #-}
-        readVkDepthBounds p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, depthBounds}
-
-        {-# INLINE writeVkDepthBounds #-}
-        writeVkDepthBounds p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, depthBounds}
-
-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 CanReadField "depthBounds" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkDepthBounds
-
-        {-# INLINE readField #-}
-        readField = readVkDepthBounds
-
-instance CanWriteField "depthBounds" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkDepthBounds
-
-instance {-# OVERLAPPING #-}
-         HasVkWideLines VkPhysicalDeviceFeatures where
-        type VkWideLinesMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkWideLines #-}
-        vkWideLines x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, wideLines})
-
-        {-# INLINE vkWideLinesByteOffset #-}
-        vkWideLinesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, wideLines}
-
-        {-# INLINE readVkWideLines #-}
-        readVkWideLines p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, wideLines}
-
-        {-# INLINE writeVkWideLines #-}
-        writeVkWideLines p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, wideLines}
-
-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 CanReadField "wideLines" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkWideLines
-
-        {-# INLINE readField #-}
-        readField = readVkWideLines
-
-instance CanWriteField "wideLines" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkWideLines
-
-instance {-# OVERLAPPING #-}
-         HasVkLargePoints VkPhysicalDeviceFeatures where
-        type VkLargePointsMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkLargePoints #-}
-        vkLargePoints x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, largePoints})
-
-        {-# INLINE vkLargePointsByteOffset #-}
-        vkLargePointsByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, largePoints}
-
-        {-# INLINE readVkLargePoints #-}
-        readVkLargePoints p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, largePoints}
-
-        {-# INLINE writeVkLargePoints #-}
-        writeVkLargePoints p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, largePoints}
-
-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 CanReadField "largePoints" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkLargePoints
-
-        {-# INLINE readField #-}
-        readField = readVkLargePoints
-
-instance CanWriteField "largePoints" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkLargePoints
-
-instance {-# OVERLAPPING #-}
-         HasVkAlphaToOne VkPhysicalDeviceFeatures where
-        type VkAlphaToOneMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkAlphaToOne #-}
-        vkAlphaToOne x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, alphaToOne})
-
-        {-# INLINE vkAlphaToOneByteOffset #-}
-        vkAlphaToOneByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, alphaToOne}
-
-        {-# INLINE readVkAlphaToOne #-}
-        readVkAlphaToOne p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, alphaToOne}
-
-        {-# INLINE writeVkAlphaToOne #-}
-        writeVkAlphaToOne p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, alphaToOne}
-
-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 CanReadField "alphaToOne" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkAlphaToOne
-
-        {-# INLINE readField #-}
-        readField = readVkAlphaToOne
-
-instance CanWriteField "alphaToOne" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkAlphaToOne
-
-instance {-# OVERLAPPING #-}
-         HasVkMultiViewport VkPhysicalDeviceFeatures where
-        type VkMultiViewportMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkMultiViewport #-}
-        vkMultiViewport x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, multiViewport})
-
-        {-# INLINE vkMultiViewportByteOffset #-}
-        vkMultiViewportByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, multiViewport}
-
-        {-# INLINE readVkMultiViewport #-}
-        readVkMultiViewport p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, multiViewport}
-
-        {-# INLINE writeVkMultiViewport #-}
-        writeVkMultiViewport p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, multiViewport}
-
-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 CanReadField "multiViewport" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkMultiViewport
-
-        {-# INLINE readField #-}
-        readField = readVkMultiViewport
-
-instance CanWriteField "multiViewport" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMultiViewport
-
-instance {-# OVERLAPPING #-}
-         HasVkSamplerAnisotropy VkPhysicalDeviceFeatures where
-        type VkSamplerAnisotropyMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkSamplerAnisotropy #-}
-        vkSamplerAnisotropy x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, samplerAnisotropy})
-
-        {-# INLINE vkSamplerAnisotropyByteOffset #-}
-        vkSamplerAnisotropyByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-
-        {-# INLINE readVkSamplerAnisotropy #-}
-        readVkSamplerAnisotropy p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-
-        {-# INLINE writeVkSamplerAnisotropy #-}
-        writeVkSamplerAnisotropy p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-
-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 CanReadField "samplerAnisotropy" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSamplerAnisotropy
-
-        {-# INLINE readField #-}
-        readField = readVkSamplerAnisotropy
-
-instance CanWriteField "samplerAnisotropy" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSamplerAnisotropy
-
-instance {-# OVERLAPPING #-}
-         HasVkTextureCompressionETC2 VkPhysicalDeviceFeatures where
-        type VkTextureCompressionETC2MType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkTextureCompressionETC2 #-}
-        vkTextureCompressionETC2 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, textureCompressionETC2})
-
-        {-# INLINE vkTextureCompressionETC2ByteOffset #-}
-        vkTextureCompressionETC2ByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-
-        {-# INLINE readVkTextureCompressionETC2 #-}
-        readVkTextureCompressionETC2 p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-
-        {-# INLINE writeVkTextureCompressionETC2 #-}
-        writeVkTextureCompressionETC2 p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-
-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 CanReadField "textureCompressionETC2"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkTextureCompressionETC2
-
-        {-# INLINE readField #-}
-        readField = readVkTextureCompressionETC2
-
-instance CanWriteField "textureCompressionETC2"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTextureCompressionETC2
-
-instance {-# OVERLAPPING #-}
-         HasVkTextureCompressionASTC_LDR VkPhysicalDeviceFeatures where
-        type VkTextureCompressionASTC_LDRMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkTextureCompressionASTC_LDR #-}
-        vkTextureCompressionASTC_LDR x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR})
-
-        {-# INLINE vkTextureCompressionASTC_LDRByteOffset #-}
-        vkTextureCompressionASTC_LDRByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-
-        {-# INLINE readVkTextureCompressionASTC_LDR #-}
-        readVkTextureCompressionASTC_LDR p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-
-        {-# INLINE writeVkTextureCompressionASTC_LDR #-}
-        writeVkTextureCompressionASTC_LDR p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-
-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 CanReadField "textureCompressionASTC_LDR"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkTextureCompressionASTC_LDR
-
-        {-# INLINE readField #-}
-        readField = readVkTextureCompressionASTC_LDR
-
-instance CanWriteField "textureCompressionASTC_LDR"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTextureCompressionASTC_LDR
-
-instance {-# OVERLAPPING #-}
-         HasVkTextureCompressionBC VkPhysicalDeviceFeatures where
-        type VkTextureCompressionBCMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkTextureCompressionBC #-}
-        vkTextureCompressionBC x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, textureCompressionBC})
-
-        {-# INLINE vkTextureCompressionBCByteOffset #-}
-        vkTextureCompressionBCByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-
-        {-# INLINE readVkTextureCompressionBC #-}
-        readVkTextureCompressionBC p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-
-        {-# INLINE writeVkTextureCompressionBC #-}
-        writeVkTextureCompressionBC p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-
-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 CanReadField "textureCompressionBC"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkTextureCompressionBC
-
-        {-# INLINE readField #-}
-        readField = readVkTextureCompressionBC
-
-instance CanWriteField "textureCompressionBC"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTextureCompressionBC
-
-instance {-# OVERLAPPING #-}
-         HasVkOcclusionQueryPrecise VkPhysicalDeviceFeatures where
-        type VkOcclusionQueryPreciseMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkOcclusionQueryPrecise #-}
-        vkOcclusionQueryPrecise x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise})
-
-        {-# INLINE vkOcclusionQueryPreciseByteOffset #-}
-        vkOcclusionQueryPreciseByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-
-        {-# INLINE readVkOcclusionQueryPrecise #-}
-        readVkOcclusionQueryPrecise p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-
-        {-# INLINE writeVkOcclusionQueryPrecise #-}
-        writeVkOcclusionQueryPrecise p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-
-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 CanReadField "occlusionQueryPrecise"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkOcclusionQueryPrecise
-
-        {-# INLINE readField #-}
-        readField = readVkOcclusionQueryPrecise
-
-instance CanWriteField "occlusionQueryPrecise"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkOcclusionQueryPrecise
-
-instance {-# OVERLAPPING #-}
-         HasVkPipelineStatisticsQuery VkPhysicalDeviceFeatures where
-        type VkPipelineStatisticsQueryMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkPipelineStatisticsQuery #-}
-        vkPipelineStatisticsQuery x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery})
-
-        {-# INLINE vkPipelineStatisticsQueryByteOffset #-}
-        vkPipelineStatisticsQueryByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-
-        {-# INLINE readVkPipelineStatisticsQuery #-}
-        readVkPipelineStatisticsQuery p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-
-        {-# INLINE writeVkPipelineStatisticsQuery #-}
-        writeVkPipelineStatisticsQuery p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-
-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 CanReadField "pipelineStatisticsQuery"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkPipelineStatisticsQuery
-
-        {-# INLINE readField #-}
-        readField = readVkPipelineStatisticsQuery
-
-instance CanWriteField "pipelineStatisticsQuery"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPipelineStatisticsQuery
-
-instance {-# OVERLAPPING #-}
-         HasVkVertexPipelineStoresAndAtomics VkPhysicalDeviceFeatures where
-        type VkVertexPipelineStoresAndAtomicsMType VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkVertexPipelineStoresAndAtomics #-}
-        vkVertexPipelineStoresAndAtomics x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics})
-
-        {-# INLINE vkVertexPipelineStoresAndAtomicsByteOffset #-}
-        vkVertexPipelineStoresAndAtomicsByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-
-        {-# INLINE readVkVertexPipelineStoresAndAtomics #-}
-        readVkVertexPipelineStoresAndAtomics p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-
-        {-# INLINE writeVkVertexPipelineStoresAndAtomics #-}
-        writeVkVertexPipelineStoresAndAtomics p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-
-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 CanReadField "vertexPipelineStoresAndAtomics"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkVertexPipelineStoresAndAtomics
-
-        {-# INLINE readField #-}
-        readField = readVkVertexPipelineStoresAndAtomics
-
-instance CanWriteField "vertexPipelineStoresAndAtomics"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVertexPipelineStoresAndAtomics
-
-instance {-# OVERLAPPING #-}
-         HasVkFragmentStoresAndAtomics VkPhysicalDeviceFeatures where
-        type VkFragmentStoresAndAtomicsMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkFragmentStoresAndAtomics #-}
-        vkFragmentStoresAndAtomics x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics})
-
-        {-# INLINE vkFragmentStoresAndAtomicsByteOffset #-}
-        vkFragmentStoresAndAtomicsByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-
-        {-# INLINE readVkFragmentStoresAndAtomics #-}
-        readVkFragmentStoresAndAtomics p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-
-        {-# INLINE writeVkFragmentStoresAndAtomics #-}
-        writeVkFragmentStoresAndAtomics p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-
-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 CanReadField "fragmentStoresAndAtomics"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkFragmentStoresAndAtomics
-
-        {-# INLINE readField #-}
-        readField = readVkFragmentStoresAndAtomics
-
-instance CanWriteField "fragmentStoresAndAtomics"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFragmentStoresAndAtomics
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderTessellationAndGeometryPointSize
-           VkPhysicalDeviceFeatures
-         where
-        type VkShaderTessellationAndGeometryPointSizeMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderTessellationAndGeometryPointSize #-}
-        vkShaderTessellationAndGeometryPointSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize})
-
-        {-# INLINE vkShaderTessellationAndGeometryPointSizeByteOffset #-}
-        vkShaderTessellationAndGeometryPointSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-
-        {-# INLINE readVkShaderTessellationAndGeometryPointSize #-}
-        readVkShaderTessellationAndGeometryPointSize p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-
-        {-# INLINE writeVkShaderTessellationAndGeometryPointSize #-}
-        writeVkShaderTessellationAndGeometryPointSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-
-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 CanReadField "shaderTessellationAndGeometryPointSize"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderTessellationAndGeometryPointSize
-
-        {-# INLINE readField #-}
-        readField = readVkShaderTessellationAndGeometryPointSize
-
-instance CanWriteField "shaderTessellationAndGeometryPointSize"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderTessellationAndGeometryPointSize
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderImageGatherExtended VkPhysicalDeviceFeatures where
-        type VkShaderImageGatherExtendedMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkShaderImageGatherExtended #-}
-        vkShaderImageGatherExtended x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended})
-
-        {-# INLINE vkShaderImageGatherExtendedByteOffset #-}
-        vkShaderImageGatherExtendedByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-
-        {-# INLINE readVkShaderImageGatherExtended #-}
-        readVkShaderImageGatherExtended p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-
-        {-# INLINE writeVkShaderImageGatherExtended #-}
-        writeVkShaderImageGatherExtended p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-
-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 CanReadField "shaderImageGatherExtended"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderImageGatherExtended
-
-        {-# INLINE readField #-}
-        readField = readVkShaderImageGatherExtended
-
-instance CanWriteField "shaderImageGatherExtended"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderImageGatherExtended
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderStorageImageExtendedFormats VkPhysicalDeviceFeatures
-         where
-        type VkShaderStorageImageExtendedFormatsMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderStorageImageExtendedFormats #-}
-        vkShaderStorageImageExtendedFormats x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats})
-
-        {-# INLINE vkShaderStorageImageExtendedFormatsByteOffset #-}
-        vkShaderStorageImageExtendedFormatsByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-
-        {-# INLINE readVkShaderStorageImageExtendedFormats #-}
-        readVkShaderStorageImageExtendedFormats p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-
-        {-# INLINE writeVkShaderStorageImageExtendedFormats #-}
-        writeVkShaderStorageImageExtendedFormats p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-
-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 CanReadField "shaderStorageImageExtendedFormats"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStorageImageExtendedFormats
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStorageImageExtendedFormats
-
-instance CanWriteField "shaderStorageImageExtendedFormats"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderStorageImageExtendedFormats
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderStorageImageMultisample VkPhysicalDeviceFeatures where
-        type VkShaderStorageImageMultisampleMType VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderStorageImageMultisample #-}
-        vkShaderStorageImageMultisample x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample})
-
-        {-# INLINE vkShaderStorageImageMultisampleByteOffset #-}
-        vkShaderStorageImageMultisampleByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-
-        {-# INLINE readVkShaderStorageImageMultisample #-}
-        readVkShaderStorageImageMultisample p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-
-        {-# INLINE writeVkShaderStorageImageMultisample #-}
-        writeVkShaderStorageImageMultisample p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-
-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 CanReadField "shaderStorageImageMultisample"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStorageImageMultisample
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStorageImageMultisample
-
-instance CanWriteField "shaderStorageImageMultisample"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderStorageImageMultisample
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderStorageImageReadWithoutFormat VkPhysicalDeviceFeatures
-         where
-        type VkShaderStorageImageReadWithoutFormatMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderStorageImageReadWithoutFormat #-}
-        vkShaderStorageImageReadWithoutFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat})
-
-        {-# INLINE vkShaderStorageImageReadWithoutFormatByteOffset #-}
-        vkShaderStorageImageReadWithoutFormatByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-
-        {-# INLINE readVkShaderStorageImageReadWithoutFormat #-}
-        readVkShaderStorageImageReadWithoutFormat p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-
-        {-# INLINE writeVkShaderStorageImageReadWithoutFormat #-}
-        writeVkShaderStorageImageReadWithoutFormat p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-
-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 CanReadField "shaderStorageImageReadWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStorageImageReadWithoutFormat
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStorageImageReadWithoutFormat
-
-instance CanWriteField "shaderStorageImageReadWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderStorageImageReadWithoutFormat
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderStorageImageWriteWithoutFormat VkPhysicalDeviceFeatures
-         where
-        type VkShaderStorageImageWriteWithoutFormatMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderStorageImageWriteWithoutFormat #-}
-        vkShaderStorageImageWriteWithoutFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat})
-
-        {-# INLINE vkShaderStorageImageWriteWithoutFormatByteOffset #-}
-        vkShaderStorageImageWriteWithoutFormatByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-
-        {-# INLINE readVkShaderStorageImageWriteWithoutFormat #-}
-        readVkShaderStorageImageWriteWithoutFormat p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-
-        {-# INLINE writeVkShaderStorageImageWriteWithoutFormat #-}
-        writeVkShaderStorageImageWriteWithoutFormat p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-
-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 CanReadField "shaderStorageImageWriteWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStorageImageWriteWithoutFormat
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStorageImageWriteWithoutFormat
-
-instance CanWriteField "shaderStorageImageWriteWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderStorageImageWriteWithoutFormat
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderUniformBufferArrayDynamicIndexing
-           VkPhysicalDeviceFeatures
-         where
-        type VkShaderUniformBufferArrayDynamicIndexingMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderUniformBufferArrayDynamicIndexing #-}
-        vkShaderUniformBufferArrayDynamicIndexing x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing})
-
-        {-# INLINE vkShaderUniformBufferArrayDynamicIndexingByteOffset #-}
-        vkShaderUniformBufferArrayDynamicIndexingByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-
-        {-# INLINE readVkShaderUniformBufferArrayDynamicIndexing #-}
-        readVkShaderUniformBufferArrayDynamicIndexing p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-
-        {-# INLINE writeVkShaderUniformBufferArrayDynamicIndexing #-}
-        writeVkShaderUniformBufferArrayDynamicIndexing p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-
-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 CanReadField "shaderUniformBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderUniformBufferArrayDynamicIndexing
-
-        {-# INLINE readField #-}
-        readField = readVkShaderUniformBufferArrayDynamicIndexing
-
-instance CanWriteField "shaderUniformBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderUniformBufferArrayDynamicIndexing
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderSampledImageArrayDynamicIndexing
-           VkPhysicalDeviceFeatures
-         where
-        type VkShaderSampledImageArrayDynamicIndexingMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderSampledImageArrayDynamicIndexing #-}
-        vkShaderSampledImageArrayDynamicIndexing x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing})
-
-        {-# INLINE vkShaderSampledImageArrayDynamicIndexingByteOffset #-}
-        vkShaderSampledImageArrayDynamicIndexingByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-
-        {-# INLINE readVkShaderSampledImageArrayDynamicIndexing #-}
-        readVkShaderSampledImageArrayDynamicIndexing p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-
-        {-# INLINE writeVkShaderSampledImageArrayDynamicIndexing #-}
-        writeVkShaderSampledImageArrayDynamicIndexing p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-
-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 CanReadField "shaderSampledImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderSampledImageArrayDynamicIndexing
-
-        {-# INLINE readField #-}
-        readField = readVkShaderSampledImageArrayDynamicIndexing
-
-instance CanWriteField "shaderSampledImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderSampledImageArrayDynamicIndexing
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderStorageBufferArrayDynamicIndexing
-           VkPhysicalDeviceFeatures
-         where
-        type VkShaderStorageBufferArrayDynamicIndexingMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderStorageBufferArrayDynamicIndexing #-}
-        vkShaderStorageBufferArrayDynamicIndexing x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing})
-
-        {-# INLINE vkShaderStorageBufferArrayDynamicIndexingByteOffset #-}
-        vkShaderStorageBufferArrayDynamicIndexingByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-
-        {-# INLINE readVkShaderStorageBufferArrayDynamicIndexing #-}
-        readVkShaderStorageBufferArrayDynamicIndexing p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-
-        {-# INLINE writeVkShaderStorageBufferArrayDynamicIndexing #-}
-        writeVkShaderStorageBufferArrayDynamicIndexing p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-
-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 CanReadField "shaderStorageBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStorageBufferArrayDynamicIndexing
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStorageBufferArrayDynamicIndexing
-
-instance CanWriteField "shaderStorageBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderStorageBufferArrayDynamicIndexing
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderStorageImageArrayDynamicIndexing
-           VkPhysicalDeviceFeatures
-         where
-        type VkShaderStorageImageArrayDynamicIndexingMType
-               VkPhysicalDeviceFeatures
-             = VkBool32
-
-        {-# NOINLINE vkShaderStorageImageArrayDynamicIndexing #-}
-        vkShaderStorageImageArrayDynamicIndexing x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing})
-
-        {-# INLINE vkShaderStorageImageArrayDynamicIndexingByteOffset #-}
-        vkShaderStorageImageArrayDynamicIndexingByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-
-        {-# INLINE readVkShaderStorageImageArrayDynamicIndexing #-}
-        readVkShaderStorageImageArrayDynamicIndexing p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-
-        {-# INLINE writeVkShaderStorageImageArrayDynamicIndexing #-}
-        writeVkShaderStorageImageArrayDynamicIndexing p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-
-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 CanReadField "shaderStorageImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStorageImageArrayDynamicIndexing
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStorageImageArrayDynamicIndexing
-
-instance CanWriteField "shaderStorageImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderStorageImageArrayDynamicIndexing
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderClipDistance VkPhysicalDeviceFeatures where
-        type VkShaderClipDistanceMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkShaderClipDistance #-}
-        vkShaderClipDistance x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderClipDistance})
-
-        {-# INLINE vkShaderClipDistanceByteOffset #-}
-        vkShaderClipDistanceByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-
-        {-# INLINE readVkShaderClipDistance #-}
-        readVkShaderClipDistance p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-
-        {-# INLINE writeVkShaderClipDistance #-}
-        writeVkShaderClipDistance p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-
-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 CanReadField "shaderClipDistance" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderClipDistance
-
-        {-# INLINE readField #-}
-        readField = readVkShaderClipDistance
-
-instance CanWriteField "shaderClipDistance"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderClipDistance
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderCullDistance VkPhysicalDeviceFeatures where
-        type VkShaderCullDistanceMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkShaderCullDistance #-}
-        vkShaderCullDistance x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderCullDistance})
-
-        {-# INLINE vkShaderCullDistanceByteOffset #-}
-        vkShaderCullDistanceByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-
-        {-# INLINE readVkShaderCullDistance #-}
-        readVkShaderCullDistance p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-
-        {-# INLINE writeVkShaderCullDistance #-}
-        writeVkShaderCullDistance p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-
-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 CanReadField "shaderCullDistance" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderCullDistance
-
-        {-# INLINE readField #-}
-        readField = readVkShaderCullDistance
-
-instance CanWriteField "shaderCullDistance"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderCullDistance
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderFloat64 VkPhysicalDeviceFeatures where
-        type VkShaderFloat64MType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkShaderFloat64 #-}
-        vkShaderFloat64 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderFloat64})
-
-        {-# INLINE vkShaderFloat64ByteOffset #-}
-        vkShaderFloat64ByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-
-        {-# INLINE readVkShaderFloat64 #-}
-        readVkShaderFloat64 p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-
-        {-# INLINE writeVkShaderFloat64 #-}
-        writeVkShaderFloat64 p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-
-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 CanReadField "shaderFloat64" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderFloat64
-
-        {-# INLINE readField #-}
-        readField = readVkShaderFloat64
-
-instance CanWriteField "shaderFloat64" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderFloat64
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderInt64 VkPhysicalDeviceFeatures where
-        type VkShaderInt64MType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkShaderInt64 #-}
-        vkShaderInt64 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderInt64})
-
-        {-# INLINE vkShaderInt64ByteOffset #-}
-        vkShaderInt64ByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderInt64}
-
-        {-# INLINE readVkShaderInt64 #-}
-        readVkShaderInt64 p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt64}
-
-        {-# INLINE writeVkShaderInt64 #-}
-        writeVkShaderInt64 p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt64}
-
-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 CanReadField "shaderInt64" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkShaderInt64
-
-        {-# INLINE readField #-}
-        readField = readVkShaderInt64
-
-instance CanWriteField "shaderInt64" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderInt64
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderInt16 VkPhysicalDeviceFeatures where
-        type VkShaderInt16MType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkShaderInt16 #-}
-        vkShaderInt16 x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderInt16})
-
-        {-# INLINE vkShaderInt16ByteOffset #-}
-        vkShaderInt16ByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderInt16}
-
-        {-# INLINE readVkShaderInt16 #-}
-        readVkShaderInt16 p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt16}
-
-        {-# INLINE writeVkShaderInt16 #-}
-        writeVkShaderInt16 p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt16}
-
-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 CanReadField "shaderInt16" VkPhysicalDeviceFeatures where
-        {-# INLINE getField #-}
-        getField = vkShaderInt16
-
-        {-# INLINE readField #-}
-        readField = readVkShaderInt16
-
-instance CanWriteField "shaderInt16" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderInt16
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderResourceResidency VkPhysicalDeviceFeatures where
-        type VkShaderResourceResidencyMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkShaderResourceResidency #-}
-        vkShaderResourceResidency x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderResourceResidency})
-
-        {-# INLINE vkShaderResourceResidencyByteOffset #-}
-        vkShaderResourceResidencyByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-
-        {-# INLINE readVkShaderResourceResidency #-}
-        readVkShaderResourceResidency p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-
-        {-# INLINE writeVkShaderResourceResidency #-}
-        writeVkShaderResourceResidency p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-
-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 CanReadField "shaderResourceResidency"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderResourceResidency
-
-        {-# INLINE readField #-}
-        readField = readVkShaderResourceResidency
-
-instance CanWriteField "shaderResourceResidency"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderResourceResidency
-
-instance {-# OVERLAPPING #-}
-         HasVkShaderResourceMinLod VkPhysicalDeviceFeatures where
-        type VkShaderResourceMinLodMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkShaderResourceMinLod #-}
-        vkShaderResourceMinLod x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod})
-
-        {-# INLINE vkShaderResourceMinLodByteOffset #-}
-        vkShaderResourceMinLodByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-
-        {-# INLINE readVkShaderResourceMinLod #-}
-        readVkShaderResourceMinLod p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-
-        {-# INLINE writeVkShaderResourceMinLod #-}
-        writeVkShaderResourceMinLod p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-
-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 CanReadField "shaderResourceMinLod"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderResourceMinLod
-
-        {-# INLINE readField #-}
-        readField = readVkShaderResourceMinLod
-
-instance CanWriteField "shaderResourceMinLod"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkShaderResourceMinLod
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseBinding VkPhysicalDeviceFeatures where
-        type VkSparseBindingMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkSparseBinding #-}
-        vkSparseBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseBinding})
-
-        {-# INLINE vkSparseBindingByteOffset #-}
-        vkSparseBindingByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseBinding}
-
-        {-# INLINE readVkSparseBinding #-}
-        readVkSparseBinding p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseBinding}
-
-        {-# INLINE writeVkSparseBinding #-}
-        writeVkSparseBinding p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseBinding}
-
-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 CanReadField "sparseBinding" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseBinding
-
-        {-# INLINE readField #-}
-        readField = readVkSparseBinding
-
-instance CanWriteField "sparseBinding" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseBinding
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidencyBuffer VkPhysicalDeviceFeatures where
-        type VkSparseResidencyBufferMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidencyBuffer #-}
-        vkSparseResidencyBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer})
-
-        {-# INLINE vkSparseResidencyBufferByteOffset #-}
-        vkSparseResidencyBufferByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-
-        {-# INLINE readVkSparseResidencyBuffer #-}
-        readVkSparseResidencyBuffer p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-
-        {-# INLINE writeVkSparseResidencyBuffer #-}
-        writeVkSparseResidencyBuffer p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-
-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 CanReadField "sparseResidencyBuffer"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidencyBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidencyBuffer
-
-instance CanWriteField "sparseResidencyBuffer"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidencyBuffer
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidencyImage2D VkPhysicalDeviceFeatures where
-        type VkSparseResidencyImage2DMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidencyImage2D #-}
-        vkSparseResidencyImage2D x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D})
-
-        {-# INLINE vkSparseResidencyImage2DByteOffset #-}
-        vkSparseResidencyImage2DByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-
-        {-# INLINE readVkSparseResidencyImage2D #-}
-        readVkSparseResidencyImage2D p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-
-        {-# INLINE writeVkSparseResidencyImage2D #-}
-        writeVkSparseResidencyImage2D p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-
-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 CanReadField "sparseResidencyImage2D"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidencyImage2D
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidencyImage2D
-
-instance CanWriteField "sparseResidencyImage2D"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidencyImage2D
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidencyImage3D VkPhysicalDeviceFeatures where
-        type VkSparseResidencyImage3DMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidencyImage3D #-}
-        vkSparseResidencyImage3D x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D})
-
-        {-# INLINE vkSparseResidencyImage3DByteOffset #-}
-        vkSparseResidencyImage3DByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-
-        {-# INLINE readVkSparseResidencyImage3D #-}
-        readVkSparseResidencyImage3D p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-
-        {-# INLINE writeVkSparseResidencyImage3D #-}
-        writeVkSparseResidencyImage3D p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-
-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 CanReadField "sparseResidencyImage3D"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidencyImage3D
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidencyImage3D
-
-instance CanWriteField "sparseResidencyImage3D"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidencyImage3D
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidency2Samples VkPhysicalDeviceFeatures where
-        type VkSparseResidency2SamplesMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidency2Samples #-}
-        vkSparseResidency2Samples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples})
-
-        {-# INLINE vkSparseResidency2SamplesByteOffset #-}
-        vkSparseResidency2SamplesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-
-        {-# INLINE readVkSparseResidency2Samples #-}
-        readVkSparseResidency2Samples p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-
-        {-# INLINE writeVkSparseResidency2Samples #-}
-        writeVkSparseResidency2Samples p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-
-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 CanReadField "sparseResidency2Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidency2Samples
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidency2Samples
-
-instance CanWriteField "sparseResidency2Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidency2Samples
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidency4Samples VkPhysicalDeviceFeatures where
-        type VkSparseResidency4SamplesMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidency4Samples #-}
-        vkSparseResidency4Samples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples})
-
-        {-# INLINE vkSparseResidency4SamplesByteOffset #-}
-        vkSparseResidency4SamplesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-
-        {-# INLINE readVkSparseResidency4Samples #-}
-        readVkSparseResidency4Samples p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-
-        {-# INLINE writeVkSparseResidency4Samples #-}
-        writeVkSparseResidency4Samples p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-
-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 CanReadField "sparseResidency4Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidency4Samples
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidency4Samples
-
-instance CanWriteField "sparseResidency4Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidency4Samples
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidency8Samples VkPhysicalDeviceFeatures where
-        type VkSparseResidency8SamplesMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidency8Samples #-}
-        vkSparseResidency8Samples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples})
-
-        {-# INLINE vkSparseResidency8SamplesByteOffset #-}
-        vkSparseResidency8SamplesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-
-        {-# INLINE readVkSparseResidency8Samples #-}
-        readVkSparseResidency8Samples p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-
-        {-# INLINE writeVkSparseResidency8Samples #-}
-        writeVkSparseResidency8Samples p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-
-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 CanReadField "sparseResidency8Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidency8Samples
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidency8Samples
-
-instance CanWriteField "sparseResidency8Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidency8Samples
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidency16Samples VkPhysicalDeviceFeatures where
-        type VkSparseResidency16SamplesMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidency16Samples #-}
-        vkSparseResidency16Samples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples})
-
-        {-# INLINE vkSparseResidency16SamplesByteOffset #-}
-        vkSparseResidency16SamplesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-
-        {-# INLINE readVkSparseResidency16Samples #-}
-        readVkSparseResidency16Samples p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-
-        {-# INLINE writeVkSparseResidency16Samples #-}
-        writeVkSparseResidency16Samples p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-
-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 CanReadField "sparseResidency16Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidency16Samples
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidency16Samples
-
-instance CanWriteField "sparseResidency16Samples"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidency16Samples
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseResidencyAliased VkPhysicalDeviceFeatures where
-        type VkSparseResidencyAliasedMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkSparseResidencyAliased #-}
-        vkSparseResidencyAliased x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased})
-
-        {-# INLINE vkSparseResidencyAliasedByteOffset #-}
-        vkSparseResidencyAliasedByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-
-        {-# INLINE readVkSparseResidencyAliased #-}
-        readVkSparseResidencyAliased p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-
-        {-# INLINE writeVkSparseResidencyAliased #-}
-        writeVkSparseResidencyAliased p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-
-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 CanReadField "sparseResidencyAliased"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseResidencyAliased
-
-        {-# INLINE readField #-}
-        readField = readVkSparseResidencyAliased
-
-instance CanWriteField "sparseResidencyAliased"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSparseResidencyAliased
-
-instance {-# OVERLAPPING #-}
-         HasVkVariableMultisampleRate VkPhysicalDeviceFeatures where
-        type VkVariableMultisampleRateMType VkPhysicalDeviceFeatures =
-             VkBool32
-
-        {-# NOINLINE vkVariableMultisampleRate #-}
-        vkVariableMultisampleRate x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, variableMultisampleRate})
-
-        {-# INLINE vkVariableMultisampleRateByteOffset #-}
-        vkVariableMultisampleRateByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-
-        {-# INLINE readVkVariableMultisampleRate #-}
-        readVkVariableMultisampleRate p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-
-        {-# INLINE writeVkVariableMultisampleRate #-}
-        writeVkVariableMultisampleRate p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-
-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 CanReadField "variableMultisampleRate"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkVariableMultisampleRate
-
-        {-# INLINE readField #-}
-        readField = readVkVariableMultisampleRate
-
-instance CanWriteField "variableMultisampleRate"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVariableMultisampleRate
-
-instance {-# OVERLAPPING #-}
-         HasVkInheritedQueries VkPhysicalDeviceFeatures where
-        type VkInheritedQueriesMType VkPhysicalDeviceFeatures = VkBool32
-
-        {-# NOINLINE vkInheritedQueries #-}
-        vkInheritedQueries x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, inheritedQueries})
-
-        {-# INLINE vkInheritedQueriesByteOffset #-}
-        vkInheritedQueriesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-
-        {-# INLINE readVkInheritedQueries #-}
-        readVkInheritedQueries p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-
-        {-# INLINE writeVkInheritedQueries #-}
-        writeVkInheritedQueries p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-
-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 CanReadField "inheritedQueries" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE getField #-}
-        getField = vkInheritedQueries
-
-        {-# INLINE readField #-}
-        readField = readVkInheritedQueries
-
-instance CanWriteField "inheritedQueries" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkInheritedQueries
-
-instance Show VkPhysicalDeviceFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceFeatures {" .
-              showString "vkRobustBufferAccess = " .
-                showsPrec d (vkRobustBufferAccess x) .
-                  showString ", " .
-                    showString "vkFullDrawIndexUint32 = " .
-                      showsPrec d (vkFullDrawIndexUint32 x) .
-                        showString ", " .
-                          showString "vkImageCubeArray = " .
-                            showsPrec d (vkImageCubeArray x) .
-                              showString ", " .
-                                showString "vkIndependentBlend = " .
-                                  showsPrec d (vkIndependentBlend x) .
-                                    showString ", " .
-                                      showString "vkGeometryShader = " .
-                                        showsPrec d (vkGeometryShader x) .
-                                          showString ", " .
-                                            showString "vkTessellationShader = " .
-                                              showsPrec d (vkTessellationShader x) .
-                                                showString ", " .
-                                                  showString "vkSampleRateShading = " .
-                                                    showsPrec d (vkSampleRateShading x) .
-                                                      showString ", " .
-                                                        showString "vkDualSrcBlend = " .
-                                                          showsPrec d (vkDualSrcBlend x) .
-                                                            showString ", " .
-                                                              showString "vkLogicOp = " .
-                                                                showsPrec d (vkLogicOp x) .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "vkMultiDrawIndirect = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (vkMultiDrawIndirect x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "vkDrawIndirectFirstInstance = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (vkDrawIndirectFirstInstance
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "vkDepthClamp = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (vkDepthClamp x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "vkDepthBiasClamp = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (vkDepthBiasClamp
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "vkFillModeNonSolid = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (vkFillModeNonSolid
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "vkDepthBounds = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (vkDepthBounds
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "vkWideLines = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (vkWideLines
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "vkLargePoints = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (vkLargePoints
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "vkAlphaToOne = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (vkAlphaToOne
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "vkMultiViewport = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (vkMultiViewport
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showString
-                                                                                                                                ", "
-                                                                                                                                .
-                                                                                                                                showString
-                                                                                                                                  "vkSamplerAnisotropy = "
-                                                                                                                                  .
-                                                                                                                                  showsPrec
-                                                                                                                                    d
-                                                                                                                                    (vkSamplerAnisotropy
-                                                                                                                                       x)
-                                                                                                                                    .
-                                                                                                                                    showString
-                                                                                                                                      ", "
-                                                                                                                                      .
-                                                                                                                                      showString
-                                                                                                                                        "vkTextureCompressionETC2 = "
-                                                                                                                                        .
-                                                                                                                                        showsPrec
-                                                                                                                                          d
-                                                                                                                                          (vkTextureCompressionETC2
-                                                                                                                                             x)
-                                                                                                                                          .
-                                                                                                                                          showString
-                                                                                                                                            ", "
-                                                                                                                                            .
-                                                                                                                                            showString
-                                                                                                                                              "vkTextureCompressionASTC_LDR = "
-                                                                                                                                              .
-                                                                                                                                              showsPrec
-                                                                                                                                                d
-                                                                                                                                                (vkTextureCompressionASTC_LDR
-                                                                                                                                                   x)
-                                                                                                                                                .
-                                                                                                                                                showString
-                                                                                                                                                  ", "
-                                                                                                                                                  .
-                                                                                                                                                  showString
-                                                                                                                                                    "vkTextureCompressionBC = "
-                                                                                                                                                    .
-                                                                                                                                                    showsPrec
-                                                                                                                                                      d
-                                                                                                                                                      (vkTextureCompressionBC
-                                                                                                                                                         x)
-                                                                                                                                                      .
-                                                                                                                                                      showString
-                                                                                                                                                        ", "
-                                                                                                                                                        .
-                                                                                                                                                        showString
-                                                                                                                                                          "vkOcclusionQueryPrecise = "
-                                                                                                                                                          .
-                                                                                                                                                          showsPrec
-                                                                                                                                                            d
-                                                                                                                                                            (vkOcclusionQueryPrecise
-                                                                                                                                                               x)
-                                                                                                                                                            .
-                                                                                                                                                            showString
-                                                                                                                                                              ", "
-                                                                                                                                                              .
-                                                                                                                                                              showString
-                                                                                                                                                                "vkPipelineStatisticsQuery = "
-                                                                                                                                                                .
-                                                                                                                                                                showsPrec
-                                                                                                                                                                  d
-                                                                                                                                                                  (vkPipelineStatisticsQuery
-                                                                                                                                                                     x)
-                                                                                                                                                                  .
-                                                                                                                                                                  showString
-                                                                                                                                                                    ", "
-                                                                                                                                                                    .
-                                                                                                                                                                    showString
-                                                                                                                                                                      "vkVertexPipelineStoresAndAtomics = "
-                                                                                                                                                                      .
-                                                                                                                                                                      showsPrec
-                                                                                                                                                                        d
-                                                                                                                                                                        (vkVertexPipelineStoresAndAtomics
-                                                                                                                                                                           x)
-                                                                                                                                                                        .
-                                                                                                                                                                        showString
-                                                                                                                                                                          ", "
-                                                                                                                                                                          .
-                                                                                                                                                                          showString
-                                                                                                                                                                            "vkFragmentStoresAndAtomics = "
-                                                                                                                                                                            .
-                                                                                                                                                                            showsPrec
-                                                                                                                                                                              d
-                                                                                                                                                                              (vkFragmentStoresAndAtomics
-                                                                                                                                                                                 x)
-                                                                                                                                                                              .
-                                                                                                                                                                              showString
-                                                                                                                                                                                ", "
-                                                                                                                                                                                .
-                                                                                                                                                                                showString
-                                                                                                                                                                                  "vkShaderTessellationAndGeometryPointSize = "
-                                                                                                                                                                                  .
-                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                    d
-                                                                                                                                                                                    (vkShaderTessellationAndGeometryPointSize
-                                                                                                                                                                                       x)
-                                                                                                                                                                                    .
-                                                                                                                                                                                    showString
-                                                                                                                                                                                      ", "
-                                                                                                                                                                                      .
-                                                                                                                                                                                      showString
-                                                                                                                                                                                        "vkShaderImageGatherExtended = "
-                                                                                                                                                                                        .
-                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                          d
-                                                                                                                                                                                          (vkShaderImageGatherExtended
-                                                                                                                                                                                             x)
-                                                                                                                                                                                          .
-                                                                                                                                                                                          showString
-                                                                                                                                                                                            ", "
-                                                                                                                                                                                            .
-                                                                                                                                                                                            showString
-                                                                                                                                                                                              "vkShaderStorageImageExtendedFormats = "
-                                                                                                                                                                                              .
-                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                d
-                                                                                                                                                                                                (vkShaderStorageImageExtendedFormats
-                                                                                                                                                                                                   x)
-                                                                                                                                                                                                .
-                                                                                                                                                                                                showString
-                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                  .
-                                                                                                                                                                                                  showString
-                                                                                                                                                                                                    "vkShaderStorageImageMultisample = "
-                                                                                                                                                                                                    .
-                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                      d
-                                                                                                                                                                                                      (vkShaderStorageImageMultisample
-                                                                                                                                                                                                         x)
-                                                                                                                                                                                                      .
-                                                                                                                                                                                                      showString
-                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                        .
-                                                                                                                                                                                                        showString
-                                                                                                                                                                                                          "vkShaderStorageImageReadWithoutFormat = "
-                                                                                                                                                                                                          .
-                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                            d
-                                                                                                                                                                                                            (vkShaderStorageImageReadWithoutFormat
-                                                                                                                                                                                                               x)
-                                                                                                                                                                                                            .
-                                                                                                                                                                                                            showString
-                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                              .
-                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                "vkShaderStorageImageWriteWithoutFormat = "
-                                                                                                                                                                                                                .
-                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                  (vkShaderStorageImageWriteWithoutFormat
-                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                      "vkShaderUniformBufferArrayDynamicIndexing = "
-                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                        (vkShaderUniformBufferArrayDynamicIndexing
-                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                            "vkShaderSampledImageArrayDynamicIndexing = "
-                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                              (vkShaderSampledImageArrayDynamicIndexing
-                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                  "vkShaderStorageBufferArrayDynamicIndexing = "
-                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                    (vkShaderStorageBufferArrayDynamicIndexing
-                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                        "vkShaderStorageImageArrayDynamicIndexing = "
-                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                          (vkShaderStorageImageArrayDynamicIndexing
-                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                              "vkShaderClipDistance = "
-                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                (vkShaderClipDistance
-                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                    "vkShaderCullDistance = "
-                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                      (vkShaderCullDistance
-                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                          "vkShaderFloat64 = "
-                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                            (vkShaderFloat64
-                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                "vkShaderInt64 = "
-                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                  (vkShaderInt64
-                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                      "vkShaderInt16 = "
-                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                        (vkShaderInt16
-                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                            "vkShaderResourceResidency = "
-                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                              (vkShaderResourceResidency
-                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                  "vkShaderResourceMinLod = "
-                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                    (vkShaderResourceMinLod
-                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                        "vkSparseBinding = "
-                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                          (vkSparseBinding
-                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                              "vkSparseResidencyBuffer = "
-                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                (vkSparseResidencyBuffer
-                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                    "vkSparseResidencyImage2D = "
-                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                      (vkSparseResidencyImage2D
-                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                          "vkSparseResidencyImage3D = "
-                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                            (vkSparseResidencyImage3D
-                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                "vkSparseResidency2Samples = "
-                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                  (vkSparseResidency2Samples
-                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                      "vkSparseResidency4Samples = "
-                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                        (vkSparseResidency4Samples
-                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                            "vkSparseResidency8Samples = "
-                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                              (vkSparseResidency8Samples
-                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                  "vkSparseResidency16Samples = "
-                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                    (vkSparseResidency16Samples
-                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                        "vkSparseResidencyAliased = "
-                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                          (vkSparseResidencyAliased
-                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                              "vkVariableMultisampleRate = "
-                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                (vkVariableMultisampleRate
-                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                    "vkInheritedQueries = "
-                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                      (vkInheritedQueries
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
+       (VkPhysicalDeviceFeatures(..)) where
+import           Foreign.Storable                 (Storable (..))
+import           GHC.Prim
+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/man/html/VkPhysicalDeviceFeatures.html VkPhysicalDeviceFeatures registry at www.khronos.org>
+data VkPhysicalDeviceFeatures = VkPhysicalDeviceFeatures## Addr##
+                                                          ByteArray##
+
+instance Eq VkPhysicalDeviceFeatures where
+        (VkPhysicalDeviceFeatures## a _) ==
+          x@(VkPhysicalDeviceFeatures## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceFeatures where
+        (VkPhysicalDeviceFeatures## a _) `compare`
+          x@(VkPhysicalDeviceFeatures## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceFeatures where
+        unsafeAddr (VkPhysicalDeviceFeatures## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceFeatures## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceFeatures## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2.hsc
@@ -0,0 +1,185 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2
+       (VkPhysicalDeviceFeatures2(..)) where
+import           Foreign.Storable                                      (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo       (VkDeviceCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
+import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceFeatures2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPhysicalDeviceFeatures         features;
+--   > } VkPhysicalDeviceFeatures2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceFeatures2.html VkPhysicalDeviceFeatures2 registry at www.khronos.org>
+data VkPhysicalDeviceFeatures2 = VkPhysicalDeviceFeatures2## Addr##
+                                                            ByteArray##
+
+instance Eq VkPhysicalDeviceFeatures2 where
+        (VkPhysicalDeviceFeatures2## a _) ==
+          x@(VkPhysicalDeviceFeatures2## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceFeatures2 where
+        (VkPhysicalDeviceFeatures2## a _) `compare`
+          x@(VkPhysicalDeviceFeatures2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceFeatures2 where
+        unsafeAddr (VkPhysicalDeviceFeatures2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceFeatures2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceFeatures2## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2KHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
+       (VkPhysicalDeviceFeatures2(..), VkPhysicalDeviceFeatures2KHR) where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2 (..))
+
+-- | Alias for `VkPhysicalDeviceFeatures2`
+type VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceFeatures2KHR.hsc
+++ /dev/null
@@ -1,236 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
-       (VkPhysicalDeviceFeatures2KHR(..)) where
-import           Foreign.Storable                                      (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo       (VkDeviceCreateInfo)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceFeatures2KHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPhysicalDeviceFeatures         features;
---   > } VkPhysicalDeviceFeatures2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceFeatures2KHR.html VkPhysicalDeviceFeatures2KHR registry at www.khronos.org>
-data VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2KHR## Addr##
-                                                                  ByteArray##
-
-instance Eq VkPhysicalDeviceFeatures2KHR where
-        (VkPhysicalDeviceFeatures2KHR## a _) ==
-          x@(VkPhysicalDeviceFeatures2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceFeatures2KHR where
-        (VkPhysicalDeviceFeatures2KHR## a _) `compare`
-          x@(VkPhysicalDeviceFeatures2KHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceFeatures2KHR where
-        sizeOf ~_ = #{size VkPhysicalDeviceFeatures2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceFeatures2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceFeatures2KHR where
-        unsafeAddr (VkPhysicalDeviceFeatures2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceFeatures2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceFeatures2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceFeatures2KHR where
-        type StructFields VkPhysicalDeviceFeatures2KHR =
-             '["sType", "pNext", "features"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceFeatures2KHR =
-             '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceFeatures2KHR where
-        type VkSTypeMType VkPhysicalDeviceFeatures2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceFeatures2KHR where
-        type FieldType "sType" VkPhysicalDeviceFeatures2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceFeatures2KHR =
-             #{offset VkPhysicalDeviceFeatures2KHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures2KHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceFeatures2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPhysicalDeviceFeatures2KHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceFeatures2KHR where
-        type VkPNextMType VkPhysicalDeviceFeatures2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceFeatures2KHR where
-        type FieldType "pNext" VkPhysicalDeviceFeatures2KHR = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceFeatures2KHR =
-             #{offset VkPhysicalDeviceFeatures2KHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures2KHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceFeatures2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPhysicalDeviceFeatures2KHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFeatures VkPhysicalDeviceFeatures2KHR where
-        type VkFeaturesMType VkPhysicalDeviceFeatures2KHR =
-             VkPhysicalDeviceFeatures
-
-        {-# NOINLINE vkFeatures #-}
-        vkFeatures x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures2KHR, features})
-
-        {-# INLINE vkFeaturesByteOffset #-}
-        vkFeaturesByteOffset ~_
-          = #{offset VkPhysicalDeviceFeatures2KHR, features}
-
-        {-# INLINE readVkFeatures #-}
-        readVkFeatures p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures2KHR, features}
-
-        {-# INLINE writeVkFeatures #-}
-        writeVkFeatures p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures2KHR, features}
-
-instance {-# OVERLAPPING #-}
-         HasField "features" VkPhysicalDeviceFeatures2KHR where
-        type FieldType "features" VkPhysicalDeviceFeatures2KHR =
-             VkPhysicalDeviceFeatures
-        type FieldOptional "features" VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "features" VkPhysicalDeviceFeatures2KHR =
-             #{offset VkPhysicalDeviceFeatures2KHR, features}
-        type FieldIsArray "features" VkPhysicalDeviceFeatures2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures2KHR, features}
-
-instance CanReadField "features" VkPhysicalDeviceFeatures2KHR where
-        {-# INLINE getField #-}
-        getField = vkFeatures
-
-        {-# INLINE readField #-}
-        readField = readVkFeatures
-
-instance CanWriteField "features" VkPhysicalDeviceFeatures2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFeatures
-
-instance Show VkPhysicalDeviceFeatures2KHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceFeatures2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFeatures = " .
-                            showsPrec d (vkFeatures x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupProperties.hsc
@@ -0,0 +1,377 @@
+#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.VkPhysicalDeviceGroupProperties
+       (VkPhysicalDeviceGroupProperties(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           GHC.TypeLits                               (KnownNat, natVal') -- ' closing tick for hsc2hs
+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.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Handles              (VkPhysicalDevice)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceGroupProperties.html VkPhysicalDeviceGroupProperties registry at www.khronos.org>
+data VkPhysicalDeviceGroupProperties = VkPhysicalDeviceGroupProperties## Addr##
+                                                                        ByteArray##
+
+instance Eq VkPhysicalDeviceGroupProperties where
+        (VkPhysicalDeviceGroupProperties## a _) ==
+          x@(VkPhysicalDeviceGroupProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceGroupProperties where
+        (VkPhysicalDeviceGroupProperties## a _) `compare`
+          x@(VkPhysicalDeviceGroupProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceGroupProperties where
+        unsafeAddr (VkPhysicalDeviceGroupProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceGroupProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceGroupProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "physicalDevices" idx
+            VkPhysicalDeviceGroupProperties) =>
+         CanReadFieldArray "physicalDevices" idx
+           VkPhysicalDeviceGroupProperties
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "physicalDevices" 0
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "physicalDevices" 1
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "physicalDevices" 2
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "physicalDevices" 3
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+        type FieldArrayLength "physicalDevices"
+               VkPhysicalDeviceGroupProperties
+             = VK_MAX_DEVICE_GROUP_SIZE
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceGroupProperties, physicalDevices}
+                      +
+                      sizeOf (undefined :: VkPhysicalDevice) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceGroupProperties, physicalDevices}
+                 +
+                 sizeOf (undefined :: VkPhysicalDevice) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "physicalDevices" idx
+            VkPhysicalDeviceGroupProperties) =>
+         CanWriteFieldArray "physicalDevices" idx
+           VkPhysicalDeviceGroupProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "physicalDevices" 0
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "physicalDevices" 1
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "physicalDevices" 2
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "physicalDevices" 3
+                         VkPhysicalDeviceGroupProperties
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceGroupProperties, physicalDevices}
+                 +
+                 sizeOf (undefined :: VkPhysicalDevice) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupPropertiesKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHR
+       (VkPhysicalDeviceGroupProperties(..),
+        VkPhysicalDeviceGroupPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupProperties (VkPhysicalDeviceGroupProperties (..))
+
+-- | Alias for `VkPhysicalDeviceGroupProperties`
+type VkPhysicalDeviceGroupPropertiesKHR =
+     VkPhysicalDeviceGroupProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupPropertiesKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupPropertiesKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceGroupPropertiesKHX.hsc
+++ /dev/null
@@ -1,408 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHX
-       (VkPhysicalDeviceGroupPropertiesKHX(..)) where
-import           Foreign.Storable                           (Storable (..))
-import           GHC.Prim
-import           GHC.TypeLits                               (KnownNat, natVal') -- ' closing tick for hsc2hs
-import           Graphics.Vulkan.Constants                  (VK_MAX_DEVICE_GROUP_SIZE_KHX,
-                                                             pattern VK_MAX_DEVICE_GROUP_SIZE_KHX)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes            (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.Handles              (VkPhysicalDevice)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceGroupPropertiesKHX {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         physicalDeviceCount;
---   >     VkPhysicalDevice                 physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
---   >     VkBool32                         subsetAllocation;
---   > } VkPhysicalDeviceGroupPropertiesKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceGroupPropertiesKHX.html VkPhysicalDeviceGroupPropertiesKHX registry at www.khronos.org>
-data VkPhysicalDeviceGroupPropertiesKHX = VkPhysicalDeviceGroupPropertiesKHX## Addr##
-                                                                              ByteArray##
-
-instance Eq VkPhysicalDeviceGroupPropertiesKHX where
-        (VkPhysicalDeviceGroupPropertiesKHX## a _) ==
-          x@(VkPhysicalDeviceGroupPropertiesKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceGroupPropertiesKHX where
-        (VkPhysicalDeviceGroupPropertiesKHX## a _) `compare`
-          x@(VkPhysicalDeviceGroupPropertiesKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceGroupPropertiesKHX where
-        sizeOf ~_ = #{size VkPhysicalDeviceGroupPropertiesKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceGroupPropertiesKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceGroupPropertiesKHX where
-        unsafeAddr (VkPhysicalDeviceGroupPropertiesKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceGroupPropertiesKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceGroupPropertiesKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceGroupPropertiesKHX where
-        type StructFields VkPhysicalDeviceGroupPropertiesKHX =
-             '["sType", "pNext", "physicalDeviceCount", "physicalDevices", -- ' closing tick for hsc2hs
-               "subsetAllocation"]
-        type CUnionType VkPhysicalDeviceGroupPropertiesKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceGroupPropertiesKHX = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceGroupPropertiesKHX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceGroupPropertiesKHX where
-        type VkSTypeMType VkPhysicalDeviceGroupPropertiesKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupPropertiesKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceGroupPropertiesKHX where
-        type FieldType "sType" VkPhysicalDeviceGroupPropertiesKHX =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceGroupPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceGroupPropertiesKHX =
-             #{offset VkPhysicalDeviceGroupPropertiesKHX, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceGroupPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceGroupPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceGroupPropertiesKHX where
-        type VkPNextMType VkPhysicalDeviceGroupPropertiesKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupPropertiesKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceGroupPropertiesKHX where
-        type FieldType "pNext" VkPhysicalDeviceGroupPropertiesKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceGroupPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceGroupPropertiesKHX =
-             #{offset VkPhysicalDeviceGroupPropertiesKHX, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceGroupPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceGroupPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPhysicalDeviceCount VkPhysicalDeviceGroupPropertiesKHX where
-        type VkPhysicalDeviceCountMType VkPhysicalDeviceGroupPropertiesKHX
-             = Word32
-
-        {-# NOINLINE vkPhysicalDeviceCount #-}
-        vkPhysicalDeviceCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDeviceCount})
-
-        {-# INLINE vkPhysicalDeviceCountByteOffset #-}
-        vkPhysicalDeviceCountByteOffset ~_
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDeviceCount}
-
-        {-# INLINE readVkPhysicalDeviceCount #-}
-        readVkPhysicalDeviceCount p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDeviceCount}
-
-        {-# INLINE writeVkPhysicalDeviceCount #-}
-        writeVkPhysicalDeviceCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDeviceCount" VkPhysicalDeviceGroupPropertiesKHX
-         where
-        type FieldType "physicalDeviceCount"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = Word32
-        type FieldOptional "physicalDeviceCount"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDeviceCount"
-               VkPhysicalDeviceGroupPropertiesKHX
-             =
-             #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDeviceCount}
-        type FieldIsArray "physicalDeviceCount"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDeviceCount}
-
-instance CanReadField "physicalDeviceCount"
-           VkPhysicalDeviceGroupPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPhysicalDeviceCount
-
-        {-# INLINE readField #-}
-        readField = readVkPhysicalDeviceCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPhysicalDevicesArray VkPhysicalDeviceGroupPropertiesKHX where
-        type VkPhysicalDevicesArrayMType VkPhysicalDeviceGroupPropertiesKHX
-             = VkPhysicalDevice
-
-        {-# NOINLINE vkPhysicalDevicesArray #-}
-        vkPhysicalDevicesArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: VkPhysicalDevice) +
-                    #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDevices}))
-
-        {-# INLINE vkPhysicalDevicesArrayByteOffset #-}
-        vkPhysicalDevicesArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDevices}
-
-        {-# INLINE readVkPhysicalDevicesArray #-}
-        readVkPhysicalDevicesArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: VkPhysicalDevice) +
-                 #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDevices})
-
-        {-# INLINE writeVkPhysicalDevicesArray #-}
-        writeVkPhysicalDevicesArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: VkPhysicalDevice) +
-                 #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDevices})
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDevices" VkPhysicalDeviceGroupPropertiesKHX where
-        type FieldType "physicalDevices" VkPhysicalDeviceGroupPropertiesKHX
-             = VkPhysicalDevice
-        type FieldOptional "physicalDevices"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDevices"
-               VkPhysicalDeviceGroupPropertiesKHX
-             =
-             #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDevices}
-        type FieldIsArray "physicalDevices"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, physicalDevices}
-
-instance (KnownNat idx,
-          IndexInBounds "physicalDevices" idx
-            VkPhysicalDeviceGroupPropertiesKHX) =>
-         CanReadFieldArray "physicalDevices" idx
-           VkPhysicalDeviceGroupPropertiesKHX
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "physicalDevices" 0
-                         VkPhysicalDeviceGroupPropertiesKHX
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "physicalDevices" 1
-                         VkPhysicalDeviceGroupPropertiesKHX
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "physicalDevices" 2
-                         VkPhysicalDeviceGroupPropertiesKHX
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "physicalDevices" 3
-                         VkPhysicalDeviceGroupPropertiesKHX
-                       #-}
-        type FieldArrayLength "physicalDevices"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = VK_MAX_DEVICE_GROUP_SIZE_KHX
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE_KHX
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkPhysicalDevicesArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkPhysicalDevicesArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSubsetAllocation VkPhysicalDeviceGroupPropertiesKHX where
-        type VkSubsetAllocationMType VkPhysicalDeviceGroupPropertiesKHX =
-             VkBool32
-
-        {-# NOINLINE vkSubsetAllocation #-}
-        vkSubsetAllocation x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupPropertiesKHX, subsetAllocation})
-
-        {-# INLINE vkSubsetAllocationByteOffset #-}
-        vkSubsetAllocationByteOffset ~_
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, subsetAllocation}
-
-        {-# INLINE readVkSubsetAllocation #-}
-        readVkSubsetAllocation p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, subsetAllocation}
-
-        {-# INLINE writeVkSubsetAllocation #-}
-        writeVkSubsetAllocation p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupPropertiesKHX, subsetAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "subsetAllocation" VkPhysicalDeviceGroupPropertiesKHX
-         where
-        type FieldType "subsetAllocation"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = VkBool32
-        type FieldOptional "subsetAllocation"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subsetAllocation"
-               VkPhysicalDeviceGroupPropertiesKHX
-             =
-             #{offset VkPhysicalDeviceGroupPropertiesKHX, subsetAllocation}
-        type FieldIsArray "subsetAllocation"
-               VkPhysicalDeviceGroupPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupPropertiesKHX, subsetAllocation}
-
-instance CanReadField "subsetAllocation"
-           VkPhysicalDeviceGroupPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSubsetAllocation
-
-        {-# INLINE readField #-}
-        readField = readVkSubsetAllocation
-
-instance Show VkPhysicalDeviceGroupPropertiesKHX where
-        showsPrec d x
-          = showString "VkPhysicalDeviceGroupPropertiesKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPhysicalDeviceCount = " .
-                            showsPrec d (vkPhysicalDeviceCount x) .
-                              showString ", " .
-                                showString "vkPhysicalDevicesArray = [" .
-                                  showsPrec d
-                                    (map (vkPhysicalDevicesArray x)
-                                       [1 .. VK_MAX_DEVICE_GROUP_SIZE_KHX])
-                                    .
-                                    showChar ']' .
-                                      showString ", " .
-                                        showString "vkSubsetAllocation = " .
-                                          showsPrec d (vkSubsetAllocation x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDProperties.hsc
@@ -0,0 +1,531 @@
+#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.VkPhysicalDeviceIDProperties
+       (VkPhysicalDeviceIDProperties(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           GHC.TypeLits                                             (KnownNat,
+                                                                           natVal') -- ' closing tick for hsc2hs
+import           Graphics.Vulkan.Constants                                (VK_LUID_SIZE,
+                                                                           pattern VK_LUID_SIZE,
+                                                                           VK_UUID_SIZE,
+                                                                           pattern VK_UUID_SIZE)
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceIDProperties.html VkPhysicalDeviceIDProperties registry at www.khronos.org>
+data VkPhysicalDeviceIDProperties = VkPhysicalDeviceIDProperties## Addr##
+                                                                  ByteArray##
+
+instance Eq VkPhysicalDeviceIDProperties where
+        (VkPhysicalDeviceIDProperties## a _) ==
+          x@(VkPhysicalDeviceIDProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceIDProperties where
+        (VkPhysicalDeviceIDProperties## a _) `compare`
+          x@(VkPhysicalDeviceIDProperties## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceIDProperties where
+        unsafeAddr (VkPhysicalDeviceIDProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceIDProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceIDProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "deviceUUID" idx VkPhysicalDeviceIDProperties) =>
+         CanReadFieldArray "deviceUUID" idx VkPhysicalDeviceIDProperties
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceUUID" 0 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceUUID" 1 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceUUID" 2 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceUUID" 3 VkPhysicalDeviceIDProperties #-}
+        type FieldArrayLength "deviceUUID" VkPhysicalDeviceIDProperties =
+             VK_UUID_SIZE
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = VK_UUID_SIZE
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceIDProperties, deviceUUID} +
+                      sizeOf (undefined :: Word8) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceIDProperties, deviceUUID} +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "deviceUUID" idx VkPhysicalDeviceIDProperties) =>
+         CanWriteFieldArray "deviceUUID" idx VkPhysicalDeviceIDProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceUUID" 0 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceUUID" 1 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceUUID" 2 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceUUID" 3 VkPhysicalDeviceIDProperties #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceIDProperties, deviceUUID} +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "driverUUID" idx VkPhysicalDeviceIDProperties) =>
+         CanReadFieldArray "driverUUID" idx VkPhysicalDeviceIDProperties
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "driverUUID" 0 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "driverUUID" 1 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "driverUUID" 2 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "driverUUID" 3 VkPhysicalDeviceIDProperties #-}
+        type FieldArrayLength "driverUUID" VkPhysicalDeviceIDProperties =
+             VK_UUID_SIZE
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = VK_UUID_SIZE
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceIDProperties, driverUUID} +
+                      sizeOf (undefined :: Word8) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceIDProperties, driverUUID} +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "driverUUID" idx VkPhysicalDeviceIDProperties) =>
+         CanWriteFieldArray "driverUUID" idx VkPhysicalDeviceIDProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "driverUUID" 0 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "driverUUID" 1 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "driverUUID" 2 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "driverUUID" 3 VkPhysicalDeviceIDProperties #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceIDProperties, driverUUID} +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "deviceLUID" idx VkPhysicalDeviceIDProperties) =>
+         CanReadFieldArray "deviceLUID" idx VkPhysicalDeviceIDProperties
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceLUID" 0 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceLUID" 1 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceLUID" 2 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "deviceLUID" 3 VkPhysicalDeviceIDProperties #-}
+        type FieldArrayLength "deviceLUID" VkPhysicalDeviceIDProperties =
+             VK_LUID_SIZE
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = VK_LUID_SIZE
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceIDProperties, deviceLUID} +
+                      sizeOf (undefined :: Word8) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceIDProperties, deviceLUID} +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "deviceLUID" idx VkPhysicalDeviceIDProperties) =>
+         CanWriteFieldArray "deviceLUID" idx VkPhysicalDeviceIDProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceLUID" 0 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceLUID" 1 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceLUID" 2 VkPhysicalDeviceIDProperties #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceLUID" 3 VkPhysicalDeviceIDProperties #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceIDProperties, deviceLUID} +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDPropertiesKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR
+       (VkPhysicalDeviceIDProperties(..), VkPhysicalDeviceIDPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDProperties (VkPhysicalDeviceIDProperties (..))
+
+-- | Alias for `VkPhysicalDeviceIDProperties`
+type VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDPropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceIDPropertiesKHR.hsc
+++ /dev/null
@@ -1,547 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR
-       (VkPhysicalDeviceIDPropertiesKHR(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           GHC.TypeLits                                                (KnownNat,
-                                                                              natVal') -- ' closing tick for hsc2hs
-import           Graphics.Vulkan.Constants                                   (VK_LUID_SIZE_KHR,
-                                                                              pattern VK_LUID_SIZE_KHR,
-                                                                              VK_UUID_SIZE,
-                                                                              pattern VK_UUID_SIZE)
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceIDPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint8_t                          deviceUUID[VK_UUID_SIZE];
---   >     uint8_t                          driverUUID[VK_UUID_SIZE];
---   >     uint8_t                          deviceLUID[VK_LUID_SIZE_KHR];
---   >     uint32_t                         deviceNodeMask;
---   >     VkBool32                         deviceLUIDValid;
---   > } VkPhysicalDeviceIDPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceIDPropertiesKHR.html VkPhysicalDeviceIDPropertiesKHR registry at www.khronos.org>
-data VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDPropertiesKHR## Addr##
-                                                                        ByteArray##
-
-instance Eq VkPhysicalDeviceIDPropertiesKHR where
-        (VkPhysicalDeviceIDPropertiesKHR## a _) ==
-          x@(VkPhysicalDeviceIDPropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceIDPropertiesKHR where
-        (VkPhysicalDeviceIDPropertiesKHR## a _) `compare`
-          x@(VkPhysicalDeviceIDPropertiesKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceIDPropertiesKHR where
-        sizeOf ~_ = #{size VkPhysicalDeviceIDPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceIDPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceIDPropertiesKHR where
-        unsafeAddr (VkPhysicalDeviceIDPropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceIDPropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceIDPropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceIDPropertiesKHR where
-        type StructFields VkPhysicalDeviceIDPropertiesKHR =
-             '["sType", "pNext", "deviceUUID", "driverUUID", "deviceLUID", -- ' closing tick for hsc2hs
-               "deviceNodeMask", "deviceLUIDValid"]
-        type CUnionType VkPhysicalDeviceIDPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceIDPropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceIDPropertiesKHR =
-             '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceIDPropertiesKHR where
-        type VkSTypeMType VkPhysicalDeviceIDPropertiesKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "sType" VkPhysicalDeviceIDPropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceIDPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceIDPropertiesKHR =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceIDPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceIDPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceIDPropertiesKHR where
-        type VkPNextMType VkPhysicalDeviceIDPropertiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "pNext" VkPhysicalDeviceIDPropertiesKHR = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceIDPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceIDPropertiesKHR =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceIDPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceIDPropertiesKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceUUIDArray VkPhysicalDeviceIDPropertiesKHR where
-        type VkDeviceUUIDArrayMType VkPhysicalDeviceIDPropertiesKHR = Word8
-
-        {-# NOINLINE vkDeviceUUIDArray #-}
-        vkDeviceUUIDArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word8) +
-                    #{offset VkPhysicalDeviceIDPropertiesKHR, deviceUUID}))
-
-        {-# INLINE vkDeviceUUIDArrayByteOffset #-}
-        vkDeviceUUIDArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceUUID}
-
-        {-# INLINE readVkDeviceUUIDArray #-}
-        readVkDeviceUUIDArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceIDPropertiesKHR, deviceUUID})
-
-        {-# INLINE writeVkDeviceUUIDArray #-}
-        writeVkDeviceUUIDArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceIDPropertiesKHR, deviceUUID})
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceUUID" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "deviceUUID" VkPhysicalDeviceIDPropertiesKHR = Word8
-        type FieldOptional "deviceUUID" VkPhysicalDeviceIDPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceUUID" VkPhysicalDeviceIDPropertiesKHR =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, deviceUUID}
-        type FieldIsArray "deviceUUID" VkPhysicalDeviceIDPropertiesKHR =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceUUID}
-
-instance (KnownNat idx,
-          IndexInBounds "deviceUUID" idx VkPhysicalDeviceIDPropertiesKHR) =>
-         CanReadFieldArray "deviceUUID" idx VkPhysicalDeviceIDPropertiesKHR
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceUUID" 0 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceUUID" 1 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceUUID" 2 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceUUID" 3 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-        type FieldArrayLength "deviceUUID" VkPhysicalDeviceIDPropertiesKHR
-             = VK_UUID_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_UUID_SIZE
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkDeviceUUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkDeviceUUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkDriverUUIDArray VkPhysicalDeviceIDPropertiesKHR where
-        type VkDriverUUIDArrayMType VkPhysicalDeviceIDPropertiesKHR = Word8
-
-        {-# NOINLINE vkDriverUUIDArray #-}
-        vkDriverUUIDArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word8) +
-                    #{offset VkPhysicalDeviceIDPropertiesKHR, driverUUID}))
-
-        {-# INLINE vkDriverUUIDArrayByteOffset #-}
-        vkDriverUUIDArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, driverUUID}
-
-        {-# INLINE readVkDriverUUIDArray #-}
-        readVkDriverUUIDArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceIDPropertiesKHR, driverUUID})
-
-        {-# INLINE writeVkDriverUUIDArray #-}
-        writeVkDriverUUIDArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceIDPropertiesKHR, driverUUID})
-
-instance {-# OVERLAPPING #-}
-         HasField "driverUUID" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "driverUUID" VkPhysicalDeviceIDPropertiesKHR = Word8
-        type FieldOptional "driverUUID" VkPhysicalDeviceIDPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "driverUUID" VkPhysicalDeviceIDPropertiesKHR =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, driverUUID}
-        type FieldIsArray "driverUUID" VkPhysicalDeviceIDPropertiesKHR =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, driverUUID}
-
-instance (KnownNat idx,
-          IndexInBounds "driverUUID" idx VkPhysicalDeviceIDPropertiesKHR) =>
-         CanReadFieldArray "driverUUID" idx VkPhysicalDeviceIDPropertiesKHR
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "driverUUID" 0 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "driverUUID" 1 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "driverUUID" 2 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "driverUUID" 3 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-        type FieldArrayLength "driverUUID" VkPhysicalDeviceIDPropertiesKHR
-             = VK_UUID_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_UUID_SIZE
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkDriverUUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkDriverUUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceLUIDArray VkPhysicalDeviceIDPropertiesKHR where
-        type VkDeviceLUIDArrayMType VkPhysicalDeviceIDPropertiesKHR = Word8
-
-        {-# NOINLINE vkDeviceLUIDArray #-}
-        vkDeviceLUIDArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word8) +
-                    #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUID}))
-
-        {-# INLINE vkDeviceLUIDArrayByteOffset #-}
-        vkDeviceLUIDArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUID}
-
-        {-# INLINE readVkDeviceLUIDArray #-}
-        readVkDeviceLUIDArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUID})
-
-        {-# INLINE writeVkDeviceLUIDArray #-}
-        writeVkDeviceLUIDArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUID})
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceLUID" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "deviceLUID" VkPhysicalDeviceIDPropertiesKHR = Word8
-        type FieldOptional "deviceLUID" VkPhysicalDeviceIDPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceLUID" VkPhysicalDeviceIDPropertiesKHR =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUID}
-        type FieldIsArray "deviceLUID" VkPhysicalDeviceIDPropertiesKHR =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUID}
-
-instance (KnownNat idx,
-          IndexInBounds "deviceLUID" idx VkPhysicalDeviceIDPropertiesKHR) =>
-         CanReadFieldArray "deviceLUID" idx VkPhysicalDeviceIDPropertiesKHR
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceLUID" 0 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceLUID" 1 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceLUID" 2 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "deviceLUID" 3 VkPhysicalDeviceIDPropertiesKHR
-                       #-}
-        type FieldArrayLength "deviceLUID" VkPhysicalDeviceIDPropertiesKHR
-             = VK_LUID_SIZE_KHR
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_LUID_SIZE_KHR
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkDeviceLUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkDeviceLUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceNodeMask VkPhysicalDeviceIDPropertiesKHR where
-        type VkDeviceNodeMaskMType VkPhysicalDeviceIDPropertiesKHR = Word32
-
-        {-# NOINLINE vkDeviceNodeMask #-}
-        vkDeviceNodeMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDPropertiesKHR, deviceNodeMask})
-
-        {-# INLINE vkDeviceNodeMaskByteOffset #-}
-        vkDeviceNodeMaskByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceNodeMask}
-
-        {-# INLINE readVkDeviceNodeMask #-}
-        readVkDeviceNodeMask p
-          = peekByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, deviceNodeMask}
-
-        {-# INLINE writeVkDeviceNodeMask #-}
-        writeVkDeviceNodeMask p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, deviceNodeMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceNodeMask" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "deviceNodeMask" VkPhysicalDeviceIDPropertiesKHR =
-             Word32
-        type FieldOptional "deviceNodeMask" VkPhysicalDeviceIDPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceNodeMask" VkPhysicalDeviceIDPropertiesKHR =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, deviceNodeMask}
-        type FieldIsArray "deviceNodeMask" VkPhysicalDeviceIDPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceNodeMask}
-
-instance CanReadField "deviceNodeMask"
-           VkPhysicalDeviceIDPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceNodeMask
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceNodeMask
-
-instance {-# OVERLAPPING #-}
-         HasVkDeviceLUIDValid VkPhysicalDeviceIDPropertiesKHR where
-        type VkDeviceLUIDValidMType VkPhysicalDeviceIDPropertiesKHR =
-             VkBool32
-
-        {-# NOINLINE vkDeviceLUIDValid #-}
-        vkDeviceLUIDValid x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUIDValid})
-
-        {-# INLINE vkDeviceLUIDValidByteOffset #-}
-        vkDeviceLUIDValidByteOffset ~_
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUIDValid}
-
-        {-# INLINE readVkDeviceLUIDValid #-}
-        readVkDeviceLUIDValid p
-          = peekByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUIDValid}
-
-        {-# INLINE writeVkDeviceLUIDValid #-}
-        writeVkDeviceLUIDValid p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUIDValid}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceLUIDValid" VkPhysicalDeviceIDPropertiesKHR where
-        type FieldType "deviceLUIDValid" VkPhysicalDeviceIDPropertiesKHR =
-             VkBool32
-        type FieldOptional "deviceLUIDValid"
-               VkPhysicalDeviceIDPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceLUIDValid" VkPhysicalDeviceIDPropertiesKHR
-             =
-             #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUIDValid}
-        type FieldIsArray "deviceLUIDValid" VkPhysicalDeviceIDPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDPropertiesKHR, deviceLUIDValid}
-
-instance CanReadField "deviceLUIDValid"
-           VkPhysicalDeviceIDPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDeviceLUIDValid
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceLUIDValid
-
-instance Show VkPhysicalDeviceIDPropertiesKHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceIDPropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkDeviceUUIDArray = [" .
-                            showsPrec d (map (vkDeviceUUIDArray x) [1 .. VK_UUID_SIZE]) .
-                              showChar ']' .
-                                showString ", " .
-                                  showString "vkDriverUUIDArray = [" .
-                                    showsPrec d (map (vkDriverUUIDArray x) [1 .. VK_UUID_SIZE]) .
-                                      showChar ']' .
-                                        showString ", " .
-                                          showString "vkDeviceLUIDArray = [" .
-                                            showsPrec d
-                                              (map (vkDeviceLUIDArray x) [1 .. VK_LUID_SIZE_KHR])
-                                              .
-                                              showChar ']' .
-                                                showString ", " .
-                                                  showString "vkDeviceNodeMask = " .
-                                                    showsPrec d (vkDeviceNodeMask x) .
-                                                      showString ", " .
-                                                        showString "vkDeviceLUIDValid = " .
-                                                          showsPrec d (vkDeviceLUIDValid x) .
-                                                            showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2.hsc
@@ -0,0 +1,346 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2
+       (VkPhysicalDeviceImageFormatInfo2(..)) where
+import           Foreign.Storable                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkFormat           (VkFormat)
+import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags (VkImageCreateFlags)
+import           Graphics.Vulkan.Types.Enum.VkImageTiling      (VkImageTiling)
+import           Graphics.Vulkan.Types.Enum.VkImageType        (VkImageType)
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags  (VkImageUsageFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
+import           System.IO.Unsafe                              (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceImageFormatInfo2.html VkPhysicalDeviceImageFormatInfo2 registry at www.khronos.org>
+data VkPhysicalDeviceImageFormatInfo2 = VkPhysicalDeviceImageFormatInfo2## Addr##
+                                                                          ByteArray##
+
+instance Eq VkPhysicalDeviceImageFormatInfo2 where
+        (VkPhysicalDeviceImageFormatInfo2## a _) ==
+          x@(VkPhysicalDeviceImageFormatInfo2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceImageFormatInfo2 where
+        (VkPhysicalDeviceImageFormatInfo2## a _) `compare`
+          x@(VkPhysicalDeviceImageFormatInfo2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceImageFormatInfo2 where
+        unsafeAddr (VkPhysicalDeviceImageFormatInfo2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceImageFormatInfo2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceImageFormatInfo2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2KHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR
+       (VkPhysicalDeviceImageFormatInfo2(..),
+        VkPhysicalDeviceImageFormatInfo2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2 (VkPhysicalDeviceImageFormatInfo2 (..))
+
+-- | Alias for `VkPhysicalDeviceImageFormatInfo2`
+type VkPhysicalDeviceImageFormatInfo2KHR =
+     VkPhysicalDeviceImageFormatInfo2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceImageFormatInfo2KHR.hsc
+++ /dev/null
@@ -1,479 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR
-       (VkPhysicalDeviceImageFormatInfo2KHR(..)) where
-import           Foreign.Storable                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkFormat           (VkFormat)
-import           Graphics.Vulkan.Types.Enum.VkImageCreateFlags (VkImageCreateFlags)
-import           Graphics.Vulkan.Types.Enum.VkImageTiling      (VkImageTiling)
-import           Graphics.Vulkan.Types.Enum.VkImageType        (VkImageType)
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags  (VkImageUsageFlags)
-import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceImageFormatInfo2KHR {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkFormat                         format;
---   >     VkImageType                      type;
---   >     VkImageTiling                    tiling;
---   >     VkImageUsageFlags                usage;
---   >     VkImageCreateFlags flags;
---   > } VkPhysicalDeviceImageFormatInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html VkPhysicalDeviceImageFormatInfo2KHR registry at www.khronos.org>
-data VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2KHR## Addr##
-                                                                                ByteArray##
-
-instance Eq VkPhysicalDeviceImageFormatInfo2KHR where
-        (VkPhysicalDeviceImageFormatInfo2KHR## a _) ==
-          x@(VkPhysicalDeviceImageFormatInfo2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceImageFormatInfo2KHR where
-        (VkPhysicalDeviceImageFormatInfo2KHR## a _) `compare`
-          x@(VkPhysicalDeviceImageFormatInfo2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceImageFormatInfo2KHR where
-        sizeOf ~_ = #{size VkPhysicalDeviceImageFormatInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceImageFormatInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        unsafeAddr (VkPhysicalDeviceImageFormatInfo2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceImageFormatInfo2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceImageFormatInfo2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceImageFormatInfo2KHR where
-        type StructFields VkPhysicalDeviceImageFormatInfo2KHR =
-             '["sType", "pNext", "format", "type", "tiling", "usage", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceImageFormatInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceImageFormatInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceImageFormatInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkSTypeMType VkPhysicalDeviceImageFormatInfo2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "sType" VkPhysicalDeviceImageFormatInfo2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkPNextMType VkPhysicalDeviceImageFormatInfo2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "pNext" VkPhysicalDeviceImageFormatInfo2KHR =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFormat VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkFormatMType VkPhysicalDeviceImageFormatInfo2KHR = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "format" VkPhysicalDeviceImageFormatInfo2KHR =
-             VkFormat
-        type FieldOptional "format" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, format}
-        type FieldIsArray "format" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, format}
-
-instance CanReadField "format" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFormat
-
-        {-# INLINE readField #-}
-        readField = readVkFormat
-
-instance CanWriteField "format" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-}
-         HasVkType VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkTypeMType VkPhysicalDeviceImageFormatInfo2KHR = VkImageType
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "type" VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageType
-        type FieldOptional "type" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, type}
-        type FieldIsArray "type" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, type}
-
-instance CanReadField "type" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
-instance {-# OVERLAPPING #-}
-         HasVkTiling VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkTilingMType VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageTiling
-
-        {-# NOINLINE vkTiling #-}
-        vkTiling x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, tiling})
-
-        {-# INLINE vkTilingByteOffset #-}
-        vkTilingByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, tiling}
-
-        {-# INLINE readVkTiling #-}
-        readVkTiling p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, tiling}
-
-        {-# INLINE writeVkTiling #-}
-        writeVkTiling p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, tiling}
-
-instance {-# OVERLAPPING #-}
-         HasField "tiling" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "tiling" VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageTiling
-        type FieldOptional "tiling" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "tiling" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, tiling}
-        type FieldIsArray "tiling" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, tiling}
-
-instance CanReadField "tiling" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkTiling
-
-        {-# INLINE readField #-}
-        readField = readVkTiling
-
-instance CanWriteField "tiling" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTiling
-
-instance {-# OVERLAPPING #-}
-         HasVkUsage VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkUsageMType VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageUsageFlags
-
-        {-# NOINLINE vkUsage #-}
-        vkUsage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, usage})
-
-        {-# INLINE vkUsageByteOffset #-}
-        vkUsageByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, usage}
-
-        {-# INLINE readVkUsage #-}
-        readVkUsage p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, usage}
-
-        {-# INLINE writeVkUsage #-}
-        writeVkUsage p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "usage" VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageUsageFlags
-        type FieldOptional "usage" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, usage}
-        type FieldIsArray "usage" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, usage}
-
-instance CanReadField "usage" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkUsage
-
-        {-# INLINE readField #-}
-        readField = readVkUsage
-
-instance CanWriteField "usage" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkUsage
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPhysicalDeviceImageFormatInfo2KHR where
-        type VkFlagsMType VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2KHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2KHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPhysicalDeviceImageFormatInfo2KHR where
-        type FieldType "flags" VkPhysicalDeviceImageFormatInfo2KHR =
-             VkImageCreateFlags
-        type FieldOptional "flags" VkPhysicalDeviceImageFormatInfo2KHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPhysicalDeviceImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceImageFormatInfo2KHR, flags}
-        type FieldIsArray "flags" VkPhysicalDeviceImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2KHR, flags}
-
-instance CanReadField "flags" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPhysicalDeviceImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance Show VkPhysicalDeviceImageFormatInfo2KHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceImageFormatInfo2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFormat = " .
-                            showsPrec d (vkFormat x) .
-                              showString ", " .
-                                showString "vkType = " .
-                                  showsPrec d (vkType x) .
-                                    showString ", " .
-                                      showString "vkTiling = " .
-                                        showsPrec d (vkTiling x) .
-                                          showString ", " .
-                                            showString "vkUsage = " .
-                                              showsPrec d (vkUsage x) .
-                                                showString ", " .
-                                                  showString "vkFlags = " .
-                                                    showsPrec d (vkFlags x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceLimits.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceLimits.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceLimits.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceLimits.hsc
@@ -8,7004 +8,6093 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
-       (VkPhysicalDeviceLimits(..)) where
-import           Foreign.Storable                              (Storable (..))
-import           GHC.Prim
-import           GHC.TypeLits                                  (KnownNat,
-                                                                natVal') -- ' closing tick for hsc2hs
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes               (VkBool32,
-                                                                VkDeviceSize)
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags (VkSampleCountFlags)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > 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.0-extensions/man/html/VkPhysicalDeviceLimits.html VkPhysicalDeviceLimits registry at www.khronos.org>
-data VkPhysicalDeviceLimits = VkPhysicalDeviceLimits## Addr##
-                                                      ByteArray##
-
-instance Eq VkPhysicalDeviceLimits where
-        (VkPhysicalDeviceLimits## a _) == x@(VkPhysicalDeviceLimits## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceLimits where
-        (VkPhysicalDeviceLimits## a _) `compare`
-          x@(VkPhysicalDeviceLimits## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceLimits where
-        unsafeAddr (VkPhysicalDeviceLimits## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceLimits## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceLimits## (plusAddr## (byteArrayContents## b) off) b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-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 #-}
-         HasVkMaxImageDimension1D VkPhysicalDeviceLimits where
-        type VkMaxImageDimension1DMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxImageDimension1D #-}
-        vkMaxImageDimension1D x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimension1D})
-
-        {-# INLINE vkMaxImageDimension1DByteOffset #-}
-        vkMaxImageDimension1DByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-
-        {-# INLINE readVkMaxImageDimension1D #-}
-        readVkMaxImageDimension1D p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-
-        {-# INLINE writeVkMaxImageDimension1D #-}
-        writeVkMaxImageDimension1D p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-
-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 CanReadField "maxImageDimension1D" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageDimension1D
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageDimension1D
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxImageDimension2D VkPhysicalDeviceLimits where
-        type VkMaxImageDimension2DMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxImageDimension2D #-}
-        vkMaxImageDimension2D x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimension2D})
-
-        {-# INLINE vkMaxImageDimension2DByteOffset #-}
-        vkMaxImageDimension2DByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-
-        {-# INLINE readVkMaxImageDimension2D #-}
-        readVkMaxImageDimension2D p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-
-        {-# INLINE writeVkMaxImageDimension2D #-}
-        writeVkMaxImageDimension2D p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-
-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 CanReadField "maxImageDimension2D" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageDimension2D
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageDimension2D
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxImageDimension3D VkPhysicalDeviceLimits where
-        type VkMaxImageDimension3DMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxImageDimension3D #-}
-        vkMaxImageDimension3D x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimension3D})
-
-        {-# INLINE vkMaxImageDimension3DByteOffset #-}
-        vkMaxImageDimension3DByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-
-        {-# INLINE readVkMaxImageDimension3D #-}
-        readVkMaxImageDimension3D p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-
-        {-# INLINE writeVkMaxImageDimension3D #-}
-        writeVkMaxImageDimension3D p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-
-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 CanReadField "maxImageDimension3D" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageDimension3D
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageDimension3D
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxImageDimensionCube VkPhysicalDeviceLimits where
-        type VkMaxImageDimensionCubeMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxImageDimensionCube #-}
-        vkMaxImageDimensionCube x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimensionCube})
-
-        {-# INLINE vkMaxImageDimensionCubeByteOffset #-}
-        vkMaxImageDimensionCubeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-
-        {-# INLINE readVkMaxImageDimensionCube #-}
-        readVkMaxImageDimensionCube p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-
-        {-# INLINE writeVkMaxImageDimensionCube #-}
-        writeVkMaxImageDimensionCube p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-
-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 CanReadField "maxImageDimensionCube"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageDimensionCube
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageDimensionCube
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxImageArrayLayers VkPhysicalDeviceLimits where
-        type VkMaxImageArrayLayersMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxImageArrayLayers #-}
-        vkMaxImageArrayLayers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageArrayLayers})
-
-        {-# INLINE vkMaxImageArrayLayersByteOffset #-}
-        vkMaxImageArrayLayersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-
-        {-# INLINE readVkMaxImageArrayLayers #-}
-        readVkMaxImageArrayLayers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-
-        {-# INLINE writeVkMaxImageArrayLayers #-}
-        writeVkMaxImageArrayLayers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-
-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 CanReadField "maxImageArrayLayers" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageArrayLayers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageArrayLayers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTexelBufferElements VkPhysicalDeviceLimits where
-        type VkMaxTexelBufferElementsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxTexelBufferElements #-}
-        vkMaxTexelBufferElements x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTexelBufferElements})
-
-        {-# INLINE vkMaxTexelBufferElementsByteOffset #-}
-        vkMaxTexelBufferElementsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-
-        {-# INLINE readVkMaxTexelBufferElements #-}
-        readVkMaxTexelBufferElements p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-
-        {-# INLINE writeVkMaxTexelBufferElements #-}
-        writeVkMaxTexelBufferElements p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-
-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 CanReadField "maxTexelBufferElements"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTexelBufferElements
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTexelBufferElements
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxUniformBufferRange VkPhysicalDeviceLimits where
-        type VkMaxUniformBufferRangeMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxUniformBufferRange #-}
-        vkMaxUniformBufferRange x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxUniformBufferRange})
-
-        {-# INLINE vkMaxUniformBufferRangeByteOffset #-}
-        vkMaxUniformBufferRangeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-
-        {-# INLINE readVkMaxUniformBufferRange #-}
-        readVkMaxUniformBufferRange p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-
-        {-# INLINE writeVkMaxUniformBufferRange #-}
-        writeVkMaxUniformBufferRange p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-
-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 CanReadField "maxUniformBufferRange"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxUniformBufferRange
-
-        {-# INLINE readField #-}
-        readField = readVkMaxUniformBufferRange
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxStorageBufferRange VkPhysicalDeviceLimits where
-        type VkMaxStorageBufferRangeMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxStorageBufferRange #-}
-        vkMaxStorageBufferRange x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxStorageBufferRange})
-
-        {-# INLINE vkMaxStorageBufferRangeByteOffset #-}
-        vkMaxStorageBufferRangeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-
-        {-# INLINE readVkMaxStorageBufferRange #-}
-        readVkMaxStorageBufferRange p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-
-        {-# INLINE writeVkMaxStorageBufferRange #-}
-        writeVkMaxStorageBufferRange p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-
-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 CanReadField "maxStorageBufferRange"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxStorageBufferRange
-
-        {-# INLINE readField #-}
-        readField = readVkMaxStorageBufferRange
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPushConstantsSize VkPhysicalDeviceLimits where
-        type VkMaxPushConstantsSizeMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxPushConstantsSize #-}
-        vkMaxPushConstantsSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPushConstantsSize})
-
-        {-# INLINE vkMaxPushConstantsSizeByteOffset #-}
-        vkMaxPushConstantsSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-
-        {-# INLINE readVkMaxPushConstantsSize #-}
-        readVkMaxPushConstantsSize p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-
-        {-# INLINE writeVkMaxPushConstantsSize #-}
-        writeVkMaxPushConstantsSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-
-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 CanReadField "maxPushConstantsSize" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPushConstantsSize
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPushConstantsSize
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxMemoryAllocationCount VkPhysicalDeviceLimits where
-        type VkMaxMemoryAllocationCountMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxMemoryAllocationCount #-}
-        vkMaxMemoryAllocationCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount})
-
-        {-# INLINE vkMaxMemoryAllocationCountByteOffset #-}
-        vkMaxMemoryAllocationCountByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-
-        {-# INLINE readVkMaxMemoryAllocationCount #-}
-        readVkMaxMemoryAllocationCount p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-
-        {-# INLINE writeVkMaxMemoryAllocationCount #-}
-        writeVkMaxMemoryAllocationCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-
-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 CanReadField "maxMemoryAllocationCount"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxMemoryAllocationCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxMemoryAllocationCount
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSamplerAllocationCount VkPhysicalDeviceLimits where
-        type VkMaxSamplerAllocationCountMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxSamplerAllocationCount #-}
-        vkMaxSamplerAllocationCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount})
-
-        {-# INLINE vkMaxSamplerAllocationCountByteOffset #-}
-        vkMaxSamplerAllocationCountByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-
-        {-# INLINE readVkMaxSamplerAllocationCount #-}
-        readVkMaxSamplerAllocationCount p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-
-        {-# INLINE writeVkMaxSamplerAllocationCount #-}
-        writeVkMaxSamplerAllocationCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-
-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 CanReadField "maxSamplerAllocationCount"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSamplerAllocationCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSamplerAllocationCount
-
-instance {-# OVERLAPPING #-}
-         HasVkBufferImageGranularity VkPhysicalDeviceLimits where
-        type VkBufferImageGranularityMType VkPhysicalDeviceLimits =
-             VkDeviceSize
-
-        {-# NOINLINE vkBufferImageGranularity #-}
-        vkBufferImageGranularity x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, bufferImageGranularity})
-
-        {-# INLINE vkBufferImageGranularityByteOffset #-}
-        vkBufferImageGranularityByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-
-        {-# INLINE readVkBufferImageGranularity #-}
-        readVkBufferImageGranularity p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-
-        {-# INLINE writeVkBufferImageGranularity #-}
-        writeVkBufferImageGranularity p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-
-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 CanReadField "bufferImageGranularity"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkBufferImageGranularity
-
-        {-# INLINE readField #-}
-        readField = readVkBufferImageGranularity
-
-instance {-# OVERLAPPING #-}
-         HasVkSparseAddressSpaceSize VkPhysicalDeviceLimits where
-        type VkSparseAddressSpaceSizeMType VkPhysicalDeviceLimits =
-             VkDeviceSize
-
-        {-# NOINLINE vkSparseAddressSpaceSize #-}
-        vkSparseAddressSpaceSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize})
-
-        {-# INLINE vkSparseAddressSpaceSizeByteOffset #-}
-        vkSparseAddressSpaceSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-
-        {-# INLINE readVkSparseAddressSpaceSize #-}
-        readVkSparseAddressSpaceSize p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-
-        {-# INLINE writeVkSparseAddressSpaceSize #-}
-        writeVkSparseAddressSpaceSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-
-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 CanReadField "sparseAddressSpaceSize"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseAddressSpaceSize
-
-        {-# INLINE readField #-}
-        readField = readVkSparseAddressSpaceSize
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxBoundDescriptorSets VkPhysicalDeviceLimits where
-        type VkMaxBoundDescriptorSetsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxBoundDescriptorSets #-}
-        vkMaxBoundDescriptorSets x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets})
-
-        {-# INLINE vkMaxBoundDescriptorSetsByteOffset #-}
-        vkMaxBoundDescriptorSetsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-
-        {-# INLINE readVkMaxBoundDescriptorSets #-}
-        readVkMaxBoundDescriptorSets p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-
-        {-# INLINE writeVkMaxBoundDescriptorSets #-}
-        writeVkMaxBoundDescriptorSets p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-
-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 CanReadField "maxBoundDescriptorSets"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxBoundDescriptorSets
-
-        {-# INLINE readField #-}
-        readField = readVkMaxBoundDescriptorSets
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageDescriptorSamplers VkPhysicalDeviceLimits where
-        type VkMaxPerStageDescriptorSamplersMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxPerStageDescriptorSamplers #-}
-        vkMaxPerStageDescriptorSamplers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers})
-
-        {-# INLINE vkMaxPerStageDescriptorSamplersByteOffset #-}
-        vkMaxPerStageDescriptorSamplersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-
-        {-# INLINE readVkMaxPerStageDescriptorSamplers #-}
-        readVkMaxPerStageDescriptorSamplers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-
-        {-# INLINE writeVkMaxPerStageDescriptorSamplers #-}
-        writeVkMaxPerStageDescriptorSamplers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-
-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 CanReadField "maxPerStageDescriptorSamplers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageDescriptorSamplers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageDescriptorSamplers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageDescriptorUniformBuffers VkPhysicalDeviceLimits
-         where
-        type VkMaxPerStageDescriptorUniformBuffersMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxPerStageDescriptorUniformBuffers #-}
-        vkMaxPerStageDescriptorUniformBuffers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers})
-
-        {-# INLINE vkMaxPerStageDescriptorUniformBuffersByteOffset #-}
-        vkMaxPerStageDescriptorUniformBuffersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-
-        {-# INLINE readVkMaxPerStageDescriptorUniformBuffers #-}
-        readVkMaxPerStageDescriptorUniformBuffers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-
-        {-# INLINE writeVkMaxPerStageDescriptorUniformBuffers #-}
-        writeVkMaxPerStageDescriptorUniformBuffers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-
-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 CanReadField "maxPerStageDescriptorUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageDescriptorUniformBuffers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageDescriptorUniformBuffers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageDescriptorStorageBuffers VkPhysicalDeviceLimits
-         where
-        type VkMaxPerStageDescriptorStorageBuffersMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxPerStageDescriptorStorageBuffers #-}
-        vkMaxPerStageDescriptorStorageBuffers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers})
-
-        {-# INLINE vkMaxPerStageDescriptorStorageBuffersByteOffset #-}
-        vkMaxPerStageDescriptorStorageBuffersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-
-        {-# INLINE readVkMaxPerStageDescriptorStorageBuffers #-}
-        readVkMaxPerStageDescriptorStorageBuffers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-
-        {-# INLINE writeVkMaxPerStageDescriptorStorageBuffers #-}
-        writeVkMaxPerStageDescriptorStorageBuffers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-
-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 CanReadField "maxPerStageDescriptorStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageDescriptorStorageBuffers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageDescriptorStorageBuffers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageDescriptorSampledImages VkPhysicalDeviceLimits
-         where
-        type VkMaxPerStageDescriptorSampledImagesMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxPerStageDescriptorSampledImages #-}
-        vkMaxPerStageDescriptorSampledImages x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages})
-
-        {-# INLINE vkMaxPerStageDescriptorSampledImagesByteOffset #-}
-        vkMaxPerStageDescriptorSampledImagesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-
-        {-# INLINE readVkMaxPerStageDescriptorSampledImages #-}
-        readVkMaxPerStageDescriptorSampledImages p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-
-        {-# INLINE writeVkMaxPerStageDescriptorSampledImages #-}
-        writeVkMaxPerStageDescriptorSampledImages p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-
-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 CanReadField "maxPerStageDescriptorSampledImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageDescriptorSampledImages
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageDescriptorSampledImages
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageDescriptorStorageImages VkPhysicalDeviceLimits
-         where
-        type VkMaxPerStageDescriptorStorageImagesMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxPerStageDescriptorStorageImages #-}
-        vkMaxPerStageDescriptorStorageImages x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages})
-
-        {-# INLINE vkMaxPerStageDescriptorStorageImagesByteOffset #-}
-        vkMaxPerStageDescriptorStorageImagesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-
-        {-# INLINE readVkMaxPerStageDescriptorStorageImages #-}
-        readVkMaxPerStageDescriptorStorageImages p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-
-        {-# INLINE writeVkMaxPerStageDescriptorStorageImages #-}
-        writeVkMaxPerStageDescriptorStorageImages p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-
-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 CanReadField "maxPerStageDescriptorStorageImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageDescriptorStorageImages
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageDescriptorStorageImages
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageDescriptorInputAttachments VkPhysicalDeviceLimits
-         where
-        type VkMaxPerStageDescriptorInputAttachmentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxPerStageDescriptorInputAttachments #-}
-        vkMaxPerStageDescriptorInputAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments})
-
-        {-# INLINE vkMaxPerStageDescriptorInputAttachmentsByteOffset #-}
-        vkMaxPerStageDescriptorInputAttachmentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-
-        {-# INLINE readVkMaxPerStageDescriptorInputAttachments #-}
-        readVkMaxPerStageDescriptorInputAttachments p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-
-        {-# INLINE writeVkMaxPerStageDescriptorInputAttachments #-}
-        writeVkMaxPerStageDescriptorInputAttachments p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-
-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 CanReadField "maxPerStageDescriptorInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageDescriptorInputAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageDescriptorInputAttachments
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxPerStageResources VkPhysicalDeviceLimits where
-        type VkMaxPerStageResourcesMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxPerStageResources #-}
-        vkMaxPerStageResources x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageResources})
-
-        {-# INLINE vkMaxPerStageResourcesByteOffset #-}
-        vkMaxPerStageResourcesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-
-        {-# INLINE readVkMaxPerStageResources #-}
-        readVkMaxPerStageResources p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-
-        {-# INLINE writeVkMaxPerStageResources #-}
-        writeVkMaxPerStageResources p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-
-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 CanReadField "maxPerStageResources" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxPerStageResources
-
-        {-# INLINE readField #-}
-        readField = readVkMaxPerStageResources
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetSamplers VkPhysicalDeviceLimits where
-        type VkMaxDescriptorSetSamplersMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxDescriptorSetSamplers #-}
-        vkMaxDescriptorSetSamplers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers})
-
-        {-# INLINE vkMaxDescriptorSetSamplersByteOffset #-}
-        vkMaxDescriptorSetSamplersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-
-        {-# INLINE readVkMaxDescriptorSetSamplers #-}
-        readVkMaxDescriptorSetSamplers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-
-        {-# INLINE writeVkMaxDescriptorSetSamplers #-}
-        writeVkMaxDescriptorSetSamplers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-
-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 CanReadField "maxDescriptorSetSamplers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetSamplers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetSamplers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetUniformBuffers VkPhysicalDeviceLimits where
-        type VkMaxDescriptorSetUniformBuffersMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxDescriptorSetUniformBuffers #-}
-        vkMaxDescriptorSetUniformBuffers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers})
-
-        {-# INLINE vkMaxDescriptorSetUniformBuffersByteOffset #-}
-        vkMaxDescriptorSetUniformBuffersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-
-        {-# INLINE readVkMaxDescriptorSetUniformBuffers #-}
-        readVkMaxDescriptorSetUniformBuffers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-
-        {-# INLINE writeVkMaxDescriptorSetUniformBuffers #-}
-        writeVkMaxDescriptorSetUniformBuffers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-
-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 CanReadField "maxDescriptorSetUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetUniformBuffers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetUniformBuffers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetUniformBuffersDynamic VkPhysicalDeviceLimits
-         where
-        type VkMaxDescriptorSetUniformBuffersDynamicMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxDescriptorSetUniformBuffersDynamic #-}
-        vkMaxDescriptorSetUniformBuffersDynamic x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic})
-
-        {-# INLINE vkMaxDescriptorSetUniformBuffersDynamicByteOffset #-}
-        vkMaxDescriptorSetUniformBuffersDynamicByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-
-        {-# INLINE readVkMaxDescriptorSetUniformBuffersDynamic #-}
-        readVkMaxDescriptorSetUniformBuffersDynamic p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-
-        {-# INLINE writeVkMaxDescriptorSetUniformBuffersDynamic #-}
-        writeVkMaxDescriptorSetUniformBuffersDynamic p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-
-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 CanReadField "maxDescriptorSetUniformBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetUniformBuffersDynamic
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetUniformBuffersDynamic
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetStorageBuffers VkPhysicalDeviceLimits where
-        type VkMaxDescriptorSetStorageBuffersMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxDescriptorSetStorageBuffers #-}
-        vkMaxDescriptorSetStorageBuffers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers})
-
-        {-# INLINE vkMaxDescriptorSetStorageBuffersByteOffset #-}
-        vkMaxDescriptorSetStorageBuffersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-
-        {-# INLINE readVkMaxDescriptorSetStorageBuffers #-}
-        readVkMaxDescriptorSetStorageBuffers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-
-        {-# INLINE writeVkMaxDescriptorSetStorageBuffers #-}
-        writeVkMaxDescriptorSetStorageBuffers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-
-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 CanReadField "maxDescriptorSetStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetStorageBuffers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetStorageBuffers
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetStorageBuffersDynamic VkPhysicalDeviceLimits
-         where
-        type VkMaxDescriptorSetStorageBuffersDynamicMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxDescriptorSetStorageBuffersDynamic #-}
-        vkMaxDescriptorSetStorageBuffersDynamic x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic})
-
-        {-# INLINE vkMaxDescriptorSetStorageBuffersDynamicByteOffset #-}
-        vkMaxDescriptorSetStorageBuffersDynamicByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-
-        {-# INLINE readVkMaxDescriptorSetStorageBuffersDynamic #-}
-        readVkMaxDescriptorSetStorageBuffersDynamic p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-
-        {-# INLINE writeVkMaxDescriptorSetStorageBuffersDynamic #-}
-        writeVkMaxDescriptorSetStorageBuffersDynamic p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-
-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 CanReadField "maxDescriptorSetStorageBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetStorageBuffersDynamic
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetStorageBuffersDynamic
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetSampledImages VkPhysicalDeviceLimits where
-        type VkMaxDescriptorSetSampledImagesMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxDescriptorSetSampledImages #-}
-        vkMaxDescriptorSetSampledImages x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages})
-
-        {-# INLINE vkMaxDescriptorSetSampledImagesByteOffset #-}
-        vkMaxDescriptorSetSampledImagesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-
-        {-# INLINE readVkMaxDescriptorSetSampledImages #-}
-        readVkMaxDescriptorSetSampledImages p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-
-        {-# INLINE writeVkMaxDescriptorSetSampledImages #-}
-        writeVkMaxDescriptorSetSampledImages p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-
-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 CanReadField "maxDescriptorSetSampledImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetSampledImages
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetSampledImages
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetStorageImages VkPhysicalDeviceLimits where
-        type VkMaxDescriptorSetStorageImagesMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxDescriptorSetStorageImages #-}
-        vkMaxDescriptorSetStorageImages x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages})
-
-        {-# INLINE vkMaxDescriptorSetStorageImagesByteOffset #-}
-        vkMaxDescriptorSetStorageImagesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-
-        {-# INLINE readVkMaxDescriptorSetStorageImages #-}
-        readVkMaxDescriptorSetStorageImages p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-
-        {-# INLINE writeVkMaxDescriptorSetStorageImages #-}
-        writeVkMaxDescriptorSetStorageImages p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-
-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 CanReadField "maxDescriptorSetStorageImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetStorageImages
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetStorageImages
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDescriptorSetInputAttachments VkPhysicalDeviceLimits where
-        type VkMaxDescriptorSetInputAttachmentsMType VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxDescriptorSetInputAttachments #-}
-        vkMaxDescriptorSetInputAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments})
-
-        {-# INLINE vkMaxDescriptorSetInputAttachmentsByteOffset #-}
-        vkMaxDescriptorSetInputAttachmentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-
-        {-# INLINE readVkMaxDescriptorSetInputAttachments #-}
-        readVkMaxDescriptorSetInputAttachments p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-
-        {-# INLINE writeVkMaxDescriptorSetInputAttachments #-}
-        writeVkMaxDescriptorSetInputAttachments p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-
-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 CanReadField "maxDescriptorSetInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDescriptorSetInputAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDescriptorSetInputAttachments
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxVertexInputAttributes VkPhysicalDeviceLimits where
-        type VkMaxVertexInputAttributesMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxVertexInputAttributes #-}
-        vkMaxVertexInputAttributes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes})
-
-        {-# INLINE vkMaxVertexInputAttributesByteOffset #-}
-        vkMaxVertexInputAttributesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-
-        {-# INLINE readVkMaxVertexInputAttributes #-}
-        readVkMaxVertexInputAttributes p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-
-        {-# INLINE writeVkMaxVertexInputAttributes #-}
-        writeVkMaxVertexInputAttributes p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-
-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 CanReadField "maxVertexInputAttributes"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxVertexInputAttributes
-
-        {-# INLINE readField #-}
-        readField = readVkMaxVertexInputAttributes
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxVertexInputBindings VkPhysicalDeviceLimits where
-        type VkMaxVertexInputBindingsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxVertexInputBindings #-}
-        vkMaxVertexInputBindings x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputBindings})
-
-        {-# INLINE vkMaxVertexInputBindingsByteOffset #-}
-        vkMaxVertexInputBindingsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-
-        {-# INLINE readVkMaxVertexInputBindings #-}
-        readVkMaxVertexInputBindings p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-
-        {-# INLINE writeVkMaxVertexInputBindings #-}
-        writeVkMaxVertexInputBindings p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-
-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 CanReadField "maxVertexInputBindings"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxVertexInputBindings
-
-        {-# INLINE readField #-}
-        readField = readVkMaxVertexInputBindings
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxVertexInputAttributeOffset VkPhysicalDeviceLimits where
-        type VkMaxVertexInputAttributeOffsetMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxVertexInputAttributeOffset #-}
-        vkMaxVertexInputAttributeOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset})
-
-        {-# INLINE vkMaxVertexInputAttributeOffsetByteOffset #-}
-        vkMaxVertexInputAttributeOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-
-        {-# INLINE readVkMaxVertexInputAttributeOffset #-}
-        readVkMaxVertexInputAttributeOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-
-        {-# INLINE writeVkMaxVertexInputAttributeOffset #-}
-        writeVkMaxVertexInputAttributeOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-
-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 CanReadField "maxVertexInputAttributeOffset"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxVertexInputAttributeOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMaxVertexInputAttributeOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxVertexInputBindingStride VkPhysicalDeviceLimits where
-        type VkMaxVertexInputBindingStrideMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxVertexInputBindingStride #-}
-        vkMaxVertexInputBindingStride x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride})
-
-        {-# INLINE vkMaxVertexInputBindingStrideByteOffset #-}
-        vkMaxVertexInputBindingStrideByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-
-        {-# INLINE readVkMaxVertexInputBindingStride #-}
-        readVkMaxVertexInputBindingStride p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-
-        {-# INLINE writeVkMaxVertexInputBindingStride #-}
-        writeVkMaxVertexInputBindingStride p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-
-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 CanReadField "maxVertexInputBindingStride"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxVertexInputBindingStride
-
-        {-# INLINE readField #-}
-        readField = readVkMaxVertexInputBindingStride
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxVertexOutputComponents VkPhysicalDeviceLimits where
-        type VkMaxVertexOutputComponentsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxVertexOutputComponents #-}
-        vkMaxVertexOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents})
-
-        {-# INLINE vkMaxVertexOutputComponentsByteOffset #-}
-        vkMaxVertexOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-
-        {-# INLINE readVkMaxVertexOutputComponents #-}
-        readVkMaxVertexOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-
-        {-# INLINE writeVkMaxVertexOutputComponents #-}
-        writeVkMaxVertexOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-
-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 CanReadField "maxVertexOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxVertexOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxVertexOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationGenerationLevel VkPhysicalDeviceLimits where
-        type VkMaxTessellationGenerationLevelMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxTessellationGenerationLevel #-}
-        vkMaxTessellationGenerationLevel x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel})
-
-        {-# INLINE vkMaxTessellationGenerationLevelByteOffset #-}
-        vkMaxTessellationGenerationLevelByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-
-        {-# INLINE readVkMaxTessellationGenerationLevel #-}
-        readVkMaxTessellationGenerationLevel p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-
-        {-# INLINE writeVkMaxTessellationGenerationLevel #-}
-        writeVkMaxTessellationGenerationLevel p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-
-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 CanReadField "maxTessellationGenerationLevel"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationGenerationLevel
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationGenerationLevel
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationPatchSize VkPhysicalDeviceLimits where
-        type VkMaxTessellationPatchSizeMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxTessellationPatchSize #-}
-        vkMaxTessellationPatchSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize})
-
-        {-# INLINE vkMaxTessellationPatchSizeByteOffset #-}
-        vkMaxTessellationPatchSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-
-        {-# INLINE readVkMaxTessellationPatchSize #-}
-        readVkMaxTessellationPatchSize p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-
-        {-# INLINE writeVkMaxTessellationPatchSize #-}
-        writeVkMaxTessellationPatchSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-
-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 CanReadField "maxTessellationPatchSize"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationPatchSize
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationPatchSize
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationControlPerVertexInputComponents
-           VkPhysicalDeviceLimits
-         where
-        type VkMaxTessellationControlPerVertexInputComponentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxTessellationControlPerVertexInputComponents #-}
-        vkMaxTessellationControlPerVertexInputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents})
-
-        {-# INLINE vkMaxTessellationControlPerVertexInputComponentsByteOffset
-                   #-}
-        vkMaxTessellationControlPerVertexInputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-
-        {-# INLINE readVkMaxTessellationControlPerVertexInputComponents #-}
-        readVkMaxTessellationControlPerVertexInputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-
-        {-# INLINE writeVkMaxTessellationControlPerVertexInputComponents
-                   #-}
-        writeVkMaxTessellationControlPerVertexInputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-
-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 CanReadField
-           "maxTessellationControlPerVertexInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationControlPerVertexInputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationControlPerVertexInputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationControlPerVertexOutputComponents
-           VkPhysicalDeviceLimits
-         where
-        type VkMaxTessellationControlPerVertexOutputComponentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxTessellationControlPerVertexOutputComponents #-}
-        vkMaxTessellationControlPerVertexOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents})
-
-        {-# INLINE vkMaxTessellationControlPerVertexOutputComponentsByteOffset
-                   #-}
-        vkMaxTessellationControlPerVertexOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-
-        {-# INLINE readVkMaxTessellationControlPerVertexOutputComponents
-                   #-}
-        readVkMaxTessellationControlPerVertexOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-
-        {-# INLINE writeVkMaxTessellationControlPerVertexOutputComponents
-                   #-}
-        writeVkMaxTessellationControlPerVertexOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-
-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 CanReadField
-           "maxTessellationControlPerVertexOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationControlPerVertexOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationControlPerVertexOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationControlPerPatchOutputComponents
-           VkPhysicalDeviceLimits
-         where
-        type VkMaxTessellationControlPerPatchOutputComponentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxTessellationControlPerPatchOutputComponents #-}
-        vkMaxTessellationControlPerPatchOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents})
-
-        {-# INLINE vkMaxTessellationControlPerPatchOutputComponentsByteOffset
-                   #-}
-        vkMaxTessellationControlPerPatchOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-
-        {-# INLINE readVkMaxTessellationControlPerPatchOutputComponents #-}
-        readVkMaxTessellationControlPerPatchOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-
-        {-# INLINE writeVkMaxTessellationControlPerPatchOutputComponents
-                   #-}
-        writeVkMaxTessellationControlPerPatchOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-
-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 CanReadField
-           "maxTessellationControlPerPatchOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationControlPerPatchOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationControlPerPatchOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationControlTotalOutputComponents
-           VkPhysicalDeviceLimits
-         where
-        type VkMaxTessellationControlTotalOutputComponentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxTessellationControlTotalOutputComponents #-}
-        vkMaxTessellationControlTotalOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents})
-
-        {-# INLINE vkMaxTessellationControlTotalOutputComponentsByteOffset
-                   #-}
-        vkMaxTessellationControlTotalOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-
-        {-# INLINE readVkMaxTessellationControlTotalOutputComponents #-}
-        readVkMaxTessellationControlTotalOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-
-        {-# INLINE writeVkMaxTessellationControlTotalOutputComponents #-}
-        writeVkMaxTessellationControlTotalOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-
-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 CanReadField "maxTessellationControlTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationControlTotalOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationControlTotalOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationEvaluationInputComponents
-           VkPhysicalDeviceLimits
-         where
-        type VkMaxTessellationEvaluationInputComponentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxTessellationEvaluationInputComponents #-}
-        vkMaxTessellationEvaluationInputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents})
-
-        {-# INLINE vkMaxTessellationEvaluationInputComponentsByteOffset #-}
-        vkMaxTessellationEvaluationInputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-
-        {-# INLINE readVkMaxTessellationEvaluationInputComponents #-}
-        readVkMaxTessellationEvaluationInputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-
-        {-# INLINE writeVkMaxTessellationEvaluationInputComponents #-}
-        writeVkMaxTessellationEvaluationInputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-
-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 CanReadField "maxTessellationEvaluationInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationEvaluationInputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationEvaluationInputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTessellationEvaluationOutputComponents
-           VkPhysicalDeviceLimits
-         where
-        type VkMaxTessellationEvaluationOutputComponentsMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxTessellationEvaluationOutputComponents #-}
-        vkMaxTessellationEvaluationOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents})
-
-        {-# INLINE vkMaxTessellationEvaluationOutputComponentsByteOffset
-                   #-}
-        vkMaxTessellationEvaluationOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-
-        {-# INLINE readVkMaxTessellationEvaluationOutputComponents #-}
-        readVkMaxTessellationEvaluationOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-
-        {-# INLINE writeVkMaxTessellationEvaluationOutputComponents #-}
-        writeVkMaxTessellationEvaluationOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-
-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 CanReadField "maxTessellationEvaluationOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTessellationEvaluationOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTessellationEvaluationOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxGeometryShaderInvocations VkPhysicalDeviceLimits where
-        type VkMaxGeometryShaderInvocationsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxGeometryShaderInvocations #-}
-        vkMaxGeometryShaderInvocations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations})
-
-        {-# INLINE vkMaxGeometryShaderInvocationsByteOffset #-}
-        vkMaxGeometryShaderInvocationsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-
-        {-# INLINE readVkMaxGeometryShaderInvocations #-}
-        readVkMaxGeometryShaderInvocations p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-
-        {-# INLINE writeVkMaxGeometryShaderInvocations #-}
-        writeVkMaxGeometryShaderInvocations p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-
-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 CanReadField "maxGeometryShaderInvocations"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxGeometryShaderInvocations
-
-        {-# INLINE readField #-}
-        readField = readVkMaxGeometryShaderInvocations
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxGeometryInputComponents VkPhysicalDeviceLimits where
-        type VkMaxGeometryInputComponentsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxGeometryInputComponents #-}
-        vkMaxGeometryInputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents})
-
-        {-# INLINE vkMaxGeometryInputComponentsByteOffset #-}
-        vkMaxGeometryInputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-
-        {-# INLINE readVkMaxGeometryInputComponents #-}
-        readVkMaxGeometryInputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-
-        {-# INLINE writeVkMaxGeometryInputComponents #-}
-        writeVkMaxGeometryInputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-
-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 CanReadField "maxGeometryInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxGeometryInputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxGeometryInputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxGeometryOutputComponents VkPhysicalDeviceLimits where
-        type VkMaxGeometryOutputComponentsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxGeometryOutputComponents #-}
-        vkMaxGeometryOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents})
-
-        {-# INLINE vkMaxGeometryOutputComponentsByteOffset #-}
-        vkMaxGeometryOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-
-        {-# INLINE readVkMaxGeometryOutputComponents #-}
-        readVkMaxGeometryOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-
-        {-# INLINE writeVkMaxGeometryOutputComponents #-}
-        writeVkMaxGeometryOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-
-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 CanReadField "maxGeometryOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxGeometryOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxGeometryOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxGeometryOutputVertices VkPhysicalDeviceLimits where
-        type VkMaxGeometryOutputVerticesMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxGeometryOutputVertices #-}
-        vkMaxGeometryOutputVertices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices})
-
-        {-# INLINE vkMaxGeometryOutputVerticesByteOffset #-}
-        vkMaxGeometryOutputVerticesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-
-        {-# INLINE readVkMaxGeometryOutputVertices #-}
-        readVkMaxGeometryOutputVertices p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-
-        {-# INLINE writeVkMaxGeometryOutputVertices #-}
-        writeVkMaxGeometryOutputVertices p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-
-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 CanReadField "maxGeometryOutputVertices"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxGeometryOutputVertices
-
-        {-# INLINE readField #-}
-        readField = readVkMaxGeometryOutputVertices
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxGeometryTotalOutputComponents VkPhysicalDeviceLimits where
-        type VkMaxGeometryTotalOutputComponentsMType VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxGeometryTotalOutputComponents #-}
-        vkMaxGeometryTotalOutputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents})
-
-        {-# INLINE vkMaxGeometryTotalOutputComponentsByteOffset #-}
-        vkMaxGeometryTotalOutputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-
-        {-# INLINE readVkMaxGeometryTotalOutputComponents #-}
-        readVkMaxGeometryTotalOutputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-
-        {-# INLINE writeVkMaxGeometryTotalOutputComponents #-}
-        writeVkMaxGeometryTotalOutputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-
-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 CanReadField "maxGeometryTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxGeometryTotalOutputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxGeometryTotalOutputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFragmentInputComponents VkPhysicalDeviceLimits where
-        type VkMaxFragmentInputComponentsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxFragmentInputComponents #-}
-        vkMaxFragmentInputComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents})
-
-        {-# INLINE vkMaxFragmentInputComponentsByteOffset #-}
-        vkMaxFragmentInputComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-
-        {-# INLINE readVkMaxFragmentInputComponents #-}
-        readVkMaxFragmentInputComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-
-        {-# INLINE writeVkMaxFragmentInputComponents #-}
-        writeVkMaxFragmentInputComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-
-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 CanReadField "maxFragmentInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFragmentInputComponents
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFragmentInputComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFragmentOutputAttachments VkPhysicalDeviceLimits where
-        type VkMaxFragmentOutputAttachmentsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxFragmentOutputAttachments #-}
-        vkMaxFragmentOutputAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments})
-
-        {-# INLINE vkMaxFragmentOutputAttachmentsByteOffset #-}
-        vkMaxFragmentOutputAttachmentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-
-        {-# INLINE readVkMaxFragmentOutputAttachments #-}
-        readVkMaxFragmentOutputAttachments p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-
-        {-# INLINE writeVkMaxFragmentOutputAttachments #-}
-        writeVkMaxFragmentOutputAttachments p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-
-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 CanReadField "maxFragmentOutputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFragmentOutputAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFragmentOutputAttachments
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFragmentDualSrcAttachments VkPhysicalDeviceLimits where
-        type VkMaxFragmentDualSrcAttachmentsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxFragmentDualSrcAttachments #-}
-        vkMaxFragmentDualSrcAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments})
-
-        {-# INLINE vkMaxFragmentDualSrcAttachmentsByteOffset #-}
-        vkMaxFragmentDualSrcAttachmentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-
-        {-# INLINE readVkMaxFragmentDualSrcAttachments #-}
-        readVkMaxFragmentDualSrcAttachments p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-
-        {-# INLINE writeVkMaxFragmentDualSrcAttachments #-}
-        writeVkMaxFragmentDualSrcAttachments p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-
-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 CanReadField "maxFragmentDualSrcAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFragmentDualSrcAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFragmentDualSrcAttachments
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFragmentCombinedOutputResources VkPhysicalDeviceLimits
-         where
-        type VkMaxFragmentCombinedOutputResourcesMType
-               VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxFragmentCombinedOutputResources #-}
-        vkMaxFragmentCombinedOutputResources x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources})
-
-        {-# INLINE vkMaxFragmentCombinedOutputResourcesByteOffset #-}
-        vkMaxFragmentCombinedOutputResourcesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-
-        {-# INLINE readVkMaxFragmentCombinedOutputResources #-}
-        readVkMaxFragmentCombinedOutputResources p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-
-        {-# INLINE writeVkMaxFragmentCombinedOutputResources #-}
-        writeVkMaxFragmentCombinedOutputResources p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-
-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 CanReadField "maxFragmentCombinedOutputResources"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFragmentCombinedOutputResources
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFragmentCombinedOutputResources
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxComputeSharedMemorySize VkPhysicalDeviceLimits where
-        type VkMaxComputeSharedMemorySizeMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxComputeSharedMemorySize #-}
-        vkMaxComputeSharedMemorySize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize})
-
-        {-# INLINE vkMaxComputeSharedMemorySizeByteOffset #-}
-        vkMaxComputeSharedMemorySizeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-
-        {-# INLINE readVkMaxComputeSharedMemorySize #-}
-        readVkMaxComputeSharedMemorySize p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-
-        {-# INLINE writeVkMaxComputeSharedMemorySize #-}
-        writeVkMaxComputeSharedMemorySize p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-
-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 CanReadField "maxComputeSharedMemorySize"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxComputeSharedMemorySize
-
-        {-# INLINE readField #-}
-        readField = readVkMaxComputeSharedMemorySize
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxComputeWorkGroupCountArray VkPhysicalDeviceLimits where
-        type VkMaxComputeWorkGroupCountArrayMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxComputeWorkGroupCountArray #-}
-        vkMaxComputeWorkGroupCountArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word32) +
-                    #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}))
-
-        {-# INLINE vkMaxComputeWorkGroupCountArrayByteOffset #-}
-        vkMaxComputeWorkGroupCountArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
-
-        {-# INLINE readVkMaxComputeWorkGroupCountArray #-}
-        readVkMaxComputeWorkGroupCountArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount})
-
-        {-# INLINE writeVkMaxComputeWorkGroupCountArray #-}
-        writeVkMaxComputeWorkGroupCountArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount})
-
-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 (KnownNat idx,
-          IndexInBounds "maxComputeWorkGroupCount" idx
-            VkPhysicalDeviceLimits) =>
-         CanReadFieldArray "maxComputeWorkGroupCount" idx
-           VkPhysicalDeviceLimits
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxComputeWorkGroupCount" 0
-                         VkPhysicalDeviceLimits
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxComputeWorkGroupCount" 1
-                         VkPhysicalDeviceLimits
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxComputeWorkGroupCount" 2
-                         VkPhysicalDeviceLimits
-                       #-}
-        type FieldArrayLength "maxComputeWorkGroupCount"
-               VkPhysicalDeviceLimits
-             = 3
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 3
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkMaxComputeWorkGroupCountArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkMaxComputeWorkGroupCountArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxComputeWorkGroupInvocations VkPhysicalDeviceLimits where
-        type VkMaxComputeWorkGroupInvocationsMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxComputeWorkGroupInvocations #-}
-        vkMaxComputeWorkGroupInvocations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations})
-
-        {-# INLINE vkMaxComputeWorkGroupInvocationsByteOffset #-}
-        vkMaxComputeWorkGroupInvocationsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-
-        {-# INLINE readVkMaxComputeWorkGroupInvocations #-}
-        readVkMaxComputeWorkGroupInvocations p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-
-        {-# INLINE writeVkMaxComputeWorkGroupInvocations #-}
-        writeVkMaxComputeWorkGroupInvocations p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-
-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 CanReadField "maxComputeWorkGroupInvocations"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxComputeWorkGroupInvocations
-
-        {-# INLINE readField #-}
-        readField = readVkMaxComputeWorkGroupInvocations
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxComputeWorkGroupSizeArray VkPhysicalDeviceLimits where
-        type VkMaxComputeWorkGroupSizeArrayMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxComputeWorkGroupSizeArray #-}
-        vkMaxComputeWorkGroupSizeArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word32) +
-                    #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}))
-
-        {-# INLINE vkMaxComputeWorkGroupSizeArrayByteOffset #-}
-        vkMaxComputeWorkGroupSizeArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
-
-        {-# INLINE readVkMaxComputeWorkGroupSizeArray #-}
-        readVkMaxComputeWorkGroupSizeArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize})
-
-        {-# INLINE writeVkMaxComputeWorkGroupSizeArray #-}
-        writeVkMaxComputeWorkGroupSizeArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize})
-
-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 (KnownNat idx,
-          IndexInBounds "maxComputeWorkGroupSize" idx
-            VkPhysicalDeviceLimits) =>
-         CanReadFieldArray "maxComputeWorkGroupSize" idx
-           VkPhysicalDeviceLimits
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxComputeWorkGroupSize" 0
-                         VkPhysicalDeviceLimits
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxComputeWorkGroupSize" 1
-                         VkPhysicalDeviceLimits
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxComputeWorkGroupSize" 2
-                         VkPhysicalDeviceLimits
-                       #-}
-        type FieldArrayLength "maxComputeWorkGroupSize"
-               VkPhysicalDeviceLimits
-             = 3
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 3
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkMaxComputeWorkGroupSizeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkMaxComputeWorkGroupSizeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSubPixelPrecisionBits VkPhysicalDeviceLimits where
-        type VkSubPixelPrecisionBitsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkSubPixelPrecisionBits #-}
-        vkSubPixelPrecisionBits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits})
-
-        {-# INLINE vkSubPixelPrecisionBitsByteOffset #-}
-        vkSubPixelPrecisionBitsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-
-        {-# INLINE readVkSubPixelPrecisionBits #-}
-        readVkSubPixelPrecisionBits p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-
-        {-# INLINE writeVkSubPixelPrecisionBits #-}
-        writeVkSubPixelPrecisionBits p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-
-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 CanReadField "subPixelPrecisionBits"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSubPixelPrecisionBits
-
-        {-# INLINE readField #-}
-        readField = readVkSubPixelPrecisionBits
-
-instance {-# OVERLAPPING #-}
-         HasVkSubTexelPrecisionBits VkPhysicalDeviceLimits where
-        type VkSubTexelPrecisionBitsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkSubTexelPrecisionBits #-}
-        vkSubTexelPrecisionBits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits})
-
-        {-# INLINE vkSubTexelPrecisionBitsByteOffset #-}
-        vkSubTexelPrecisionBitsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-
-        {-# INLINE readVkSubTexelPrecisionBits #-}
-        readVkSubTexelPrecisionBits p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-
-        {-# INLINE writeVkSubTexelPrecisionBits #-}
-        writeVkSubTexelPrecisionBits p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-
-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 CanReadField "subTexelPrecisionBits"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSubTexelPrecisionBits
-
-        {-# INLINE readField #-}
-        readField = readVkSubTexelPrecisionBits
-
-instance {-# OVERLAPPING #-}
-         HasVkMipmapPrecisionBits VkPhysicalDeviceLimits where
-        type VkMipmapPrecisionBitsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMipmapPrecisionBits #-}
-        vkMipmapPrecisionBits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits})
-
-        {-# INLINE vkMipmapPrecisionBitsByteOffset #-}
-        vkMipmapPrecisionBitsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-
-        {-# INLINE readVkMipmapPrecisionBits #-}
-        readVkMipmapPrecisionBits p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-
-        {-# INLINE writeVkMipmapPrecisionBits #-}
-        writeVkMipmapPrecisionBits p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-
-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 CanReadField "mipmapPrecisionBits" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMipmapPrecisionBits
-
-        {-# INLINE readField #-}
-        readField = readVkMipmapPrecisionBits
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDrawIndexedIndexValue VkPhysicalDeviceLimits where
-        type VkMaxDrawIndexedIndexValueMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxDrawIndexedIndexValue #-}
-        vkMaxDrawIndexedIndexValue x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue})
-
-        {-# INLINE vkMaxDrawIndexedIndexValueByteOffset #-}
-        vkMaxDrawIndexedIndexValueByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-
-        {-# INLINE readVkMaxDrawIndexedIndexValue #-}
-        readVkMaxDrawIndexedIndexValue p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-
-        {-# INLINE writeVkMaxDrawIndexedIndexValue #-}
-        writeVkMaxDrawIndexedIndexValue p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-
-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 CanReadField "maxDrawIndexedIndexValue"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDrawIndexedIndexValue
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDrawIndexedIndexValue
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDrawIndirectCount VkPhysicalDeviceLimits where
-        type VkMaxDrawIndirectCountMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxDrawIndirectCount #-}
-        vkMaxDrawIndirectCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount})
-
-        {-# INLINE vkMaxDrawIndirectCountByteOffset #-}
-        vkMaxDrawIndirectCountByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-
-        {-# INLINE readVkMaxDrawIndirectCount #-}
-        readVkMaxDrawIndirectCount p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-
-        {-# INLINE writeVkMaxDrawIndirectCount #-}
-        writeVkMaxDrawIndirectCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-
-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 CanReadField "maxDrawIndirectCount" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxDrawIndirectCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxDrawIndirectCount
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSamplerLodBias VkPhysicalDeviceLimits where
-        type VkMaxSamplerLodBiasMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkMaxSamplerLodBias #-}
-        vkMaxSamplerLodBias x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSamplerLodBias})
-
-        {-# INLINE vkMaxSamplerLodBiasByteOffset #-}
-        vkMaxSamplerLodBiasByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-
-        {-# INLINE readVkMaxSamplerLodBias #-}
-        readVkMaxSamplerLodBias p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-
-        {-# INLINE writeVkMaxSamplerLodBias #-}
-        writeVkMaxSamplerLodBias p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-
-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 CanReadField "maxSamplerLodBias" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSamplerLodBias
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSamplerLodBias
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSamplerAnisotropy VkPhysicalDeviceLimits where
-        type VkMaxSamplerAnisotropyMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkMaxSamplerAnisotropy #-}
-        vkMaxSamplerAnisotropy x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy})
-
-        {-# INLINE vkMaxSamplerAnisotropyByteOffset #-}
-        vkMaxSamplerAnisotropyByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-
-        {-# INLINE readVkMaxSamplerAnisotropy #-}
-        readVkMaxSamplerAnisotropy p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-
-        {-# INLINE writeVkMaxSamplerAnisotropy #-}
-        writeVkMaxSamplerAnisotropy p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-
-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 CanReadField "maxSamplerAnisotropy" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSamplerAnisotropy
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSamplerAnisotropy
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxViewports VkPhysicalDeviceLimits where
-        type VkMaxViewportsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxViewports #-}
-        vkMaxViewports x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxViewports})
-
-        {-# INLINE vkMaxViewportsByteOffset #-}
-        vkMaxViewportsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxViewports}
-
-        {-# INLINE readVkMaxViewports #-}
-        readVkMaxViewports p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxViewports}
-
-        {-# INLINE writeVkMaxViewports #-}
-        writeVkMaxViewports p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxViewports}
-
-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 CanReadField "maxViewports" VkPhysicalDeviceLimits where
-        {-# INLINE getField #-}
-        getField = vkMaxViewports
-
-        {-# INLINE readField #-}
-        readField = readVkMaxViewports
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxViewportDimensionsArray VkPhysicalDeviceLimits where
-        type VkMaxViewportDimensionsArrayMType VkPhysicalDeviceLimits =
-             Word32
-
-        {-# NOINLINE vkMaxViewportDimensionsArray #-}
-        vkMaxViewportDimensionsArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word32) +
-                    #{offset VkPhysicalDeviceLimits, maxViewportDimensions}))
-
-        {-# INLINE vkMaxViewportDimensionsArrayByteOffset #-}
-        vkMaxViewportDimensionsArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxViewportDimensions}
-
-        {-# INLINE readVkMaxViewportDimensionsArray #-}
-        readVkMaxViewportDimensionsArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkPhysicalDeviceLimits, maxViewportDimensions})
-
-        {-# INLINE writeVkMaxViewportDimensionsArray #-}
-        writeVkMaxViewportDimensionsArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkPhysicalDeviceLimits, maxViewportDimensions})
-
-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 (KnownNat idx,
-          IndexInBounds "maxViewportDimensions" idx
-            VkPhysicalDeviceLimits) =>
-         CanReadFieldArray "maxViewportDimensions" idx
-           VkPhysicalDeviceLimits
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxViewportDimensions" 0 VkPhysicalDeviceLimits
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "maxViewportDimensions" 1 VkPhysicalDeviceLimits
-                       #-}
-        type FieldArrayLength "maxViewportDimensions"
-               VkPhysicalDeviceLimits
-             = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkMaxViewportDimensionsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkMaxViewportDimensionsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkViewportBoundsRangeArray VkPhysicalDeviceLimits where
-        type VkViewportBoundsRangeArrayMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkViewportBoundsRangeArray #-}
-        vkViewportBoundsRangeArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkPhysicalDeviceLimits, viewportBoundsRange}))
-
-        {-# INLINE vkViewportBoundsRangeArrayByteOffset #-}
-        vkViewportBoundsRangeArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, viewportBoundsRange}
-
-        {-# INLINE readVkViewportBoundsRangeArray #-}
-        readVkViewportBoundsRangeArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceLimits, viewportBoundsRange})
-
-        {-# INLINE writeVkViewportBoundsRangeArray #-}
-        writeVkViewportBoundsRangeArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceLimits, viewportBoundsRange})
-
-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 (KnownNat idx,
-          IndexInBounds "viewportBoundsRange" idx VkPhysicalDeviceLimits) =>
-         CanReadFieldArray "viewportBoundsRange" idx VkPhysicalDeviceLimits
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "viewportBoundsRange" 0 VkPhysicalDeviceLimits
-                       #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "viewportBoundsRange" 1 VkPhysicalDeviceLimits
-                       #-}
-        type FieldArrayLength "viewportBoundsRange" VkPhysicalDeviceLimits
-             = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkViewportBoundsRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkViewportBoundsRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkViewportSubPixelBits VkPhysicalDeviceLimits where
-        type VkViewportSubPixelBitsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkViewportSubPixelBits #-}
-        vkViewportSubPixelBits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, viewportSubPixelBits})
-
-        {-# INLINE vkViewportSubPixelBitsByteOffset #-}
-        vkViewportSubPixelBitsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-
-        {-# INLINE readVkViewportSubPixelBits #-}
-        readVkViewportSubPixelBits p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-
-        {-# INLINE writeVkViewportSubPixelBits #-}
-        writeVkViewportSubPixelBits p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-
-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 CanReadField "viewportSubPixelBits" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkViewportSubPixelBits
-
-        {-# INLINE readField #-}
-        readField = readVkViewportSubPixelBits
-
-instance {-# OVERLAPPING #-}
-         HasVkMinMemoryMapAlignment VkPhysicalDeviceLimits where
-        type VkMinMemoryMapAlignmentMType VkPhysicalDeviceLimits = CSize
-
-        {-# NOINLINE vkMinMemoryMapAlignment #-}
-        vkMinMemoryMapAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment})
-
-        {-# INLINE vkMinMemoryMapAlignmentByteOffset #-}
-        vkMinMemoryMapAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-
-        {-# INLINE readVkMinMemoryMapAlignment #-}
-        readVkMinMemoryMapAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-
-        {-# INLINE writeVkMinMemoryMapAlignment #-}
-        writeVkMinMemoryMapAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-
-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 CanReadField "minMemoryMapAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMinMemoryMapAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkMinMemoryMapAlignment
-
-instance {-# OVERLAPPING #-}
-         HasVkMinTexelBufferOffsetAlignment VkPhysicalDeviceLimits where
-        type VkMinTexelBufferOffsetAlignmentMType VkPhysicalDeviceLimits =
-             VkDeviceSize
-
-        {-# NOINLINE vkMinTexelBufferOffsetAlignment #-}
-        vkMinTexelBufferOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment})
-
-        {-# INLINE vkMinTexelBufferOffsetAlignmentByteOffset #-}
-        vkMinTexelBufferOffsetAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-
-        {-# INLINE readVkMinTexelBufferOffsetAlignment #-}
-        readVkMinTexelBufferOffsetAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-
-        {-# INLINE writeVkMinTexelBufferOffsetAlignment #-}
-        writeVkMinTexelBufferOffsetAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-
-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 CanReadField "minTexelBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMinTexelBufferOffsetAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkMinTexelBufferOffsetAlignment
-
-instance {-# OVERLAPPING #-}
-         HasVkMinUniformBufferOffsetAlignment VkPhysicalDeviceLimits where
-        type VkMinUniformBufferOffsetAlignmentMType VkPhysicalDeviceLimits
-             = VkDeviceSize
-
-        {-# NOINLINE vkMinUniformBufferOffsetAlignment #-}
-        vkMinUniformBufferOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment})
-
-        {-# INLINE vkMinUniformBufferOffsetAlignmentByteOffset #-}
-        vkMinUniformBufferOffsetAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-
-        {-# INLINE readVkMinUniformBufferOffsetAlignment #-}
-        readVkMinUniformBufferOffsetAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-
-        {-# INLINE writeVkMinUniformBufferOffsetAlignment #-}
-        writeVkMinUniformBufferOffsetAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-
-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 CanReadField "minUniformBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMinUniformBufferOffsetAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkMinUniformBufferOffsetAlignment
-
-instance {-# OVERLAPPING #-}
-         HasVkMinStorageBufferOffsetAlignment VkPhysicalDeviceLimits where
-        type VkMinStorageBufferOffsetAlignmentMType VkPhysicalDeviceLimits
-             = VkDeviceSize
-
-        {-# NOINLINE vkMinStorageBufferOffsetAlignment #-}
-        vkMinStorageBufferOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment})
-
-        {-# INLINE vkMinStorageBufferOffsetAlignmentByteOffset #-}
-        vkMinStorageBufferOffsetAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-
-        {-# INLINE readVkMinStorageBufferOffsetAlignment #-}
-        readVkMinStorageBufferOffsetAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-
-        {-# INLINE writeVkMinStorageBufferOffsetAlignment #-}
-        writeVkMinStorageBufferOffsetAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-
-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 CanReadField "minStorageBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMinStorageBufferOffsetAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkMinStorageBufferOffsetAlignment
-
-instance {-# OVERLAPPING #-}
-         HasVkMinTexelOffset VkPhysicalDeviceLimits where
-        type VkMinTexelOffsetMType VkPhysicalDeviceLimits = Int32
-
-        {-# NOINLINE vkMinTexelOffset #-}
-        vkMinTexelOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minTexelOffset})
-
-        {-# INLINE vkMinTexelOffsetByteOffset #-}
-        vkMinTexelOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minTexelOffset}
-
-        {-# INLINE readVkMinTexelOffset #-}
-        readVkMinTexelOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minTexelOffset}
-
-        {-# INLINE writeVkMinTexelOffset #-}
-        writeVkMinTexelOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minTexelOffset}
-
-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 CanReadField "minTexelOffset" VkPhysicalDeviceLimits where
-        {-# INLINE getField #-}
-        getField = vkMinTexelOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMinTexelOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTexelOffset VkPhysicalDeviceLimits where
-        type VkMaxTexelOffsetMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxTexelOffset #-}
-        vkMaxTexelOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTexelOffset})
-
-        {-# INLINE vkMaxTexelOffsetByteOffset #-}
-        vkMaxTexelOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-
-        {-# INLINE readVkMaxTexelOffset #-}
-        readVkMaxTexelOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-
-        {-# INLINE writeVkMaxTexelOffset #-}
-        writeVkMaxTexelOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-
-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 CanReadField "maxTexelOffset" VkPhysicalDeviceLimits where
-        {-# INLINE getField #-}
-        getField = vkMaxTexelOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTexelOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkMinTexelGatherOffset VkPhysicalDeviceLimits where
-        type VkMinTexelGatherOffsetMType VkPhysicalDeviceLimits = Int32
-
-        {-# NOINLINE vkMinTexelGatherOffset #-}
-        vkMinTexelGatherOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minTexelGatherOffset})
-
-        {-# INLINE vkMinTexelGatherOffsetByteOffset #-}
-        vkMinTexelGatherOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-
-        {-# INLINE readVkMinTexelGatherOffset #-}
-        readVkMinTexelGatherOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-
-        {-# INLINE writeVkMinTexelGatherOffset #-}
-        writeVkMinTexelGatherOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-
-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 CanReadField "minTexelGatherOffset" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMinTexelGatherOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMinTexelGatherOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxTexelGatherOffset VkPhysicalDeviceLimits where
-        type VkMaxTexelGatherOffsetMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxTexelGatherOffset #-}
-        vkMaxTexelGatherOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset})
-
-        {-# INLINE vkMaxTexelGatherOffsetByteOffset #-}
-        vkMaxTexelGatherOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-
-        {-# INLINE readVkMaxTexelGatherOffset #-}
-        readVkMaxTexelGatherOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-
-        {-# INLINE writeVkMaxTexelGatherOffset #-}
-        writeVkMaxTexelGatherOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-
-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 CanReadField "maxTexelGatherOffset" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxTexelGatherOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMaxTexelGatherOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkMinInterpolationOffset VkPhysicalDeviceLimits where
-        type VkMinInterpolationOffsetMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkMinInterpolationOffset #-}
-        vkMinInterpolationOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minInterpolationOffset})
-
-        {-# INLINE vkMinInterpolationOffsetByteOffset #-}
-        vkMinInterpolationOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-
-        {-# INLINE readVkMinInterpolationOffset #-}
-        readVkMinInterpolationOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-
-        {-# INLINE writeVkMinInterpolationOffset #-}
-        writeVkMinInterpolationOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-
-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 CanReadField "minInterpolationOffset"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMinInterpolationOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMinInterpolationOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxInterpolationOffset VkPhysicalDeviceLimits where
-        type VkMaxInterpolationOffsetMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkMaxInterpolationOffset #-}
-        vkMaxInterpolationOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxInterpolationOffset})
-
-        {-# INLINE vkMaxInterpolationOffsetByteOffset #-}
-        vkMaxInterpolationOffsetByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-
-        {-# INLINE readVkMaxInterpolationOffset #-}
-        readVkMaxInterpolationOffset p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-
-        {-# INLINE writeVkMaxInterpolationOffset #-}
-        writeVkMaxInterpolationOffset p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-
-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 CanReadField "maxInterpolationOffset"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxInterpolationOffset
-
-        {-# INLINE readField #-}
-        readField = readVkMaxInterpolationOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkSubPixelInterpolationOffsetBits VkPhysicalDeviceLimits where
-        type VkSubPixelInterpolationOffsetBitsMType VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkSubPixelInterpolationOffsetBits #-}
-        vkSubPixelInterpolationOffsetBits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits})
-
-        {-# INLINE vkSubPixelInterpolationOffsetBitsByteOffset #-}
-        vkSubPixelInterpolationOffsetBitsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-
-        {-# INLINE readVkSubPixelInterpolationOffsetBits #-}
-        readVkSubPixelInterpolationOffsetBits p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-
-        {-# INLINE writeVkSubPixelInterpolationOffsetBits #-}
-        writeVkSubPixelInterpolationOffsetBits p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-
-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 CanReadField "subPixelInterpolationOffsetBits"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSubPixelInterpolationOffsetBits
-
-        {-# INLINE readField #-}
-        readField = readVkSubPixelInterpolationOffsetBits
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFramebufferWidth VkPhysicalDeviceLimits where
-        type VkMaxFramebufferWidthMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxFramebufferWidth #-}
-        vkMaxFramebufferWidth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFramebufferWidth})
-
-        {-# INLINE vkMaxFramebufferWidthByteOffset #-}
-        vkMaxFramebufferWidthByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-
-        {-# INLINE readVkMaxFramebufferWidth #-}
-        readVkMaxFramebufferWidth p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-
-        {-# INLINE writeVkMaxFramebufferWidth #-}
-        writeVkMaxFramebufferWidth p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-
-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 CanReadField "maxFramebufferWidth" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFramebufferWidth
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFramebufferWidth
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFramebufferHeight VkPhysicalDeviceLimits where
-        type VkMaxFramebufferHeightMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxFramebufferHeight #-}
-        vkMaxFramebufferHeight x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFramebufferHeight})
-
-        {-# INLINE vkMaxFramebufferHeightByteOffset #-}
-        vkMaxFramebufferHeightByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-
-        {-# INLINE readVkMaxFramebufferHeight #-}
-        readVkMaxFramebufferHeight p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-
-        {-# INLINE writeVkMaxFramebufferHeight #-}
-        writeVkMaxFramebufferHeight p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-
-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 CanReadField "maxFramebufferHeight" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFramebufferHeight
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFramebufferHeight
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxFramebufferLayers VkPhysicalDeviceLimits where
-        type VkMaxFramebufferLayersMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxFramebufferLayers #-}
-        vkMaxFramebufferLayers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFramebufferLayers})
-
-        {-# INLINE vkMaxFramebufferLayersByteOffset #-}
-        vkMaxFramebufferLayersByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-
-        {-# INLINE readVkMaxFramebufferLayers #-}
-        readVkMaxFramebufferLayers p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-
-        {-# INLINE writeVkMaxFramebufferLayers #-}
-        writeVkMaxFramebufferLayers p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-
-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 CanReadField "maxFramebufferLayers" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxFramebufferLayers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxFramebufferLayers
-
-instance {-# OVERLAPPING #-}
-         HasVkFramebufferColorSampleCounts VkPhysicalDeviceLimits where
-        type VkFramebufferColorSampleCountsMType VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkFramebufferColorSampleCounts #-}
-        vkFramebufferColorSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts})
-
-        {-# INLINE vkFramebufferColorSampleCountsByteOffset #-}
-        vkFramebufferColorSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-
-        {-# INLINE readVkFramebufferColorSampleCounts #-}
-        readVkFramebufferColorSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-
-        {-# INLINE writeVkFramebufferColorSampleCounts #-}
-        writeVkFramebufferColorSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-
-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 CanReadField "framebufferColorSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkFramebufferColorSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkFramebufferColorSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkFramebufferDepthSampleCounts VkPhysicalDeviceLimits where
-        type VkFramebufferDepthSampleCountsMType VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkFramebufferDepthSampleCounts #-}
-        vkFramebufferDepthSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts})
-
-        {-# INLINE vkFramebufferDepthSampleCountsByteOffset #-}
-        vkFramebufferDepthSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-
-        {-# INLINE readVkFramebufferDepthSampleCounts #-}
-        readVkFramebufferDepthSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-
-        {-# INLINE writeVkFramebufferDepthSampleCounts #-}
-        writeVkFramebufferDepthSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-
-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 CanReadField "framebufferDepthSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkFramebufferDepthSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkFramebufferDepthSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkFramebufferStencilSampleCounts VkPhysicalDeviceLimits where
-        type VkFramebufferStencilSampleCountsMType VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkFramebufferStencilSampleCounts #-}
-        vkFramebufferStencilSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts})
-
-        {-# INLINE vkFramebufferStencilSampleCountsByteOffset #-}
-        vkFramebufferStencilSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-
-        {-# INLINE readVkFramebufferStencilSampleCounts #-}
-        readVkFramebufferStencilSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-
-        {-# INLINE writeVkFramebufferStencilSampleCounts #-}
-        writeVkFramebufferStencilSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-
-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 CanReadField "framebufferStencilSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkFramebufferStencilSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkFramebufferStencilSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkFramebufferNoAttachmentsSampleCounts VkPhysicalDeviceLimits
-         where
-        type VkFramebufferNoAttachmentsSampleCountsMType
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-
-        {-# NOINLINE vkFramebufferNoAttachmentsSampleCounts #-}
-        vkFramebufferNoAttachmentsSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts})
-
-        {-# INLINE vkFramebufferNoAttachmentsSampleCountsByteOffset #-}
-        vkFramebufferNoAttachmentsSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-
-        {-# INLINE readVkFramebufferNoAttachmentsSampleCounts #-}
-        readVkFramebufferNoAttachmentsSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-
-        {-# INLINE writeVkFramebufferNoAttachmentsSampleCounts #-}
-        writeVkFramebufferNoAttachmentsSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-
-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 CanReadField "framebufferNoAttachmentsSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkFramebufferNoAttachmentsSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkFramebufferNoAttachmentsSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxColorAttachments VkPhysicalDeviceLimits where
-        type VkMaxColorAttachmentsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxColorAttachments #-}
-        vkMaxColorAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxColorAttachments})
-
-        {-# INLINE vkMaxColorAttachmentsByteOffset #-}
-        vkMaxColorAttachmentsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-
-        {-# INLINE readVkMaxColorAttachments #-}
-        readVkMaxColorAttachments p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-
-        {-# INLINE writeVkMaxColorAttachments #-}
-        writeVkMaxColorAttachments p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-
-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 CanReadField "maxColorAttachments" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxColorAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkMaxColorAttachments
-
-instance {-# OVERLAPPING #-}
-         HasVkSampledImageColorSampleCounts VkPhysicalDeviceLimits where
-        type VkSampledImageColorSampleCountsMType VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkSampledImageColorSampleCounts #-}
-        vkSampledImageColorSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts})
-
-        {-# INLINE vkSampledImageColorSampleCountsByteOffset #-}
-        vkSampledImageColorSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-
-        {-# INLINE readVkSampledImageColorSampleCounts #-}
-        readVkSampledImageColorSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-
-        {-# INLINE writeVkSampledImageColorSampleCounts #-}
-        writeVkSampledImageColorSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-
-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 CanReadField "sampledImageColorSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSampledImageColorSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkSampledImageColorSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkSampledImageIntegerSampleCounts VkPhysicalDeviceLimits where
-        type VkSampledImageIntegerSampleCountsMType VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-
-        {-# NOINLINE vkSampledImageIntegerSampleCounts #-}
-        vkSampledImageIntegerSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts})
-
-        {-# INLINE vkSampledImageIntegerSampleCountsByteOffset #-}
-        vkSampledImageIntegerSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-
-        {-# INLINE readVkSampledImageIntegerSampleCounts #-}
-        readVkSampledImageIntegerSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-
-        {-# INLINE writeVkSampledImageIntegerSampleCounts #-}
-        writeVkSampledImageIntegerSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-
-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 CanReadField "sampledImageIntegerSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSampledImageIntegerSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkSampledImageIntegerSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkSampledImageDepthSampleCounts VkPhysicalDeviceLimits where
-        type VkSampledImageDepthSampleCountsMType VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkSampledImageDepthSampleCounts #-}
-        vkSampledImageDepthSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts})
-
-        {-# INLINE vkSampledImageDepthSampleCountsByteOffset #-}
-        vkSampledImageDepthSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-
-        {-# INLINE readVkSampledImageDepthSampleCounts #-}
-        readVkSampledImageDepthSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-
-        {-# INLINE writeVkSampledImageDepthSampleCounts #-}
-        writeVkSampledImageDepthSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-
-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 CanReadField "sampledImageDepthSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSampledImageDepthSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkSampledImageDepthSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkSampledImageStencilSampleCounts VkPhysicalDeviceLimits where
-        type VkSampledImageStencilSampleCountsMType VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-
-        {-# NOINLINE vkSampledImageStencilSampleCounts #-}
-        vkSampledImageStencilSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts})
-
-        {-# INLINE vkSampledImageStencilSampleCountsByteOffset #-}
-        vkSampledImageStencilSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-
-        {-# INLINE readVkSampledImageStencilSampleCounts #-}
-        readVkSampledImageStencilSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-
-        {-# INLINE writeVkSampledImageStencilSampleCounts #-}
-        writeVkSampledImageStencilSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-
-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 CanReadField "sampledImageStencilSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkSampledImageStencilSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkSampledImageStencilSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkStorageImageSampleCounts VkPhysicalDeviceLimits where
-        type VkStorageImageSampleCountsMType VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-
-        {-# NOINLINE vkStorageImageSampleCounts #-}
-        vkStorageImageSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, storageImageSampleCounts})
-
-        {-# INLINE vkStorageImageSampleCountsByteOffset #-}
-        vkStorageImageSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-
-        {-# INLINE readVkStorageImageSampleCounts #-}
-        readVkStorageImageSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-
-        {-# INLINE writeVkStorageImageSampleCounts #-}
-        writeVkStorageImageSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-
-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 CanReadField "storageImageSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkStorageImageSampleCounts
-
-        {-# INLINE readField #-}
-        readField = readVkStorageImageSampleCounts
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxSampleMaskWords VkPhysicalDeviceLimits where
-        type VkMaxSampleMaskWordsMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxSampleMaskWords #-}
-        vkMaxSampleMaskWords x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSampleMaskWords})
-
-        {-# INLINE vkMaxSampleMaskWordsByteOffset #-}
-        vkMaxSampleMaskWordsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-
-        {-# INLINE readVkMaxSampleMaskWords #-}
-        readVkMaxSampleMaskWords p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-
-        {-# INLINE writeVkMaxSampleMaskWords #-}
-        writeVkMaxSampleMaskWords p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-
-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 CanReadField "maxSampleMaskWords" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxSampleMaskWords
-
-        {-# INLINE readField #-}
-        readField = readVkMaxSampleMaskWords
-
-instance {-# OVERLAPPING #-}
-         HasVkTimestampComputeAndGraphics VkPhysicalDeviceLimits where
-        type VkTimestampComputeAndGraphicsMType VkPhysicalDeviceLimits =
-             VkBool32
-
-        {-# NOINLINE vkTimestampComputeAndGraphics #-}
-        vkTimestampComputeAndGraphics x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics})
-
-        {-# INLINE vkTimestampComputeAndGraphicsByteOffset #-}
-        vkTimestampComputeAndGraphicsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-
-        {-# INLINE readVkTimestampComputeAndGraphics #-}
-        readVkTimestampComputeAndGraphics p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-
-        {-# INLINE writeVkTimestampComputeAndGraphics #-}
-        writeVkTimestampComputeAndGraphics p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-
-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 CanReadField "timestampComputeAndGraphics"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkTimestampComputeAndGraphics
-
-        {-# INLINE readField #-}
-        readField = readVkTimestampComputeAndGraphics
-
-instance {-# OVERLAPPING #-}
-         HasVkTimestampPeriod VkPhysicalDeviceLimits where
-        type VkTimestampPeriodMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkTimestampPeriod #-}
-        vkTimestampPeriod x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, timestampPeriod})
-
-        {-# INLINE vkTimestampPeriodByteOffset #-}
-        vkTimestampPeriodByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, timestampPeriod}
-
-        {-# INLINE readVkTimestampPeriod #-}
-        readVkTimestampPeriod p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, timestampPeriod}
-
-        {-# INLINE writeVkTimestampPeriod #-}
-        writeVkTimestampPeriod p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, timestampPeriod}
-
-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 CanReadField "timestampPeriod" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkTimestampPeriod
-
-        {-# INLINE readField #-}
-        readField = readVkTimestampPeriod
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxClipDistances VkPhysicalDeviceLimits where
-        type VkMaxClipDistancesMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxClipDistances #-}
-        vkMaxClipDistances x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxClipDistances})
-
-        {-# INLINE vkMaxClipDistancesByteOffset #-}
-        vkMaxClipDistancesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxClipDistances}
-
-        {-# INLINE readVkMaxClipDistances #-}
-        readVkMaxClipDistances p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxClipDistances}
-
-        {-# INLINE writeVkMaxClipDistances #-}
-        writeVkMaxClipDistances p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxClipDistances}
-
-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 CanReadField "maxClipDistances" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxClipDistances
-
-        {-# INLINE readField #-}
-        readField = readVkMaxClipDistances
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxCullDistances VkPhysicalDeviceLimits where
-        type VkMaxCullDistancesMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkMaxCullDistances #-}
-        vkMaxCullDistances x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxCullDistances})
-
-        {-# INLINE vkMaxCullDistancesByteOffset #-}
-        vkMaxCullDistancesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxCullDistances}
-
-        {-# INLINE readVkMaxCullDistances #-}
-        readVkMaxCullDistances p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxCullDistances}
-
-        {-# INLINE writeVkMaxCullDistances #-}
-        writeVkMaxCullDistances p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxCullDistances}
-
-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 CanReadField "maxCullDistances" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxCullDistances
-
-        {-# INLINE readField #-}
-        readField = readVkMaxCullDistances
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxCombinedClipAndCullDistances VkPhysicalDeviceLimits where
-        type VkMaxCombinedClipAndCullDistancesMType VkPhysicalDeviceLimits
-             = Word32
-
-        {-# NOINLINE vkMaxCombinedClipAndCullDistances #-}
-        vkMaxCombinedClipAndCullDistances x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances})
-
-        {-# INLINE vkMaxCombinedClipAndCullDistancesByteOffset #-}
-        vkMaxCombinedClipAndCullDistancesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-
-        {-# INLINE readVkMaxCombinedClipAndCullDistances #-}
-        readVkMaxCombinedClipAndCullDistances p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-
-        {-# INLINE writeVkMaxCombinedClipAndCullDistances #-}
-        writeVkMaxCombinedClipAndCullDistances p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-
-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 CanReadField "maxCombinedClipAndCullDistances"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxCombinedClipAndCullDistances
-
-        {-# INLINE readField #-}
-        readField = readVkMaxCombinedClipAndCullDistances
-
-instance {-# OVERLAPPING #-}
-         HasVkDiscreteQueuePriorities VkPhysicalDeviceLimits where
-        type VkDiscreteQueuePrioritiesMType VkPhysicalDeviceLimits = Word32
-
-        {-# NOINLINE vkDiscreteQueuePriorities #-}
-        vkDiscreteQueuePriorities x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, discreteQueuePriorities})
-
-        {-# INLINE vkDiscreteQueuePrioritiesByteOffset #-}
-        vkDiscreteQueuePrioritiesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-
-        {-# INLINE readVkDiscreteQueuePriorities #-}
-        readVkDiscreteQueuePriorities p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-
-        {-# INLINE writeVkDiscreteQueuePriorities #-}
-        writeVkDiscreteQueuePriorities p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-
-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 CanReadField "discreteQueuePriorities"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkDiscreteQueuePriorities
-
-        {-# INLINE readField #-}
-        readField = readVkDiscreteQueuePriorities
-
-instance {-# OVERLAPPING #-}
-         HasVkPointSizeRangeArray VkPhysicalDeviceLimits where
-        type VkPointSizeRangeArrayMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkPointSizeRangeArray #-}
-        vkPointSizeRangeArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkPhysicalDeviceLimits, pointSizeRange}))
-
-        {-# INLINE vkPointSizeRangeArrayByteOffset #-}
-        vkPointSizeRangeArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, pointSizeRange}
-
-        {-# INLINE readVkPointSizeRangeArray #-}
-        readVkPointSizeRangeArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceLimits, pointSizeRange})
-
-        {-# INLINE writeVkPointSizeRangeArray #-}
-        writeVkPointSizeRangeArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceLimits, pointSizeRange})
-
-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 (KnownNat idx,
-          IndexInBounds "pointSizeRange" idx VkPhysicalDeviceLimits) =>
-         CanReadFieldArray "pointSizeRange" idx VkPhysicalDeviceLimits
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "pointSizeRange" 0 VkPhysicalDeviceLimits #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "pointSizeRange" 1 VkPhysicalDeviceLimits #-}
-        type FieldArrayLength "pointSizeRange" VkPhysicalDeviceLimits = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkPointSizeRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkPointSizeRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkLineWidthRangeArray VkPhysicalDeviceLimits where
-        type VkLineWidthRangeArrayMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkLineWidthRangeArray #-}
-        vkLineWidthRangeArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkPhysicalDeviceLimits, lineWidthRange}))
-
-        {-# INLINE vkLineWidthRangeArrayByteOffset #-}
-        vkLineWidthRangeArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, lineWidthRange}
-
-        {-# INLINE readVkLineWidthRangeArray #-}
-        readVkLineWidthRangeArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceLimits, lineWidthRange})
-
-        {-# INLINE writeVkLineWidthRangeArray #-}
-        writeVkLineWidthRangeArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceLimits, lineWidthRange})
-
-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 (KnownNat idx,
-          IndexInBounds "lineWidthRange" idx VkPhysicalDeviceLimits) =>
-         CanReadFieldArray "lineWidthRange" idx VkPhysicalDeviceLimits
-         where
-        {-# SPECIALISE instance
-                       CanReadFieldArray "lineWidthRange" 0 VkPhysicalDeviceLimits #-}
-
-        {-# SPECIALISE instance
-                       CanReadFieldArray "lineWidthRange" 1 VkPhysicalDeviceLimits #-}
-        type FieldArrayLength "lineWidthRange" VkPhysicalDeviceLimits = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkLineWidthRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-        {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkLineWidthRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkPointSizeGranularity VkPhysicalDeviceLimits where
-        type VkPointSizeGranularityMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkPointSizeGranularity #-}
-        vkPointSizeGranularity x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, pointSizeGranularity})
-
-        {-# INLINE vkPointSizeGranularityByteOffset #-}
-        vkPointSizeGranularityByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-
-        {-# INLINE readVkPointSizeGranularity #-}
-        readVkPointSizeGranularity p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-
-        {-# INLINE writeVkPointSizeGranularity #-}
-        writeVkPointSizeGranularity p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-
-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 CanReadField "pointSizeGranularity" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkPointSizeGranularity
-
-        {-# INLINE readField #-}
-        readField = readVkPointSizeGranularity
-
-instance {-# OVERLAPPING #-}
-         HasVkLineWidthGranularity VkPhysicalDeviceLimits where
-        type VkLineWidthGranularityMType VkPhysicalDeviceLimits =
-             #{type float}
-
-        {-# NOINLINE vkLineWidthGranularity #-}
-        vkLineWidthGranularity x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, lineWidthGranularity})
-
-        {-# INLINE vkLineWidthGranularityByteOffset #-}
-        vkLineWidthGranularityByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-
-        {-# INLINE readVkLineWidthGranularity #-}
-        readVkLineWidthGranularity p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-
-        {-# INLINE writeVkLineWidthGranularity #-}
-        writeVkLineWidthGranularity p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-
-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 CanReadField "lineWidthGranularity" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkLineWidthGranularity
-
-        {-# INLINE readField #-}
-        readField = readVkLineWidthGranularity
-
-instance {-# OVERLAPPING #-}
-         HasVkStrictLines VkPhysicalDeviceLimits where
-        type VkStrictLinesMType VkPhysicalDeviceLimits = VkBool32
-
-        {-# NOINLINE vkStrictLines #-}
-        vkStrictLines x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, strictLines})
-
-        {-# INLINE vkStrictLinesByteOffset #-}
-        vkStrictLinesByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, strictLines}
-
-        {-# INLINE readVkStrictLines #-}
-        readVkStrictLines p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, strictLines}
-
-        {-# INLINE writeVkStrictLines #-}
-        writeVkStrictLines p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, strictLines}
-
-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 CanReadField "strictLines" VkPhysicalDeviceLimits where
-        {-# INLINE getField #-}
-        getField = vkStrictLines
-
-        {-# INLINE readField #-}
-        readField = readVkStrictLines
-
-instance {-# OVERLAPPING #-}
-         HasVkStandardSampleLocations VkPhysicalDeviceLimits where
-        type VkStandardSampleLocationsMType VkPhysicalDeviceLimits =
-             VkBool32
-
-        {-# NOINLINE vkStandardSampleLocations #-}
-        vkStandardSampleLocations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, standardSampleLocations})
-
-        {-# INLINE vkStandardSampleLocationsByteOffset #-}
-        vkStandardSampleLocationsByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-
-        {-# INLINE readVkStandardSampleLocations #-}
-        readVkStandardSampleLocations p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-
-        {-# INLINE writeVkStandardSampleLocations #-}
-        writeVkStandardSampleLocations p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-
-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 CanReadField "standardSampleLocations"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkStandardSampleLocations
-
-        {-# INLINE readField #-}
-        readField = readVkStandardSampleLocations
-
-instance {-# OVERLAPPING #-}
-         HasVkOptimalBufferCopyOffsetAlignment VkPhysicalDeviceLimits where
-        type VkOptimalBufferCopyOffsetAlignmentMType VkPhysicalDeviceLimits
-             = VkDeviceSize
-
-        {-# NOINLINE vkOptimalBufferCopyOffsetAlignment #-}
-        vkOptimalBufferCopyOffsetAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment})
-
-        {-# INLINE vkOptimalBufferCopyOffsetAlignmentByteOffset #-}
-        vkOptimalBufferCopyOffsetAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-
-        {-# INLINE readVkOptimalBufferCopyOffsetAlignment #-}
-        readVkOptimalBufferCopyOffsetAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-
-        {-# INLINE writeVkOptimalBufferCopyOffsetAlignment #-}
-        writeVkOptimalBufferCopyOffsetAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-
-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 CanReadField "optimalBufferCopyOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkOptimalBufferCopyOffsetAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkOptimalBufferCopyOffsetAlignment
-
-instance {-# OVERLAPPING #-}
-         HasVkOptimalBufferCopyRowPitchAlignment VkPhysicalDeviceLimits
-         where
-        type VkOptimalBufferCopyRowPitchAlignmentMType
-               VkPhysicalDeviceLimits
-             = VkDeviceSize
-
-        {-# NOINLINE vkOptimalBufferCopyRowPitchAlignment #-}
-        vkOptimalBufferCopyRowPitchAlignment x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment})
-
-        {-# INLINE vkOptimalBufferCopyRowPitchAlignmentByteOffset #-}
-        vkOptimalBufferCopyRowPitchAlignmentByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-
-        {-# INLINE readVkOptimalBufferCopyRowPitchAlignment #-}
-        readVkOptimalBufferCopyRowPitchAlignment p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-
-        {-# INLINE writeVkOptimalBufferCopyRowPitchAlignment #-}
-        writeVkOptimalBufferCopyRowPitchAlignment p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-
-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 CanReadField "optimalBufferCopyRowPitchAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkOptimalBufferCopyRowPitchAlignment
-
-        {-# INLINE readField #-}
-        readField = readVkOptimalBufferCopyRowPitchAlignment
-
-instance {-# OVERLAPPING #-}
-         HasVkNonCoherentAtomSize VkPhysicalDeviceLimits where
-        type VkNonCoherentAtomSizeMType VkPhysicalDeviceLimits =
-             VkDeviceSize
-
-        {-# NOINLINE vkNonCoherentAtomSize #-}
-        vkNonCoherentAtomSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize})
-
-        {-# INLINE vkNonCoherentAtomSizeByteOffset #-}
-        vkNonCoherentAtomSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-
-        {-# INLINE readVkNonCoherentAtomSize #-}
-        readVkNonCoherentAtomSize p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-
-        {-# INLINE writeVkNonCoherentAtomSize #-}
-        writeVkNonCoherentAtomSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-
-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 CanReadField "nonCoherentAtomSize" VkPhysicalDeviceLimits
-         where
-        {-# INLINE getField #-}
-        getField = vkNonCoherentAtomSize
-
-        {-# INLINE readField #-}
-        readField = readVkNonCoherentAtomSize
-
-instance Show VkPhysicalDeviceLimits where
-        showsPrec d x
-          = showString "VkPhysicalDeviceLimits {" .
-              showString "vkMaxImageDimension1D = " .
-                showsPrec d (vkMaxImageDimension1D x) .
-                  showString ", " .
-                    showString "vkMaxImageDimension2D = " .
-                      showsPrec d (vkMaxImageDimension2D x) .
-                        showString ", " .
-                          showString "vkMaxImageDimension3D = " .
-                            showsPrec d (vkMaxImageDimension3D x) .
-                              showString ", " .
-                                showString "vkMaxImageDimensionCube = " .
-                                  showsPrec d (vkMaxImageDimensionCube x) .
-                                    showString ", " .
-                                      showString "vkMaxImageArrayLayers = " .
-                                        showsPrec d (vkMaxImageArrayLayers x) .
-                                          showString ", " .
-                                            showString "vkMaxTexelBufferElements = " .
-                                              showsPrec d (vkMaxTexelBufferElements x) .
-                                                showString ", " .
-                                                  showString "vkMaxUniformBufferRange = " .
-                                                    showsPrec d (vkMaxUniformBufferRange x) .
-                                                      showString ", " .
-                                                        showString "vkMaxStorageBufferRange = " .
-                                                          showsPrec d (vkMaxStorageBufferRange x) .
-                                                            showString ", " .
-                                                              showString "vkMaxPushConstantsSize = "
-                                                                .
-                                                                showsPrec d
-                                                                  (vkMaxPushConstantsSize x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "vkMaxMemoryAllocationCount = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (vkMaxMemoryAllocationCount
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "vkMaxSamplerAllocationCount = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (vkMaxSamplerAllocationCount
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "vkBufferImageGranularity = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (vkBufferImageGranularity
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "vkSparseAddressSpaceSize = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (vkSparseAddressSpaceSize
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "vkMaxBoundDescriptorSets = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (vkMaxBoundDescriptorSets
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "vkMaxPerStageDescriptorSamplers = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (vkMaxPerStageDescriptorSamplers
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "vkMaxPerStageDescriptorUniformBuffers = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (vkMaxPerStageDescriptorUniformBuffers
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "vkMaxPerStageDescriptorStorageBuffers = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (vkMaxPerStageDescriptorStorageBuffers
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "vkMaxPerStageDescriptorSampledImages = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (vkMaxPerStageDescriptorSampledImages
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "vkMaxPerStageDescriptorStorageImages = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (vkMaxPerStageDescriptorStorageImages
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showString
-                                                                                                                                ", "
-                                                                                                                                .
-                                                                                                                                showString
-                                                                                                                                  "vkMaxPerStageDescriptorInputAttachments = "
-                                                                                                                                  .
-                                                                                                                                  showsPrec
-                                                                                                                                    d
-                                                                                                                                    (vkMaxPerStageDescriptorInputAttachments
-                                                                                                                                       x)
-                                                                                                                                    .
-                                                                                                                                    showString
-                                                                                                                                      ", "
-                                                                                                                                      .
-                                                                                                                                      showString
-                                                                                                                                        "vkMaxPerStageResources = "
-                                                                                                                                        .
-                                                                                                                                        showsPrec
-                                                                                                                                          d
-                                                                                                                                          (vkMaxPerStageResources
-                                                                                                                                             x)
-                                                                                                                                          .
-                                                                                                                                          showString
-                                                                                                                                            ", "
-                                                                                                                                            .
-                                                                                                                                            showString
-                                                                                                                                              "vkMaxDescriptorSetSamplers = "
-                                                                                                                                              .
-                                                                                                                                              showsPrec
-                                                                                                                                                d
-                                                                                                                                                (vkMaxDescriptorSetSamplers
-                                                                                                                                                   x)
-                                                                                                                                                .
-                                                                                                                                                showString
-                                                                                                                                                  ", "
-                                                                                                                                                  .
-                                                                                                                                                  showString
-                                                                                                                                                    "vkMaxDescriptorSetUniformBuffers = "
-                                                                                                                                                    .
-                                                                                                                                                    showsPrec
-                                                                                                                                                      d
-                                                                                                                                                      (vkMaxDescriptorSetUniformBuffers
-                                                                                                                                                         x)
-                                                                                                                                                      .
-                                                                                                                                                      showString
-                                                                                                                                                        ", "
-                                                                                                                                                        .
-                                                                                                                                                        showString
-                                                                                                                                                          "vkMaxDescriptorSetUniformBuffersDynamic = "
-                                                                                                                                                          .
-                                                                                                                                                          showsPrec
-                                                                                                                                                            d
-                                                                                                                                                            (vkMaxDescriptorSetUniformBuffersDynamic
-                                                                                                                                                               x)
-                                                                                                                                                            .
-                                                                                                                                                            showString
-                                                                                                                                                              ", "
-                                                                                                                                                              .
-                                                                                                                                                              showString
-                                                                                                                                                                "vkMaxDescriptorSetStorageBuffers = "
-                                                                                                                                                                .
-                                                                                                                                                                showsPrec
-                                                                                                                                                                  d
-                                                                                                                                                                  (vkMaxDescriptorSetStorageBuffers
-                                                                                                                                                                     x)
-                                                                                                                                                                  .
-                                                                                                                                                                  showString
-                                                                                                                                                                    ", "
-                                                                                                                                                                    .
-                                                                                                                                                                    showString
-                                                                                                                                                                      "vkMaxDescriptorSetStorageBuffersDynamic = "
-                                                                                                                                                                      .
-                                                                                                                                                                      showsPrec
-                                                                                                                                                                        d
-                                                                                                                                                                        (vkMaxDescriptorSetStorageBuffersDynamic
-                                                                                                                                                                           x)
-                                                                                                                                                                        .
-                                                                                                                                                                        showString
-                                                                                                                                                                          ", "
-                                                                                                                                                                          .
-                                                                                                                                                                          showString
-                                                                                                                                                                            "vkMaxDescriptorSetSampledImages = "
-                                                                                                                                                                            .
-                                                                                                                                                                            showsPrec
-                                                                                                                                                                              d
-                                                                                                                                                                              (vkMaxDescriptorSetSampledImages
-                                                                                                                                                                                 x)
-                                                                                                                                                                              .
-                                                                                                                                                                              showString
-                                                                                                                                                                                ", "
-                                                                                                                                                                                .
-                                                                                                                                                                                showString
-                                                                                                                                                                                  "vkMaxDescriptorSetStorageImages = "
-                                                                                                                                                                                  .
-                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                    d
-                                                                                                                                                                                    (vkMaxDescriptorSetStorageImages
-                                                                                                                                                                                       x)
-                                                                                                                                                                                    .
-                                                                                                                                                                                    showString
-                                                                                                                                                                                      ", "
-                                                                                                                                                                                      .
-                                                                                                                                                                                      showString
-                                                                                                                                                                                        "vkMaxDescriptorSetInputAttachments = "
-                                                                                                                                                                                        .
-                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                          d
-                                                                                                                                                                                          (vkMaxDescriptorSetInputAttachments
-                                                                                                                                                                                             x)
-                                                                                                                                                                                          .
-                                                                                                                                                                                          showString
-                                                                                                                                                                                            ", "
-                                                                                                                                                                                            .
-                                                                                                                                                                                            showString
-                                                                                                                                                                                              "vkMaxVertexInputAttributes = "
-                                                                                                                                                                                              .
-                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                d
-                                                                                                                                                                                                (vkMaxVertexInputAttributes
-                                                                                                                                                                                                   x)
-                                                                                                                                                                                                .
-                                                                                                                                                                                                showString
-                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                  .
-                                                                                                                                                                                                  showString
-                                                                                                                                                                                                    "vkMaxVertexInputBindings = "
-                                                                                                                                                                                                    .
-                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                      d
-                                                                                                                                                                                                      (vkMaxVertexInputBindings
-                                                                                                                                                                                                         x)
-                                                                                                                                                                                                      .
-                                                                                                                                                                                                      showString
-                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                        .
-                                                                                                                                                                                                        showString
-                                                                                                                                                                                                          "vkMaxVertexInputAttributeOffset = "
-                                                                                                                                                                                                          .
-                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                            d
-                                                                                                                                                                                                            (vkMaxVertexInputAttributeOffset
-                                                                                                                                                                                                               x)
-                                                                                                                                                                                                            .
-                                                                                                                                                                                                            showString
-                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                              .
-                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                "vkMaxVertexInputBindingStride = "
-                                                                                                                                                                                                                .
-                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                  (vkMaxVertexInputBindingStride
-                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                      "vkMaxVertexOutputComponents = "
-                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                        (vkMaxVertexOutputComponents
-                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                            "vkMaxTessellationGenerationLevel = "
-                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                              (vkMaxTessellationGenerationLevel
-                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                  "vkMaxTessellationPatchSize = "
-                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                    (vkMaxTessellationPatchSize
-                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                        "vkMaxTessellationControlPerVertexInputComponents = "
-                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                          (vkMaxTessellationControlPerVertexInputComponents
-                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                              "vkMaxTessellationControlPerVertexOutputComponents = "
-                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                (vkMaxTessellationControlPerVertexOutputComponents
-                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                    "vkMaxTessellationControlPerPatchOutputComponents = "
-                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                      (vkMaxTessellationControlPerPatchOutputComponents
-                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                          "vkMaxTessellationControlTotalOutputComponents = "
-                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                            (vkMaxTessellationControlTotalOutputComponents
-                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                "vkMaxTessellationEvaluationInputComponents = "
-                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                  (vkMaxTessellationEvaluationInputComponents
-                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                      "vkMaxTessellationEvaluationOutputComponents = "
-                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                        (vkMaxTessellationEvaluationOutputComponents
-                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                            "vkMaxGeometryShaderInvocations = "
-                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                              (vkMaxGeometryShaderInvocations
-                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                  "vkMaxGeometryInputComponents = "
-                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                    (vkMaxGeometryInputComponents
-                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                        "vkMaxGeometryOutputComponents = "
-                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                          (vkMaxGeometryOutputComponents
-                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                              "vkMaxGeometryOutputVertices = "
-                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                (vkMaxGeometryOutputVertices
-                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                    "vkMaxGeometryTotalOutputComponents = "
-                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                      (vkMaxGeometryTotalOutputComponents
-                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                          "vkMaxFragmentInputComponents = "
-                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                            (vkMaxFragmentInputComponents
-                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                "vkMaxFragmentOutputAttachments = "
-                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                  (vkMaxFragmentOutputAttachments
-                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                      "vkMaxFragmentDualSrcAttachments = "
-                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                        (vkMaxFragmentDualSrcAttachments
-                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                            "vkMaxFragmentCombinedOutputResources = "
-                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                              (vkMaxFragmentCombinedOutputResources
-                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                  "vkMaxComputeSharedMemorySize = "
-                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                    (vkMaxComputeSharedMemorySize
-                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                        "vkMaxComputeWorkGroupCountArray = ["
-                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                          (map
-                                                                                                                                                                                                                                                                                                                                             (vkMaxComputeWorkGroupCountArray
-                                                                                                                                                                                                                                                                                                                                                x)
-                                                                                                                                                                                                                                                                                                                                             [1
-                                                                                                                                                                                                                                                                                                                                              ..
-                                                                                                                                                                                                                                                                                                                                              3])
-                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                          showChar
-                                                                                                                                                                                                                                                                                                                                            ']'
-                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                "vkMaxComputeWorkGroupInvocations = "
-                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                  (vkMaxComputeWorkGroupInvocations
-                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                      "vkMaxComputeWorkGroupSizeArray = ["
-                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                        (map
-                                                                                                                                                                                                                                                                                                                                                           (vkMaxComputeWorkGroupSizeArray
-                                                                                                                                                                                                                                                                                                                                                              x)
-                                                                                                                                                                                                                                                                                                                                                           [1
-                                                                                                                                                                                                                                                                                                                                                            ..
-                                                                                                                                                                                                                                                                                                                                                            3])
-                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                        showChar
-                                                                                                                                                                                                                                                                                                                                                          ']'
-                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                              "vkSubPixelPrecisionBits = "
-                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                (vkSubPixelPrecisionBits
-                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                    "vkSubTexelPrecisionBits = "
-                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                      (vkSubTexelPrecisionBits
-                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                          "vkMipmapPrecisionBits = "
-                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                            (vkMipmapPrecisionBits
-                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                "vkMaxDrawIndexedIndexValue = "
-                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                  (vkMaxDrawIndexedIndexValue
-                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                      "vkMaxDrawIndirectCount = "
-                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                        (vkMaxDrawIndirectCount
-                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                            "vkMaxSamplerLodBias = "
-                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                              (vkMaxSamplerLodBias
-                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                  "vkMaxSamplerAnisotropy = "
-                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                    (vkMaxSamplerAnisotropy
-                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                        "vkMaxViewports = "
-                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                          (vkMaxViewports
-                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                              "vkMaxViewportDimensionsArray = ["
-                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                (map
-                                                                                                                                                                                                                                                                                                                                                                                                                   (vkMaxViewportDimensionsArray
-                                                                                                                                                                                                                                                                                                                                                                                                                      x)
-                                                                                                                                                                                                                                                                                                                                                                                                                   [1
-                                                                                                                                                                                                                                                                                                                                                                                                                    ..
-                                                                                                                                                                                                                                                                                                                                                                                                                    2])
-                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                  ']'
-                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                      "vkViewportBoundsRangeArray = ["
-                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                        (map
-                                                                                                                                                                                                                                                                                                                                                                                                                           (vkViewportBoundsRangeArray
-                                                                                                                                                                                                                                                                                                                                                                                                                              x)
-                                                                                                                                                                                                                                                                                                                                                                                                                           [1
-                                                                                                                                                                                                                                                                                                                                                                                                                            ..
-                                                                                                                                                                                                                                                                                                                                                                                                                            2])
-                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                        showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                          ']'
-                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                              "vkViewportSubPixelBits = "
-                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                (vkViewportSubPixelBits
-                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                    "vkMinMemoryMapAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                      (vkMinMemoryMapAlignment
-                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                          "vkMinTexelBufferOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                            (vkMinTexelBufferOffsetAlignment
-                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                "vkMinUniformBufferOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  (vkMinUniformBufferOffsetAlignment
-                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      "vkMinStorageBufferOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        (vkMinStorageBufferOffsetAlignment
-                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            "vkMinTexelOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              (vkMinTexelOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "vkMaxTexelOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (vkMaxTexelOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "vkMinTexelGatherOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (vkMinTexelGatherOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "vkMaxTexelGatherOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (vkMaxTexelGatherOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "vkMinInterpolationOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (vkMinInterpolationOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "vkMaxInterpolationOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (vkMaxInterpolationOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "vkSubPixelInterpolationOffsetBits = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (vkSubPixelInterpolationOffsetBits
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "vkMaxFramebufferWidth = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (vkMaxFramebufferWidth
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "vkMaxFramebufferHeight = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (vkMaxFramebufferHeight
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "vkMaxFramebufferLayers = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (vkMaxFramebufferLayers
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "vkFramebufferColorSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (vkFramebufferColorSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "vkFramebufferDepthSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (vkFramebufferDepthSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "vkFramebufferStencilSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (vkFramebufferStencilSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "vkFramebufferNoAttachmentsSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (vkFramebufferNoAttachmentsSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "vkMaxColorAttachments = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (vkMaxColorAttachments
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "vkSampledImageColorSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (vkSampledImageColorSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "vkSampledImageIntegerSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (vkSampledImageIntegerSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "vkSampledImageDepthSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (vkSampledImageDepthSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "vkSampledImageStencilSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (vkSampledImageStencilSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "vkStorageImageSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (vkStorageImageSampleCounts
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "vkMaxSampleMaskWords = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (vkMaxSampleMaskWords
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "vkTimestampComputeAndGraphics = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (vkTimestampComputeAndGraphics
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "vkTimestampPeriod = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (vkTimestampPeriod
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "vkMaxClipDistances = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (vkMaxClipDistances
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "vkMaxCullDistances = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (vkMaxCullDistances
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "vkMaxCombinedClipAndCullDistances = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (vkMaxCombinedClipAndCullDistances
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "vkDiscreteQueuePriorities = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (vkDiscreteQueuePriorities
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "vkPointSizeRangeArray = ["
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (vkPointSizeRangeArray
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   [1
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ..
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    2])
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ']'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "vkLineWidthRangeArray = ["
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (vkLineWidthRangeArray
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           [1
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ..
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2])
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ']'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "vkPointSizeGranularity = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (vkPointSizeGranularity
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "vkLineWidthGranularity = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (vkLineWidthGranularity
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "vkStrictLines = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (vkStrictLines
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "vkStandardSampleLocations = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (vkStandardSampleLocations
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "vkOptimalBufferCopyOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (vkOptimalBufferCopyOffsetAlignment
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "vkOptimalBufferCopyRowPitchAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (vkOptimalBufferCopyRowPitchAlignment
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "vkNonCoherentAtomSize = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (vkNonCoherentAtomSize
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      '}'
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE UndecidableInstances  #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
+       (VkPhysicalDeviceLimits(..)) where
+import           Foreign.Storable                              (Storable (..))
+import           GHC.Prim
+import           GHC.TypeLits                                  (KnownNat,
+                                                                natVal') -- ' closing tick for hsc2hs
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes               (VkBool32,
+                                                                VkDeviceSize)
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags (VkSampleCountFlags)
+import           System.IO.Unsafe                              (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceLimits.html VkPhysicalDeviceLimits registry at www.khronos.org>
+data VkPhysicalDeviceLimits = VkPhysicalDeviceLimits## Addr##
+                                                      ByteArray##
+
+instance Eq VkPhysicalDeviceLimits where
+        (VkPhysicalDeviceLimits## a _) == x@(VkPhysicalDeviceLimits## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceLimits where
+        (VkPhysicalDeviceLimits## a _) `compare`
+          x@(VkPhysicalDeviceLimits## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceLimits where
+        unsafeAddr (VkPhysicalDeviceLimits## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceLimits## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceLimits## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "maxComputeWorkGroupCount" idx
+            VkPhysicalDeviceLimits) =>
+         CanReadFieldArray "maxComputeWorkGroupCount" idx
+           VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxComputeWorkGroupCount" 0
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxComputeWorkGroupCount" 1
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxComputeWorkGroupCount" 2
+                         VkPhysicalDeviceLimits
+                       #-}
+        type FieldArrayLength "maxComputeWorkGroupCount"
+               VkPhysicalDeviceLimits
+             = 3
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 3
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
+                      +
+                      sizeOf (undefined :: Word32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "maxComputeWorkGroupCount" idx
+            VkPhysicalDeviceLimits) =>
+         CanWriteFieldArray "maxComputeWorkGroupCount" idx
+           VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxComputeWorkGroupCount" 0
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxComputeWorkGroupCount" 1
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxComputeWorkGroupCount" 2
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "maxComputeWorkGroupSize" idx
+            VkPhysicalDeviceLimits) =>
+         CanReadFieldArray "maxComputeWorkGroupSize" idx
+           VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxComputeWorkGroupSize" 0
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxComputeWorkGroupSize" 1
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxComputeWorkGroupSize" 2
+                         VkPhysicalDeviceLimits
+                       #-}
+        type FieldArrayLength "maxComputeWorkGroupSize"
+               VkPhysicalDeviceLimits
+             = 3
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 3
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
+                      +
+                      sizeOf (undefined :: Word32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "maxComputeWorkGroupSize" idx
+            VkPhysicalDeviceLimits) =>
+         CanWriteFieldArray "maxComputeWorkGroupSize" idx
+           VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxComputeWorkGroupSize" 0
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxComputeWorkGroupSize" 1
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxComputeWorkGroupSize" 2
+                         VkPhysicalDeviceLimits
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "maxViewportDimensions" idx
+            VkPhysicalDeviceLimits) =>
+         CanReadFieldArray "maxViewportDimensions" idx
+           VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxViewportDimensions" 0 VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "maxViewportDimensions" 1 VkPhysicalDeviceLimits
+                       #-}
+        type FieldArrayLength "maxViewportDimensions"
+               VkPhysicalDeviceLimits
+             = 2
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 2
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceLimits, maxViewportDimensions}
+                      +
+                      sizeOf (undefined :: Word32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceLimits, maxViewportDimensions}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "maxViewportDimensions" idx
+            VkPhysicalDeviceLimits) =>
+         CanWriteFieldArray "maxViewportDimensions" idx
+           VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxViewportDimensions" 0 VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "maxViewportDimensions" 1 VkPhysicalDeviceLimits
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceLimits, maxViewportDimensions}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "viewportBoundsRange" idx VkPhysicalDeviceLimits) =>
+         CanReadFieldArray "viewportBoundsRange" idx VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "viewportBoundsRange" 0 VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "viewportBoundsRange" 1 VkPhysicalDeviceLimits
+                       #-}
+        type FieldArrayLength "viewportBoundsRange" VkPhysicalDeviceLimits
+             = 2
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 2
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceLimits, viewportBoundsRange}
+                      +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceLimits, viewportBoundsRange}
+                 +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "viewportBoundsRange" idx VkPhysicalDeviceLimits) =>
+         CanWriteFieldArray "viewportBoundsRange" idx VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "viewportBoundsRange" 0 VkPhysicalDeviceLimits
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "viewportBoundsRange" 1 VkPhysicalDeviceLimits
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceLimits, viewportBoundsRange}
+                 +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "pointSizeRange" idx VkPhysicalDeviceLimits) =>
+         CanReadFieldArray "pointSizeRange" idx VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "pointSizeRange" 0 VkPhysicalDeviceLimits #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "pointSizeRange" 1 VkPhysicalDeviceLimits #-}
+        type FieldArrayLength "pointSizeRange" VkPhysicalDeviceLimits = 2
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 2
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceLimits, pointSizeRange} +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceLimits, pointSizeRange} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "pointSizeRange" idx VkPhysicalDeviceLimits) =>
+         CanWriteFieldArray "pointSizeRange" idx VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "pointSizeRange" 0 VkPhysicalDeviceLimits #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "pointSizeRange" 1 VkPhysicalDeviceLimits #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceLimits, pointSizeRange} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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 #-}
+         (KnownNat idx,
+          IndexInBounds "lineWidthRange" idx VkPhysicalDeviceLimits) =>
+         CanReadFieldArray "lineWidthRange" idx VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanReadFieldArray "lineWidthRange" 0 VkPhysicalDeviceLimits #-}
+
+        {-# SPECIALISE instance
+                       CanReadFieldArray "lineWidthRange" 1 VkPhysicalDeviceLimits #-}
+        type FieldArrayLength "lineWidthRange" VkPhysicalDeviceLimits = 2
+
+        {-# INLINE fieldArrayLength #-}
+        fieldArrayLength = 2
+
+        {-# INLINE getFieldArray #-}
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceLimits, lineWidthRange} +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+
+        {-# INLINE readFieldArray #-}
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceLimits, lineWidthRange} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "lineWidthRange" idx VkPhysicalDeviceLimits) =>
+         CanWriteFieldArray "lineWidthRange" idx VkPhysicalDeviceLimits
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "lineWidthRange" 0 VkPhysicalDeviceLimits #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "lineWidthRange" 1 VkPhysicalDeviceLimits #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceLimits, lineWidthRange} +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
+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
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMaintenance3Properties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMaintenance3Properties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMaintenance3Properties.hsc
@@ -0,0 +1,261 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3Properties
+       (VkPhysicalDeviceMaintenance3Properties(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                          (VkDeviceSize)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceMaintenance3Properties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         maxPerSetDescriptors;
+--   >     VkDeviceSize                     maxMemoryAllocationSize;
+--   > } VkPhysicalDeviceMaintenance3Properties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceMaintenance3Properties.html VkPhysicalDeviceMaintenance3Properties registry at www.khronos.org>
+data VkPhysicalDeviceMaintenance3Properties = VkPhysicalDeviceMaintenance3Properties## Addr##
+                                                                                      ByteArray##
+
+instance Eq VkPhysicalDeviceMaintenance3Properties where
+        (VkPhysicalDeviceMaintenance3Properties## a _) ==
+          x@(VkPhysicalDeviceMaintenance3Properties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceMaintenance3Properties where
+        (VkPhysicalDeviceMaintenance3Properties## a _) `compare`
+          x@(VkPhysicalDeviceMaintenance3Properties## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceMaintenance3Properties
+         where
+        unsafeAddr (VkPhysicalDeviceMaintenance3Properties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceMaintenance3Properties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceMaintenance3Properties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMaintenance3PropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMaintenance3PropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMaintenance3PropertiesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3PropertiesKHR
+       (VkPhysicalDeviceMaintenance3Properties(..),
+        VkPhysicalDeviceMaintenance3PropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3Properties
+                                                                                      (VkPhysicalDeviceMaintenance3Properties (..))
+
+-- | Alias for `VkPhysicalDeviceMaintenance3Properties`
+type VkPhysicalDeviceMaintenance3PropertiesKHR =
+     VkPhysicalDeviceMaintenance3Properties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties.hsc
@@ -8,6 +8,7 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties
@@ -22,7 +23,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkMemoryHeap (VkMemoryHeap)
 import           Graphics.Vulkan.Types.Struct.VkMemoryType (VkMemoryType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceMemoryProperties {
@@ -32,7 +32,7 @@
 --   >     VkMemoryHeap           memoryHeaps[VK_MAX_MEMORY_HEAPS];
 --   > } VkPhysicalDeviceMemoryProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceMemoryProperties.html VkPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceMemoryProperties.html VkPhysicalDeviceMemoryProperties registry at www.khronos.org>
 data VkPhysicalDeviceMemoryProperties = VkPhysicalDeviceMemoryProperties## Addr##
                                                                           ByteArray##
 
@@ -88,28 +88,6 @@
         type StructExtends VkPhysicalDeviceMemoryProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypeCount VkPhysicalDeviceMemoryProperties where
-        type VkMemoryTypeCountMType VkPhysicalDeviceMemoryProperties =
-             Word32
-
-        {-# NOINLINE vkMemoryTypeCount #-}
-        vkMemoryTypeCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount})
-
-        {-# INLINE vkMemoryTypeCountByteOffset #-}
-        vkMemoryTypeCountByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-
-        {-# INLINE readVkMemoryTypeCount #-}
-        readVkMemoryTypeCount p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-
-        {-# INLINE writeVkMemoryTypeCount #-}
-        writeVkMemoryTypeCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-
-instance {-# OVERLAPPING #-}
          HasField "memoryTypeCount" VkPhysicalDeviceMemoryProperties where
         type FieldType "memoryTypeCount" VkPhysicalDeviceMemoryProperties =
              Word32
@@ -130,42 +108,24 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
 
-instance CanReadField "memoryTypeCount"
-           VkPhysicalDeviceMemoryProperties
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryTypeCount" VkPhysicalDeviceMemoryProperties
          where
-        {-# INLINE getField #-}
-        getField = vkMemoryTypeCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryTypeCount
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkMemoryTypesArray VkPhysicalDeviceMemoryProperties where
-        type VkMemoryTypesArrayMType VkPhysicalDeviceMemoryProperties =
-             VkMemoryType
-
-        {-# NOINLINE vkMemoryTypesArray #-}
-        vkMemoryTypesArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: VkMemoryType) +
-                    #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}))
-
-        {-# INLINE vkMemoryTypesArrayByteOffset #-}
-        vkMemoryTypesArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
-
-        {-# INLINE readVkMemoryTypesArray #-}
-        readVkMemoryTypesArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: VkMemoryType) +
-                 #{offset VkPhysicalDeviceMemoryProperties, memoryTypes})
-
-        {-# INLINE writeVkMemoryTypesArray #-}
-        writeVkMemoryTypesArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: VkMemoryType) +
-                 #{offset VkPhysicalDeviceMemoryProperties, memoryTypes})
+         CanWriteField "memoryTypeCount" VkPhysicalDeviceMemoryProperties
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryTypes" VkPhysicalDeviceMemoryProperties where
@@ -185,7 +145,8 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "memoryTypes" idx
             VkPhysicalDeviceMemoryProperties) =>
          CanReadFieldArray "memoryTypes" idx
@@ -214,36 +175,53 @@
         fieldArrayLength = VK_MAX_MEMORY_TYPES
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkMemoryTypesArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
+                      +
+                      sizeOf (undefined :: VkMemoryType) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkMemoryTypesArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
+                 +
+                 sizeOf (undefined :: VkMemoryType) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkMemoryHeapCount VkPhysicalDeviceMemoryProperties where
-        type VkMemoryHeapCountMType VkPhysicalDeviceMemoryProperties =
-             Word32
+         (KnownNat idx,
+          IndexInBounds "memoryTypes" idx
+            VkPhysicalDeviceMemoryProperties) =>
+         CanWriteFieldArray "memoryTypes" idx
+           VkPhysicalDeviceMemoryProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryTypes" 0 VkPhysicalDeviceMemoryProperties
+                       #-}
 
-        {-# NOINLINE vkMemoryHeapCount #-}
-        vkMemoryHeapCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount})
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryTypes" 1 VkPhysicalDeviceMemoryProperties
+                       #-}
 
-        {-# INLINE vkMemoryHeapCountByteOffset #-}
-        vkMemoryHeapCountByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryTypes" 2 VkPhysicalDeviceMemoryProperties
+                       #-}
 
-        {-# INLINE readVkMemoryHeapCount #-}
-        readVkMemoryHeapCount p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryTypes" 3 VkPhysicalDeviceMemoryProperties
+                       #-}
 
-        {-# INLINE writeVkMemoryHeapCount #-}
-        writeVkMemoryHeapCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
+                 +
+                 sizeOf (undefined :: VkMemoryType) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "memoryHeapCount" VkPhysicalDeviceMemoryProperties where
@@ -266,42 +244,24 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
 
-instance CanReadField "memoryHeapCount"
-           VkPhysicalDeviceMemoryProperties
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryHeapCount" VkPhysicalDeviceMemoryProperties
          where
-        {-# INLINE getField #-}
-        getField = vkMemoryHeapCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryHeapCount
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkMemoryHeapsArray VkPhysicalDeviceMemoryProperties where
-        type VkMemoryHeapsArrayMType VkPhysicalDeviceMemoryProperties =
-             VkMemoryHeap
-
-        {-# NOINLINE vkMemoryHeapsArray #-}
-        vkMemoryHeapsArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: VkMemoryHeap) +
-                    #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}))
-
-        {-# INLINE vkMemoryHeapsArrayByteOffset #-}
-        vkMemoryHeapsArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
-
-        {-# INLINE readVkMemoryHeapsArray #-}
-        readVkMemoryHeapsArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: VkMemoryHeap) +
-                 #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps})
-
-        {-# INLINE writeVkMemoryHeapsArray #-}
-        writeVkMemoryHeapsArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: VkMemoryHeap) +
-                 #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps})
+         CanWriteField "memoryHeapCount" VkPhysicalDeviceMemoryProperties
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryHeaps" VkPhysicalDeviceMemoryProperties where
@@ -321,7 +281,8 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "memoryHeaps" idx
             VkPhysicalDeviceMemoryProperties) =>
          CanReadFieldArray "memoryHeaps" idx
@@ -350,30 +311,93 @@
         fieldArrayLength = VK_MAX_MEMORY_HEAPS
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkMemoryHeapsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
+                      +
+                      sizeOf (undefined :: VkMemoryHeap) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkMemoryHeapsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
+                 +
+                 sizeOf (undefined :: VkMemoryHeap) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "memoryHeaps" idx
+            VkPhysicalDeviceMemoryProperties) =>
+         CanWriteFieldArray "memoryHeaps" idx
+           VkPhysicalDeviceMemoryProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryHeaps" 0 VkPhysicalDeviceMemoryProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryHeaps" 1 VkPhysicalDeviceMemoryProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryHeaps" 2 VkPhysicalDeviceMemoryProperties
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "memoryHeaps" 3 VkPhysicalDeviceMemoryProperties
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
+                 +
+                 sizeOf (undefined :: VkMemoryHeap) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
 instance Show VkPhysicalDeviceMemoryProperties where
         showsPrec d x
           = showString "VkPhysicalDeviceMemoryProperties {" .
-              showString "vkMemoryTypeCount = " .
-                showsPrec d (vkMemoryTypeCount x) .
+              showString "memoryTypeCount = " .
+                showsPrec d (getField @"memoryTypeCount" x) .
                   showString ", " .
-                    showString "vkMemoryTypesArray = [" .
-                      showsPrec d (map (vkMemoryTypesArray x) [1 .. VK_MAX_MEMORY_TYPES])
-                        .
-                        showChar ']' .
-                          showString ", " .
-                            showString "vkMemoryHeapCount = " .
-                              showsPrec d (vkMemoryHeapCount x) .
-                                showString ", " .
-                                  showString "vkMemoryHeapsArray = [" .
-                                    showsPrec d
-                                      (map (vkMemoryHeapsArray x) [1 .. VK_MAX_MEMORY_HEAPS])
-                                      . showChar ']' . showChar '}'
+                    (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2.hsc
@@ -0,0 +1,200 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2
+       (VkPhysicalDeviceMemoryProperties2(..)) where
+import           Foreign.Storable                                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties (VkPhysicalDeviceMemoryProperties)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceMemoryProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPhysicalDeviceMemoryProperties memoryProperties;
+--   > } VkPhysicalDeviceMemoryProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceMemoryProperties2.html VkPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+data VkPhysicalDeviceMemoryProperties2 = VkPhysicalDeviceMemoryProperties2## Addr##
+                                                                            ByteArray##
+
+instance Eq VkPhysicalDeviceMemoryProperties2 where
+        (VkPhysicalDeviceMemoryProperties2## a _) ==
+          x@(VkPhysicalDeviceMemoryProperties2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceMemoryProperties2 where
+        (VkPhysicalDeviceMemoryProperties2## a _) `compare`
+          x@(VkPhysicalDeviceMemoryProperties2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceMemoryProperties2 where
+        unsafeAddr (VkPhysicalDeviceMemoryProperties2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceMemoryProperties2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceMemoryProperties2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2KHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2KHR
+       (VkPhysicalDeviceMemoryProperties2(..),
+        VkPhysicalDeviceMemoryProperties2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2 (VkPhysicalDeviceMemoryProperties2 (..))
+
+-- | Alias for `VkPhysicalDeviceMemoryProperties2`
+type VkPhysicalDeviceMemoryProperties2KHR =
+     VkPhysicalDeviceMemoryProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMemoryProperties2KHR.hsc
+++ /dev/null
@@ -1,242 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2KHR
-       (VkPhysicalDeviceMemoryProperties2KHR(..)) where
-import           Foreign.Storable                                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties (VkPhysicalDeviceMemoryProperties)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceMemoryProperties2KHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPhysicalDeviceMemoryProperties memoryProperties;
---   > } VkPhysicalDeviceMemoryProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceMemoryProperties2KHR.html VkPhysicalDeviceMemoryProperties2KHR registry at www.khronos.org>
-data VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2KHR## Addr##
-                                                                                  ByteArray##
-
-instance Eq VkPhysicalDeviceMemoryProperties2KHR where
-        (VkPhysicalDeviceMemoryProperties2KHR## a _) ==
-          x@(VkPhysicalDeviceMemoryProperties2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMemoryProperties2KHR where
-        (VkPhysicalDeviceMemoryProperties2KHR## a _) `compare`
-          x@(VkPhysicalDeviceMemoryProperties2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMemoryProperties2KHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceMemoryProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMemoryProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceMemoryProperties2KHR
-         where
-        unsafeAddr (VkPhysicalDeviceMemoryProperties2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceMemoryProperties2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceMemoryProperties2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceMemoryProperties2KHR where
-        type StructFields VkPhysicalDeviceMemoryProperties2KHR =
-             '["sType", "pNext", "memoryProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceMemoryProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMemoryProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMemoryProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceMemoryProperties2KHR where
-        type VkSTypeMType VkPhysicalDeviceMemoryProperties2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMemoryProperties2KHR where
-        type FieldType "sType" VkPhysicalDeviceMemoryProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMemoryProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMemoryProperties2KHR =
-             #{offset VkPhysicalDeviceMemoryProperties2KHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMemoryProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties2KHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceMemoryProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceMemoryProperties2KHR where
-        type VkPNextMType VkPhysicalDeviceMemoryProperties2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMemoryProperties2KHR where
-        type FieldType "pNext" VkPhysicalDeviceMemoryProperties2KHR =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMemoryProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMemoryProperties2KHR =
-             #{offset VkPhysicalDeviceMemoryProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMemoryProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties2KHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceMemoryProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkMemoryProperties VkPhysicalDeviceMemoryProperties2KHR where
-        type VkMemoryPropertiesMType VkPhysicalDeviceMemoryProperties2KHR =
-             VkPhysicalDeviceMemoryProperties
-
-        {-# NOINLINE vkMemoryProperties #-}
-        vkMemoryProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties2KHR, memoryProperties})
-
-        {-# INLINE vkMemoryPropertiesByteOffset #-}
-        vkMemoryPropertiesByteOffset ~_
-          = #{offset VkPhysicalDeviceMemoryProperties2KHR, memoryProperties}
-
-        {-# INLINE readVkMemoryProperties #-}
-        readVkMemoryProperties p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties2KHR, memoryProperties}
-
-        {-# INLINE writeVkMemoryProperties #-}
-        writeVkMemoryProperties p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties2KHR, memoryProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryProperties" VkPhysicalDeviceMemoryProperties2KHR
-         where
-        type FieldType "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2KHR
-             = VkPhysicalDeviceMemoryProperties
-        type FieldOptional "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2KHR
-             =
-             #{offset VkPhysicalDeviceMemoryProperties2KHR, memoryProperties}
-        type FieldIsArray "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties2KHR, memoryProperties}
-
-instance CanReadField "memoryProperties"
-           VkPhysicalDeviceMemoryProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMemoryProperties
-
-        {-# INLINE readField #-}
-        readField = readVkMemoryProperties
-
-instance Show VkPhysicalDeviceMemoryProperties2KHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMemoryProperties2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkMemoryProperties = " .
-                            showsPrec d (vkMemoryProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeatures.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeatures.hsc
@@ -0,0 +1,299 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeatures
+       (VkPhysicalDeviceMultiviewFeatures(..)) where
+import           Foreign.Storable                                       (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo        (VkDeviceCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceMultiviewFeatures {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         multiview;
+--   >     VkBool32                         multiviewGeometryShader;
+--   >     VkBool32                         multiviewTessellationShader;
+--   > } VkPhysicalDeviceMultiviewFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceMultiviewFeatures.html VkPhysicalDeviceMultiviewFeatures registry at www.khronos.org>
+data VkPhysicalDeviceMultiviewFeatures = VkPhysicalDeviceMultiviewFeatures## Addr##
+                                                                            ByteArray##
+
+instance Eq VkPhysicalDeviceMultiviewFeatures where
+        (VkPhysicalDeviceMultiviewFeatures## a _) ==
+          x@(VkPhysicalDeviceMultiviewFeatures## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceMultiviewFeatures where
+        (VkPhysicalDeviceMultiviewFeatures## a _) `compare`
+          x@(VkPhysicalDeviceMultiviewFeatures## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceMultiviewFeatures where
+        unsafeAddr (VkPhysicalDeviceMultiviewFeatures## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceMultiviewFeatures## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceMultiviewFeatures##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeaturesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeaturesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeaturesKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHR
+       (VkPhysicalDeviceMultiviewFeatures(..),
+        VkPhysicalDeviceMultiviewFeaturesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeatures (VkPhysicalDeviceMultiviewFeatures (..))
+
+-- | Alias for `VkPhysicalDeviceMultiviewFeatures`
+type VkPhysicalDeviceMultiviewFeaturesKHR =
+     VkPhysicalDeviceMultiviewFeatures
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeaturesKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeaturesKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewFeaturesKHX.hsc
+++ /dev/null
@@ -1,393 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHX
-       (VkPhysicalDeviceMultiviewFeaturesKHX(..)) where
-import           Foreign.Storable                                          (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                           (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo           (VkDeviceCreateInfo)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR (VkPhysicalDeviceFeatures2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceMultiviewFeaturesKHX {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         multiview;
---   >     VkBool32                         multiviewGeometryShader;
---   >     VkBool32                         multiviewTessellationShader;
---   > } VkPhysicalDeviceMultiviewFeaturesKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceMultiviewFeaturesKHX.html VkPhysicalDeviceMultiviewFeaturesKHX registry at www.khronos.org>
-data VkPhysicalDeviceMultiviewFeaturesKHX = VkPhysicalDeviceMultiviewFeaturesKHX## Addr##
-                                                                                  ByteArray##
-
-instance Eq VkPhysicalDeviceMultiviewFeaturesKHX where
-        (VkPhysicalDeviceMultiviewFeaturesKHX## a _) ==
-          x@(VkPhysicalDeviceMultiviewFeaturesKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMultiviewFeaturesKHX where
-        (VkPhysicalDeviceMultiviewFeaturesKHX## a _) `compare`
-          x@(VkPhysicalDeviceMultiviewFeaturesKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMultiviewFeaturesKHX where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceMultiviewFeaturesKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMultiviewFeaturesKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        unsafeAddr (VkPhysicalDeviceMultiviewFeaturesKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceMultiviewFeaturesKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceMultiviewFeaturesKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceMultiviewFeaturesKHX where
-        type StructFields VkPhysicalDeviceMultiviewFeaturesKHX =
-             '["sType", "pNext", "multiview", "multiviewGeometryShader", -- ' closing tick for hsc2hs
-               "multiviewTessellationShader"]
-        type CUnionType VkPhysicalDeviceMultiviewFeaturesKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMultiviewFeaturesKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMultiviewFeaturesKHX =
-             '[VkPhysicalDeviceFeatures2KHR, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceMultiviewFeaturesKHX where
-        type VkSTypeMType VkPhysicalDeviceMultiviewFeaturesKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeaturesKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMultiviewFeaturesKHX where
-        type FieldType "sType" VkPhysicalDeviceMultiviewFeaturesKHX =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMultiviewFeaturesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMultiviewFeaturesKHX =
-             #{offset VkPhysicalDeviceMultiviewFeaturesKHX, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMultiviewFeaturesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceMultiviewFeaturesKHX where
-        type VkPNextMType VkPhysicalDeviceMultiviewFeaturesKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeaturesKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMultiviewFeaturesKHX where
-        type FieldType "pNext" VkPhysicalDeviceMultiviewFeaturesKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMultiviewFeaturesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMultiviewFeaturesKHX =
-             #{offset VkPhysicalDeviceMultiviewFeaturesKHX, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMultiviewFeaturesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkMultiview VkPhysicalDeviceMultiviewFeaturesKHX where
-        type VkMultiviewMType VkPhysicalDeviceMultiviewFeaturesKHX =
-             VkBool32
-
-        {-# NOINLINE vkMultiview #-}
-        vkMultiview x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiview})
-
-        {-# INLINE vkMultiviewByteOffset #-}
-        vkMultiviewByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiview}
-
-        {-# INLINE readVkMultiview #-}
-        readVkMultiview p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiview}
-
-        {-# INLINE writeVkMultiview #-}
-        writeVkMultiview p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiview}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiview" VkPhysicalDeviceMultiviewFeaturesKHX where
-        type FieldType "multiview" VkPhysicalDeviceMultiviewFeaturesKHX =
-             VkBool32
-        type FieldOptional "multiview" VkPhysicalDeviceMultiviewFeaturesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiview" VkPhysicalDeviceMultiviewFeaturesKHX =
-             #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiview}
-        type FieldIsArray "multiview" VkPhysicalDeviceMultiviewFeaturesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiview}
-
-instance CanReadField "multiview"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkMultiview
-
-        {-# INLINE readField #-}
-        readField = readVkMultiview
-
-instance CanWriteField "multiview"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMultiview
-
-instance {-# OVERLAPPING #-}
-         HasVkMultiviewGeometryShader VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        type VkMultiviewGeometryShaderMType
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = VkBool32
-
-        {-# NOINLINE vkMultiviewGeometryShader #-}
-        vkMultiviewGeometryShader x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewGeometryShader})
-
-        {-# INLINE vkMultiviewGeometryShaderByteOffset #-}
-        vkMultiviewGeometryShaderByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewGeometryShader}
-
-        {-# INLINE readVkMultiviewGeometryShader #-}
-        readVkMultiviewGeometryShader p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewGeometryShader}
-
-        {-# INLINE writeVkMultiviewGeometryShader #-}
-        writeVkMultiviewGeometryShader p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewGeometryShader}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiviewGeometryShader"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        type FieldType "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = VkBool32
-        type FieldOptional "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             =
-             #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewGeometryShader}
-        type FieldIsArray "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewGeometryShader}
-
-instance CanReadField "multiviewGeometryShader"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkMultiviewGeometryShader
-
-        {-# INLINE readField #-}
-        readField = readVkMultiviewGeometryShader
-
-instance CanWriteField "multiviewGeometryShader"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMultiviewGeometryShader
-
-instance {-# OVERLAPPING #-}
-         HasVkMultiviewTessellationShader
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        type VkMultiviewTessellationShaderMType
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = VkBool32
-
-        {-# NOINLINE vkMultiviewTessellationShader #-}
-        vkMultiviewTessellationShader x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewTessellationShader})
-
-        {-# INLINE vkMultiviewTessellationShaderByteOffset #-}
-        vkMultiviewTessellationShaderByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewTessellationShader}
-
-        {-# INLINE readVkMultiviewTessellationShader #-}
-        readVkMultiviewTessellationShader p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewTessellationShader}
-
-        {-# INLINE writeVkMultiviewTessellationShader #-}
-        writeVkMultiviewTessellationShader p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewTessellationShader}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiviewTessellationShader"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        type FieldType "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = VkBool32
-        type FieldOptional "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             =
-             #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewTessellationShader}
-        type FieldIsArray "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeaturesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeaturesKHX, multiviewTessellationShader}
-
-instance CanReadField "multiviewTessellationShader"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkMultiviewTessellationShader
-
-        {-# INLINE readField #-}
-        readField = readVkMultiviewTessellationShader
-
-instance CanWriteField "multiviewTessellationShader"
-           VkPhysicalDeviceMultiviewFeaturesKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMultiviewTessellationShader
-
-instance Show VkPhysicalDeviceMultiviewFeaturesKHX where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMultiviewFeaturesKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkMultiview = " .
-                            showsPrec d (vkMultiview x) .
-                              showString ", " .
-                                showString "vkMultiviewGeometryShader = " .
-                                  showsPrec d (vkMultiviewGeometryShader x) .
-                                    showString ", " .
-                                      showString "vkMultiviewTessellationShader = " .
-                                        showsPrec d (vkMultiviewTessellationShader x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
        (VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
 --   >     VkStructureType sType;
@@ -24,7 +24,7 @@
 --   >     VkBool32                         perViewPositionAllComponents;
 --   > } VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX registry at www.khronos.org>
 data VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX## Addr##
                                                                                                                         ByteArray##
 
@@ -96,31 +96,7 @@
              = 'True -- ' closing tick for hsc2hs
         type StructExtends
                VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        type VkSTypeMType
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
+             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType"
@@ -147,38 +123,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
 
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
+         CanWriteField "sType"
+           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
          where
-        type VkPNextMType
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext"
@@ -205,39 +169,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkPerViewPositionAllComponents
+         CanWriteField "pNext"
            VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
          where
-        type VkPerViewPositionAllComponentsMType
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = VkBool32
-
-        {-# NOINLINE vkPerViewPositionAllComponents #-}
-        vkPerViewPositionAllComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents})
-
-        {-# INLINE vkPerViewPositionAllComponentsByteOffset #-}
-        vkPerViewPositionAllComponentsByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
-
-        {-# INLINE readVkPerViewPositionAllComponents #-}
-        readVkPerViewPositionAllComponents p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
-
-        {-# INLINE writeVkPerViewPositionAllComponents #-}
-        writeVkPerViewPositionAllComponents p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "perViewPositionAllComponents"
@@ -264,15 +215,27 @@
         fieldOffset
           = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
 
-instance CanReadField "perViewPositionAllComponents"
+instance {-# OVERLAPPING #-}
+         CanReadField "perViewPositionAllComponents"
            VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
          where
-        {-# INLINE getField #-}
-        getField = vkPerViewPositionAllComponents
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents})
 
         {-# INLINE readField #-}
-        readField = readVkPerViewPositionAllComponents
+        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
@@ -280,11 +243,12 @@
           = showString
               "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {"
               .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkPerViewPositionAllComponents = " .
-                            showsPrec d (vkPerViewPositionAllComponents x) . showChar '}'
+                          showString "perViewPositionAllComponents = " .
+                            showsPrec d (getField @"perViewPositionAllComponents" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewProperties.hsc
@@ -0,0 +1,260 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewProperties
+       (VkPhysicalDeviceMultiviewProperties(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceMultiviewProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         maxMultiviewViewCount;
+--   >     uint32_t                         maxMultiviewInstanceIndex;
+--   > } VkPhysicalDeviceMultiviewProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceMultiviewProperties.html VkPhysicalDeviceMultiviewProperties registry at www.khronos.org>
+data VkPhysicalDeviceMultiviewProperties = VkPhysicalDeviceMultiviewProperties## Addr##
+                                                                                ByteArray##
+
+instance Eq VkPhysicalDeviceMultiviewProperties where
+        (VkPhysicalDeviceMultiviewProperties## a _) ==
+          x@(VkPhysicalDeviceMultiviewProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceMultiviewProperties where
+        (VkPhysicalDeviceMultiviewProperties## a _) `compare`
+          x@(VkPhysicalDeviceMultiviewProperties## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceMultiviewProperties
+         where
+        unsafeAddr (VkPhysicalDeviceMultiviewProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceMultiviewProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceMultiviewProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPropertiesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHR
+       (VkPhysicalDeviceMultiviewProperties(..),
+        VkPhysicalDeviceMultiviewPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewProperties
+                                                                                   (VkPhysicalDeviceMultiviewProperties (..))
+
+-- | Alias for `VkPhysicalDeviceMultiviewProperties`
+type VkPhysicalDeviceMultiviewPropertiesKHR =
+     VkPhysicalDeviceMultiviewProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPropertiesKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPropertiesKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceMultiviewPropertiesKHX.hsc
+++ /dev/null
@@ -1,312 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHX
-       (VkPhysicalDeviceMultiviewPropertiesKHX(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceMultiviewPropertiesKHX {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         maxMultiviewViewCount;
---   >     uint32_t                         maxMultiviewInstanceIndex;
---   > } VkPhysicalDeviceMultiviewPropertiesKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceMultiviewPropertiesKHX.html VkPhysicalDeviceMultiviewPropertiesKHX registry at www.khronos.org>
-data VkPhysicalDeviceMultiviewPropertiesKHX = VkPhysicalDeviceMultiviewPropertiesKHX## Addr##
-                                                                                      ByteArray##
-
-instance Eq VkPhysicalDeviceMultiviewPropertiesKHX where
-        (VkPhysicalDeviceMultiviewPropertiesKHX## a _) ==
-          x@(VkPhysicalDeviceMultiviewPropertiesKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMultiviewPropertiesKHX where
-        (VkPhysicalDeviceMultiviewPropertiesKHX## a _) `compare`
-          x@(VkPhysicalDeviceMultiviewPropertiesKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMultiviewPropertiesKHX where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceMultiviewPropertiesKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMultiviewPropertiesKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        unsafeAddr (VkPhysicalDeviceMultiviewPropertiesKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceMultiviewPropertiesKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceMultiviewPropertiesKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceMultiviewPropertiesKHX where
-        type StructFields VkPhysicalDeviceMultiviewPropertiesKHX =
-             '["sType", "pNext", "maxMultiviewViewCount", -- ' closing tick for hsc2hs
-               "maxMultiviewInstanceIndex"]
-        type CUnionType VkPhysicalDeviceMultiviewPropertiesKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMultiviewPropertiesKHX = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMultiviewPropertiesKHX =
-             '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceMultiviewPropertiesKHX where
-        type VkSTypeMType VkPhysicalDeviceMultiviewPropertiesKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPropertiesKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMultiviewPropertiesKHX where
-        type FieldType "sType" VkPhysicalDeviceMultiviewPropertiesKHX =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMultiviewPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMultiviewPropertiesKHX =
-             #{offset VkPhysicalDeviceMultiviewPropertiesKHX, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMultiviewPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceMultiviewPropertiesKHX where
-        type VkPNextMType VkPhysicalDeviceMultiviewPropertiesKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPropertiesKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMultiviewPropertiesKHX where
-        type FieldType "pNext" VkPhysicalDeviceMultiviewPropertiesKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMultiviewPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMultiviewPropertiesKHX =
-             #{offset VkPhysicalDeviceMultiviewPropertiesKHX, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMultiviewPropertiesKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxMultiviewViewCount VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        type VkMaxMultiviewViewCountMType
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = Word32
-
-        {-# NOINLINE vkMaxMultiviewViewCount #-}
-        vkMaxMultiviewViewCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewViewCount})
-
-        {-# INLINE vkMaxMultiviewViewCountByteOffset #-}
-        vkMaxMultiviewViewCountByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewViewCount}
-
-        {-# INLINE readVkMaxMultiviewViewCount #-}
-        readVkMaxMultiviewViewCount p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewViewCount}
-
-        {-# INLINE writeVkMaxMultiviewViewCount #-}
-        writeVkMaxMultiviewViewCount p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewViewCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMultiviewViewCount"
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        type FieldType "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = Word32
-        type FieldOptional "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             =
-             #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewViewCount}
-        type FieldIsArray "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewViewCount}
-
-instance CanReadField "maxMultiviewViewCount"
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxMultiviewViewCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxMultiviewViewCount
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxMultiviewInstanceIndex
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        type VkMaxMultiviewInstanceIndexMType
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = Word32
-
-        {-# NOINLINE vkMaxMultiviewInstanceIndex #-}
-        vkMaxMultiviewInstanceIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewInstanceIndex})
-
-        {-# INLINE vkMaxMultiviewInstanceIndexByteOffset #-}
-        vkMaxMultiviewInstanceIndexByteOffset ~_
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewInstanceIndex}
-
-        {-# INLINE readVkMaxMultiviewInstanceIndex #-}
-        readVkMaxMultiviewInstanceIndex p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewInstanceIndex}
-
-        {-# INLINE writeVkMaxMultiviewInstanceIndex #-}
-        writeVkMaxMultiviewInstanceIndex p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewInstanceIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMultiviewInstanceIndex"
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        type FieldType "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = Word32
-        type FieldOptional "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             =
-             #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewInstanceIndex}
-        type FieldIsArray "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewPropertiesKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPropertiesKHX, maxMultiviewInstanceIndex}
-
-instance CanReadField "maxMultiviewInstanceIndex"
-           VkPhysicalDeviceMultiviewPropertiesKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxMultiviewInstanceIndex
-
-        {-# INLINE readField #-}
-        readField = readVkMaxMultiviewInstanceIndex
-
-instance Show VkPhysicalDeviceMultiviewPropertiesKHX where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMultiviewPropertiesKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkMaxMultiviewViewCount = " .
-                            showsPrec d (vkMaxMultiviewViewCount x) .
-                              showString ", " .
-                                showString "vkMaxMultiviewInstanceIndex = " .
-                                  showsPrec d (vkMaxMultiviewInstanceIndex x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingProperties.hsc
@@ -0,0 +1,211 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingProperties
+       (VkPhysicalDevicePointClippingProperties(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkPointClippingBehavior       (VkPointClippingBehavior)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDevicePointClippingProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPointClippingBehavior      pointClippingBehavior;
+--   > } VkPhysicalDevicePointClippingProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDevicePointClippingProperties.html VkPhysicalDevicePointClippingProperties registry at www.khronos.org>
+data VkPhysicalDevicePointClippingProperties = VkPhysicalDevicePointClippingProperties## Addr##
+                                                                                        ByteArray##
+
+instance Eq VkPhysicalDevicePointClippingProperties where
+        (VkPhysicalDevicePointClippingProperties## a _) ==
+          x@(VkPhysicalDevicePointClippingProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDevicePointClippingProperties where
+        (VkPhysicalDevicePointClippingProperties## a _) `compare`
+          x@(VkPhysicalDevicePointClippingProperties## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDevicePointClippingProperties
+         where
+        unsafeAddr (VkPhysicalDevicePointClippingProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDevicePointClippingProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDevicePointClippingProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingPropertiesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingPropertiesKHR
+       (VkPhysicalDevicePointClippingProperties(..),
+        VkPhysicalDevicePointClippingPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingProperties
+                                                                                       (VkPhysicalDevicePointClippingProperties (..))
+
+-- | Alias for `VkPhysicalDevicePointClippingProperties`
+type VkPhysicalDevicePointClippingPropertiesKHR =
+     VkPhysicalDevicePointClippingProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingPropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePointClippingPropertiesKHR.hsc
+++ /dev/null
@@ -1,261 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingPropertiesKHR
-       (VkPhysicalDevicePointClippingPropertiesKHR(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkPointClippingBehaviorKHR       (VkPointClippingBehaviorKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDevicePointClippingPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPointClippingBehaviorKHR      pointClippingBehavior;
---   > } VkPhysicalDevicePointClippingPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html VkPhysicalDevicePointClippingPropertiesKHR registry at www.khronos.org>
-data VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingPropertiesKHR## Addr##
-                                                                                              ByteArray##
-
-instance Eq VkPhysicalDevicePointClippingPropertiesKHR where
-        (VkPhysicalDevicePointClippingPropertiesKHR## a _) ==
-          x@(VkPhysicalDevicePointClippingPropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDevicePointClippingPropertiesKHR where
-        (VkPhysicalDevicePointClippingPropertiesKHR## a _) `compare`
-          x@(VkPhysicalDevicePointClippingPropertiesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDevicePointClippingPropertiesKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDevicePointClippingPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDevicePointClippingPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        unsafeAddr (VkPhysicalDevicePointClippingPropertiesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDevicePointClippingPropertiesKHR## _ b)
-          = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDevicePointClippingPropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        type StructFields VkPhysicalDevicePointClippingPropertiesKHR =
-             '["sType", "pNext", "pointClippingBehavior"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDevicePointClippingPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDevicePointClippingPropertiesKHR =
-             'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDevicePointClippingPropertiesKHR =
-             '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDevicePointClippingPropertiesKHR where
-        type VkSTypeMType VkPhysicalDevicePointClippingPropertiesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePointClippingPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDevicePointClippingPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDevicePointClippingPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDevicePointClippingPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDevicePointClippingPropertiesKHR where
-        type FieldType "sType" VkPhysicalDevicePointClippingPropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDevicePointClippingPropertiesKHR
-             =
-             #{offset VkPhysicalDevicePointClippingPropertiesKHR, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePointClippingPropertiesKHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDevicePointClippingPropertiesKHR where
-        type VkPNextMType VkPhysicalDevicePointClippingPropertiesKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePointClippingPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDevicePointClippingPropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDevicePointClippingPropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDevicePointClippingPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDevicePointClippingPropertiesKHR where
-        type FieldType "pNext" VkPhysicalDevicePointClippingPropertiesKHR =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDevicePointClippingPropertiesKHR
-             =
-             #{offset VkPhysicalDevicePointClippingPropertiesKHR, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePointClippingPropertiesKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkPointClippingBehavior
-           VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        type VkPointClippingBehaviorMType
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = VkPointClippingBehaviorKHR
-
-        {-# NOINLINE vkPointClippingBehavior #-}
-        vkPointClippingBehavior x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePointClippingPropertiesKHR, pointClippingBehavior})
-
-        {-# INLINE vkPointClippingBehaviorByteOffset #-}
-        vkPointClippingBehaviorByteOffset ~_
-          = #{offset VkPhysicalDevicePointClippingPropertiesKHR, pointClippingBehavior}
-
-        {-# INLINE readVkPointClippingBehavior #-}
-        readVkPointClippingBehavior p
-          = peekByteOff p #{offset VkPhysicalDevicePointClippingPropertiesKHR, pointClippingBehavior}
-
-        {-# INLINE writeVkPointClippingBehavior #-}
-        writeVkPointClippingBehavior p
-          = pokeByteOff p #{offset VkPhysicalDevicePointClippingPropertiesKHR, pointClippingBehavior}
-
-instance {-# OVERLAPPING #-}
-         HasField "pointClippingBehavior"
-           VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        type FieldType "pointClippingBehavior"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = VkPointClippingBehaviorKHR
-        type FieldOptional "pointClippingBehavior"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pointClippingBehavior"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             =
-             #{offset VkPhysicalDevicePointClippingPropertiesKHR, pointClippingBehavior}
-        type FieldIsArray "pointClippingBehavior"
-               VkPhysicalDevicePointClippingPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePointClippingPropertiesKHR, pointClippingBehavior}
-
-instance CanReadField "pointClippingBehavior"
-           VkPhysicalDevicePointClippingPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPointClippingBehavior
-
-        {-# INLINE readField #-}
-        readField = readVkPointClippingBehavior
-
-instance Show VkPhysicalDevicePointClippingPropertiesKHR where
-        showsPrec d x
-          = showString "VkPhysicalDevicePointClippingPropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkPointClippingBehavior = " .
-                            showsPrec d (vkPointClippingBehavior x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties.hsc
@@ -8,6 +8,7 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
@@ -25,7 +26,6 @@
 import           Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType               (VkPhysicalDeviceType)
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits           (VkPhysicalDeviceLimits)
 import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties (VkPhysicalDeviceSparseProperties)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceProperties {
@@ -40,7 +40,7 @@
 --   >     VkPhysicalDeviceSparseProperties sparseProperties;
 --   > } VkPhysicalDeviceProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceProperties.html VkPhysicalDeviceProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceProperties.html VkPhysicalDeviceProperties registry at www.khronos.org>
 data VkPhysicalDeviceProperties = VkPhysicalDeviceProperties## Addr##
                                                               ByteArray##
 
@@ -95,27 +95,6 @@
         type StructExtends VkPhysicalDeviceProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkApiVersion VkPhysicalDeviceProperties where
-        type VkApiVersionMType VkPhysicalDeviceProperties = Word32
-
-        {-# NOINLINE vkApiVersion #-}
-        vkApiVersion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, apiVersion})
-
-        {-# INLINE vkApiVersionByteOffset #-}
-        vkApiVersionByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, apiVersion}
-
-        {-# INLINE readVkApiVersion #-}
-        readVkApiVersion p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, apiVersion}
-
-        {-# INLINE writeVkApiVersion #-}
-        writeVkApiVersion p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, apiVersion}
-
-instance {-# OVERLAPPING #-}
          HasField "apiVersion" VkPhysicalDeviceProperties where
         type FieldType "apiVersion" VkPhysicalDeviceProperties = Word32
         type FieldOptional "apiVersion" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
@@ -130,33 +109,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, apiVersion}
 
-instance CanReadField "apiVersion" VkPhysicalDeviceProperties where
-        {-# INLINE getField #-}
-        getField = vkApiVersion
-
-        {-# INLINE readField #-}
-        readField = readVkApiVersion
-
 instance {-# OVERLAPPING #-}
-         HasVkDriverVersion VkPhysicalDeviceProperties where
-        type VkDriverVersionMType VkPhysicalDeviceProperties = Word32
-
-        {-# NOINLINE vkDriverVersion #-}
-        vkDriverVersion x
+         CanReadField "apiVersion" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, driverVersion})
-
-        {-# INLINE vkDriverVersionByteOffset #-}
-        vkDriverVersionByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, driverVersion}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, apiVersion})
 
-        {-# INLINE readVkDriverVersion #-}
-        readVkDriverVersion p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, driverVersion}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceProperties, apiVersion}
 
-        {-# INLINE writeVkDriverVersion #-}
-        writeVkDriverVersion p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, driverVersion}
+instance {-# OVERLAPPING #-}
+         CanWriteField "apiVersion" VkPhysicalDeviceProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceProperties, apiVersion}
 
 instance {-# OVERLAPPING #-}
          HasField "driverVersion" VkPhysicalDeviceProperties where
@@ -175,34 +143,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, driverVersion}
 
-instance CanReadField "driverVersion" VkPhysicalDeviceProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkDriverVersion
-
-        {-# INLINE readField #-}
-        readField = readVkDriverVersion
-
 instance {-# OVERLAPPING #-}
-         HasVkVendorID VkPhysicalDeviceProperties where
-        type VkVendorIDMType VkPhysicalDeviceProperties = Word32
-
-        {-# NOINLINE vkVendorID #-}
-        vkVendorID x
+         CanReadField "driverVersion" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, vendorID})
-
-        {-# INLINE vkVendorIDByteOffset #-}
-        vkVendorIDByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, vendorID}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, driverVersion})
 
-        {-# INLINE readVkVendorID #-}
-        readVkVendorID p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, vendorID}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceProperties, driverVersion}
 
-        {-# INLINE writeVkVendorID #-}
-        writeVkVendorID p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, vendorID}
+instance {-# OVERLAPPING #-}
+         CanWriteField "driverVersion" VkPhysicalDeviceProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceProperties, driverVersion}
 
 instance {-# OVERLAPPING #-}
          HasField "vendorID" VkPhysicalDeviceProperties where
@@ -219,33 +175,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, vendorID}
 
-instance CanReadField "vendorID" VkPhysicalDeviceProperties where
-        {-# INLINE getField #-}
-        getField = vkVendorID
-
-        {-# INLINE readField #-}
-        readField = readVkVendorID
-
 instance {-# OVERLAPPING #-}
-         HasVkDeviceID VkPhysicalDeviceProperties where
-        type VkDeviceIDMType VkPhysicalDeviceProperties = Word32
-
-        {-# NOINLINE vkDeviceID #-}
-        vkDeviceID x
+         CanReadField "vendorID" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, deviceID})
-
-        {-# INLINE vkDeviceIDByteOffset #-}
-        vkDeviceIDByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, deviceID}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, vendorID})
 
-        {-# INLINE readVkDeviceID #-}
-        readVkDeviceID p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, deviceID}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceProperties, vendorID}
 
-        {-# INLINE writeVkDeviceID #-}
-        writeVkDeviceID p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, deviceID}
+instance {-# OVERLAPPING #-}
+         CanWriteField "vendorID" VkPhysicalDeviceProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceProperties, vendorID}
 
 instance {-# OVERLAPPING #-}
          HasField "deviceID" VkPhysicalDeviceProperties where
@@ -262,34 +207,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, deviceID}
 
-instance CanReadField "deviceID" VkPhysicalDeviceProperties where
-        {-# INLINE getField #-}
-        getField = vkDeviceID
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceID
-
 instance {-# OVERLAPPING #-}
-         HasVkDeviceType VkPhysicalDeviceProperties where
-        type VkDeviceTypeMType VkPhysicalDeviceProperties =
-             VkPhysicalDeviceType
-
-        {-# NOINLINE vkDeviceType #-}
-        vkDeviceType x
+         CanReadField "deviceID" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, deviceType})
-
-        {-# INLINE vkDeviceTypeByteOffset #-}
-        vkDeviceTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, deviceType}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, deviceID})
 
-        {-# INLINE readVkDeviceType #-}
-        readVkDeviceType p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, deviceType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceProperties, deviceID}
 
-        {-# INLINE writeVkDeviceType #-}
-        writeVkDeviceType p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, deviceType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "deviceID" VkPhysicalDeviceProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceProperties, deviceID}
 
 instance {-# OVERLAPPING #-}
          HasField "deviceType" VkPhysicalDeviceProperties where
@@ -307,39 +240,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, deviceType}
 
-instance CanReadField "deviceType" VkPhysicalDeviceProperties where
-        {-# INLINE getField #-}
-        getField = vkDeviceType
-
-        {-# INLINE readField #-}
-        readField = readVkDeviceType
-
 instance {-# OVERLAPPING #-}
-         HasVkDeviceNameArray VkPhysicalDeviceProperties where
-        type VkDeviceNameArrayMType VkPhysicalDeviceProperties = CChar
-
-        {-# NOINLINE vkDeviceNameArray #-}
-        vkDeviceNameArray x idx
+         CanReadField "deviceType" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: CChar) +
-                    #{offset VkPhysicalDeviceProperties, deviceName}))
-
-        {-# INLINE vkDeviceNameArrayByteOffset #-}
-        vkDeviceNameArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, deviceName}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, deviceType})
 
-        {-# INLINE readVkDeviceNameArray #-}
-        readVkDeviceNameArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkPhysicalDeviceProperties, deviceName})
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceProperties, deviceType}
 
-        {-# INLINE writeVkDeviceNameArray #-}
-        writeVkDeviceNameArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: CChar) +
-                 #{offset VkPhysicalDeviceProperties, deviceName})
+instance {-# OVERLAPPING #-}
+         CanWriteField "deviceType" VkPhysicalDeviceProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceProperties, deviceType}
 
 instance {-# OVERLAPPING #-}
          HasField "deviceName" VkPhysicalDeviceProperties where
@@ -356,7 +272,8 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, deviceName}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "deviceName" idx VkPhysicalDeviceProperties) =>
          CanReadFieldArray "deviceName" idx VkPhysicalDeviceProperties
          where
@@ -378,42 +295,44 @@
         fieldArrayLength = VK_MAX_PHYSICAL_DEVICE_NAME_SIZE
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkDeviceNameArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceProperties, deviceName} +
+                      sizeOf (undefined :: CChar) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkDeviceNameArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceProperties, deviceName} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkPipelineCacheUUIDArray VkPhysicalDeviceProperties where
-        type VkPipelineCacheUUIDArrayMType VkPhysicalDeviceProperties =
-             Word8
+         (KnownNat idx,
+          IndexInBounds "deviceName" idx VkPhysicalDeviceProperties) =>
+         CanWriteFieldArray "deviceName" idx VkPhysicalDeviceProperties
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceName" 0 VkPhysicalDeviceProperties #-}
 
-        {-# NOINLINE vkPipelineCacheUUIDArray #-}
-        vkPipelineCacheUUIDArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word8) +
-                    #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}))
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceName" 1 VkPhysicalDeviceProperties #-}
 
-        {-# INLINE vkPipelineCacheUUIDArrayByteOffset #-}
-        vkPipelineCacheUUIDArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceName" 2 VkPhysicalDeviceProperties #-}
 
-        {-# INLINE readVkPipelineCacheUUIDArray #-}
-        readVkPipelineCacheUUIDArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceProperties, pipelineCacheUUID})
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "deviceName" 3 VkPhysicalDeviceProperties #-}
 
-        {-# INLINE writeVkPipelineCacheUUIDArray #-}
-        writeVkPipelineCacheUUIDArray p idx
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
           = pokeByteOff p
-              (idx * sizeOf (undefined :: Word8) +
-                 #{offset VkPhysicalDeviceProperties, pipelineCacheUUID})
+              (#{offset VkPhysicalDeviceProperties, deviceName} +
+                 sizeOf (undefined :: CChar) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineCacheUUID" VkPhysicalDeviceProperties where
@@ -433,7 +352,8 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "pipelineCacheUUID" idx
             VkPhysicalDeviceProperties) =>
          CanReadFieldArray "pipelineCacheUUID" idx
@@ -462,36 +382,53 @@
         fieldArrayLength = VK_UUID_SIZE
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkPipelineCacheUUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
+                      +
+                      sizeOf (undefined :: Word8) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkPipelineCacheUUIDArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
+                 +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkLimits VkPhysicalDeviceProperties
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "pipelineCacheUUID" idx
+            VkPhysicalDeviceProperties) =>
+         CanWriteFieldArray "pipelineCacheUUID" idx
+           VkPhysicalDeviceProperties
          where
-        type VkLimitsMType VkPhysicalDeviceProperties =
-             VkPhysicalDeviceLimits
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "pipelineCacheUUID" 0 VkPhysicalDeviceProperties
+                       #-}
 
-        {-# NOINLINE vkLimits #-}
-        vkLimits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, limits})
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "pipelineCacheUUID" 1 VkPhysicalDeviceProperties
+                       #-}
 
-        {-# INLINE vkLimitsByteOffset #-}
-        vkLimitsByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, limits}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "pipelineCacheUUID" 2 VkPhysicalDeviceProperties
+                       #-}
 
-        {-# INLINE readVkLimits #-}
-        readVkLimits p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, limits}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "pipelineCacheUUID" 3 VkPhysicalDeviceProperties
+                       #-}
 
-        {-# INLINE writeVkLimits #-}
-        writeVkLimits p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, limits}
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
+                 +
+                 sizeOf (undefined :: Word8) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "limits" VkPhysicalDeviceProperties where
@@ -509,34 +446,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, limits}
 
-instance CanReadField "limits" VkPhysicalDeviceProperties where
-        {-# INLINE getField #-}
-        getField = vkLimits
-
-        {-# INLINE readField #-}
-        readField = readVkLimits
-
 instance {-# OVERLAPPING #-}
-         HasVkSparseProperties VkPhysicalDeviceProperties where
-        type VkSparsePropertiesMType VkPhysicalDeviceProperties =
-             VkPhysicalDeviceSparseProperties
-
-        {-# NOINLINE vkSparseProperties #-}
-        vkSparseProperties x
+         CanReadField "limits" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, sparseProperties})
-
-        {-# INLINE vkSparsePropertiesByteOffset #-}
-        vkSparsePropertiesByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties, sparseProperties}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, limits})
 
-        {-# INLINE readVkSparseProperties #-}
-        readVkSparseProperties p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, sparseProperties}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceProperties, limits}
 
-        {-# INLINE writeVkSparseProperties #-}
-        writeVkSparseProperties p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, sparseProperties}
+instance {-# OVERLAPPING #-}
+         CanWriteField "limits" VkPhysicalDeviceProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceProperties, limits}
 
 instance {-# OVERLAPPING #-}
          HasField "sparseProperties" VkPhysicalDeviceProperties where
@@ -556,51 +481,85 @@
         fieldOffset
           = #{offset VkPhysicalDeviceProperties, sparseProperties}
 
-instance CanReadField "sparseProperties" VkPhysicalDeviceProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkSparseProperties
+instance {-# OVERLAPPING #-}
+         CanReadField "sparseProperties" VkPhysicalDeviceProperties where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, sparseProperties})
 
         {-# INLINE readField #-}
-        readField = readVkSparseProperties
+        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 "vkApiVersion = " .
-                showsPrec d (vkApiVersion x) .
+              showString "apiVersion = " .
+                showsPrec d (getField @"apiVersion" x) .
                   showString ", " .
-                    showString "vkDriverVersion = " .
-                      showsPrec d (vkDriverVersion x) .
+                    showString "driverVersion = " .
+                      showsPrec d (getField @"driverVersion" x) .
                         showString ", " .
-                          showString "vkVendorID = " .
-                            showsPrec d (vkVendorID x) .
+                          showString "vendorID = " .
+                            showsPrec d (getField @"vendorID" x) .
                               showString ", " .
-                                showString "vkDeviceID = " .
-                                  showsPrec d (vkDeviceID x) .
+                                showString "deviceID = " .
+                                  showsPrec d (getField @"deviceID" x) .
                                     showString ", " .
-                                      showString "vkDeviceType = " .
-                                        showsPrec d (vkDeviceType x) .
+                                      showString "deviceType = " .
+                                        showsPrec d (getField @"deviceType" x) .
                                           showString ", " .
-                                            showString "vkDeviceNameArray = [" .
-                                              showsPrec d
-                                                (map (vkDeviceNameArray x)
-                                                   [1 .. VK_MAX_PHYSICAL_DEVICE_NAME_SIZE])
-                                                .
-                                                showChar ']' .
+                                            (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 "vkPipelineCacheUUIDArray = [" .
-                                                      showsPrec d
-                                                        (map (vkPipelineCacheUUIDArray x)
-                                                           [1 .. VK_UUID_SIZE])
-                                                        .
-                                                        showChar ']' .
-                                                          showString ", " .
-                                                            showString "vkLimits = " .
-                                                              showsPrec d (vkLimits x) .
-                                                                showString ", " .
-                                                                  showString "vkSparseProperties = "
-                                                                    .
-                                                                    showsPrec d
-                                                                      (vkSparseProperties x)
-                                                                      . showChar '}'
+                                                    showString "limits = " .
+                                                      showsPrec d (getField @"limits" x) .
+                                                        showString ", " .
+                                                          showString "sparseProperties = " .
+                                                            showsPrec d
+                                                              (getField @"sparseProperties" x)
+                                                              . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2.hsc
@@ -0,0 +1,187 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
+       (VkPhysicalDeviceProperties2(..)) where
+import           Foreign.Storable                                        (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType              (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties (VkPhysicalDeviceProperties)
+import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPhysicalDeviceProperties       properties;
+--   > } VkPhysicalDeviceProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceProperties2.html VkPhysicalDeviceProperties2 registry at www.khronos.org>
+data VkPhysicalDeviceProperties2 = VkPhysicalDeviceProperties2## Addr##
+                                                                ByteArray##
+
+instance Eq VkPhysicalDeviceProperties2 where
+        (VkPhysicalDeviceProperties2## a _) ==
+          x@(VkPhysicalDeviceProperties2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceProperties2 where
+        (VkPhysicalDeviceProperties2## a _) `compare`
+          x@(VkPhysicalDeviceProperties2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceProperties2 where
+        unsafeAddr (VkPhysicalDeviceProperties2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceProperties2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceProperties2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2KHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+       (VkPhysicalDeviceProperties2(..), VkPhysicalDeviceProperties2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2 (..))
+
+-- | Alias for `VkPhysicalDeviceProperties2`
+type VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProperties2KHR.hsc
+++ /dev/null
@@ -1,224 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
-       (VkPhysicalDeviceProperties2KHR(..)) where
-import           Foreign.Storable                                        (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType              (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties (VkPhysicalDeviceProperties)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                        (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceProperties2KHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPhysicalDeviceProperties       properties;
---   > } VkPhysicalDeviceProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceProperties2KHR.html VkPhysicalDeviceProperties2KHR registry at www.khronos.org>
-data VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2KHR## Addr##
-                                                                      ByteArray##
-
-instance Eq VkPhysicalDeviceProperties2KHR where
-        (VkPhysicalDeviceProperties2KHR## a _) ==
-          x@(VkPhysicalDeviceProperties2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceProperties2KHR where
-        (VkPhysicalDeviceProperties2KHR## a _) `compare`
-          x@(VkPhysicalDeviceProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceProperties2KHR where
-        sizeOf ~_ = #{size VkPhysicalDeviceProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkPhysicalDeviceProperties2KHR where
-        unsafeAddr (VkPhysicalDeviceProperties2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceProperties2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceProperties2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceProperties2KHR where
-        type StructFields VkPhysicalDeviceProperties2KHR =
-             '["sType", "pNext", "properties"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceProperties2KHR where
-        type VkSTypeMType VkPhysicalDeviceProperties2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceProperties2KHR where
-        type FieldType "sType" VkPhysicalDeviceProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceProperties2KHR =
-             #{offset VkPhysicalDeviceProperties2KHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties2KHR, sType}
-
-instance CanReadField "sType" VkPhysicalDeviceProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceProperties2KHR where
-        type VkPNextMType VkPhysicalDeviceProperties2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceProperties2KHR where
-        type FieldType "pNext" VkPhysicalDeviceProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceProperties2KHR =
-             #{offset VkPhysicalDeviceProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties2KHR, pNext}
-
-instance CanReadField "pNext" VkPhysicalDeviceProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkProperties VkPhysicalDeviceProperties2KHR where
-        type VkPropertiesMType VkPhysicalDeviceProperties2KHR =
-             VkPhysicalDeviceProperties
-
-        {-# NOINLINE vkProperties #-}
-        vkProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties2KHR, properties})
-
-        {-# INLINE vkPropertiesByteOffset #-}
-        vkPropertiesByteOffset ~_
-          = #{offset VkPhysicalDeviceProperties2KHR, properties}
-
-        {-# INLINE readVkProperties #-}
-        readVkProperties p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties2KHR, properties}
-
-        {-# INLINE writeVkProperties #-}
-        writeVkProperties p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties2KHR, properties}
-
-instance {-# OVERLAPPING #-}
-         HasField "properties" VkPhysicalDeviceProperties2KHR where
-        type FieldType "properties" VkPhysicalDeviceProperties2KHR =
-             VkPhysicalDeviceProperties
-        type FieldOptional "properties" VkPhysicalDeviceProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "properties" VkPhysicalDeviceProperties2KHR =
-             #{offset VkPhysicalDeviceProperties2KHR, properties}
-        type FieldIsArray "properties" VkPhysicalDeviceProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties2KHR, properties}
-
-instance CanReadField "properties" VkPhysicalDeviceProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkProperties
-
-        {-# INLINE readField #-}
-        readField = readVkProperties
-
-instance Show VkPhysicalDeviceProperties2KHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceProperties2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkProperties = " .
-                            showsPrec d (vkProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProtectedMemoryFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProtectedMemoryFeatures.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProtectedMemoryFeatures.hsc
@@ -0,0 +1,211 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryFeatures
+       (VkPhysicalDeviceProtectedMemoryFeatures(..)) where
+import           Foreign.Storable                                       (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo        (VkDeviceCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
+--   >     VkStructureType sType;
+--   >     void*                               pNext;
+--   >     VkBool32                            protectedMemory;
+--   > } VkPhysicalDeviceProtectedMemoryFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html VkPhysicalDeviceProtectedMemoryFeatures registry at www.khronos.org>
+data VkPhysicalDeviceProtectedMemoryFeatures = VkPhysicalDeviceProtectedMemoryFeatures## Addr##
+                                                                                        ByteArray##
+
+instance Eq VkPhysicalDeviceProtectedMemoryFeatures where
+        (VkPhysicalDeviceProtectedMemoryFeatures## a _) ==
+          x@(VkPhysicalDeviceProtectedMemoryFeatures## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceProtectedMemoryFeatures where
+        (VkPhysicalDeviceProtectedMemoryFeatures## a _) `compare`
+          x@(VkPhysicalDeviceProtectedMemoryFeatures## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceProtectedMemoryFeatures
+         where
+        unsafeAddr (VkPhysicalDeviceProtectedMemoryFeatures## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceProtectedMemoryFeatures## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceProtectedMemoryFeatures##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProtectedMemoryProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProtectedMemoryProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceProtectedMemoryProperties.hsc
@@ -0,0 +1,222 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryProperties
+       (VkPhysicalDeviceProtectedMemoryProperties(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceProtectedMemoryProperties {
+--   >     VkStructureType sType;
+--   >     void*                               pNext;
+--   >     VkBool32                            protectedNoFault;
+--   > } VkPhysicalDeviceProtectedMemoryProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceProtectedMemoryProperties.html VkPhysicalDeviceProtectedMemoryProperties registry at www.khronos.org>
+data VkPhysicalDeviceProtectedMemoryProperties = VkPhysicalDeviceProtectedMemoryProperties## Addr##
+                                                                                            ByteArray##
+
+instance Eq VkPhysicalDeviceProtectedMemoryProperties where
+        (VkPhysicalDeviceProtectedMemoryProperties## a _) ==
+          x@(VkPhysicalDeviceProtectedMemoryProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceProtectedMemoryProperties where
+        (VkPhysicalDeviceProtectedMemoryProperties## a _) `compare`
+          x@(VkPhysicalDeviceProtectedMemoryProperties## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkPhysicalDeviceProtectedMemoryProperties
+         where
+        unsafeAddr (VkPhysicalDeviceProtectedMemoryProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceProtectedMemoryProperties## _ b)
+          = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceProtectedMemoryProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePushDescriptorPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePushDescriptorPropertiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePushDescriptorPropertiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDevicePushDescriptorPropertiesKHR.hsc
@@ -5,17 +5,17 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDevicePushDescriptorPropertiesKHR
        (VkPhysicalDevicePushDescriptorPropertiesKHR(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
 --   >     VkStructureType sType;
@@ -23,7 +23,7 @@
 --   >     uint32_t                         maxPushDescriptors;
 --   > } VkPhysicalDevicePushDescriptorPropertiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html VkPhysicalDevicePushDescriptorPropertiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html VkPhysicalDevicePushDescriptorPropertiesKHR registry at www.khronos.org>
 data VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorPropertiesKHR## Addr##
                                                                                                 ByteArray##
 
@@ -83,29 +83,7 @@
         type ReturnedOnly VkPhysicalDevicePushDescriptorPropertiesKHR =
              'False -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDevicePushDescriptorPropertiesKHR =
-             '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDevicePushDescriptorPropertiesKHR where
-        type VkSTypeMType VkPhysicalDevicePushDescriptorPropertiesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
+             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDevicePushDescriptorPropertiesKHR where
@@ -129,42 +107,24 @@
         fieldOffset
           = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
 
-instance CanReadField "sType"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPhysicalDevicePushDescriptorPropertiesKHR
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
 
-instance CanWriteField "sType"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPhysicalDevicePushDescriptorPropertiesKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDevicePushDescriptorPropertiesKHR where
-        type VkPNextMType VkPhysicalDevicePushDescriptorPropertiesKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR where
@@ -188,44 +148,24 @@
         fieldOffset
           = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
 
-instance CanReadField "pNext"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkMaxPushDescriptors VkPhysicalDevicePushDescriptorPropertiesKHR
+         CanWriteField "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR
          where
-        type VkMaxPushDescriptorsMType
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = Word32
-
-        {-# NOINLINE vkMaxPushDescriptors #-}
-        vkMaxPushDescriptors x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors})
-
-        {-# INLINE vkMaxPushDescriptorsByteOffset #-}
-        vkMaxPushDescriptorsByteOffset ~_
-          = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
-
-        {-# INLINE readVkMaxPushDescriptors #-}
-        readVkMaxPushDescriptors p
-          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
-
-        {-# INLINE writeVkMaxPushDescriptors #-}
-        writeVkMaxPushDescriptors p
-          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "maxPushDescriptors"
@@ -252,29 +192,35 @@
         fieldOffset
           = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
 
-instance CanReadField "maxPushDescriptors"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxPushDescriptors"
            VkPhysicalDevicePushDescriptorPropertiesKHR
          where
-        {-# INLINE getField #-}
-        getField = vkMaxPushDescriptors
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors})
 
         {-# INLINE readField #-}
-        readField = readVkMaxPushDescriptors
+        readField p
+          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
 
-instance CanWriteField "maxPushDescriptors"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxPushDescriptors"
            VkPhysicalDevicePushDescriptorPropertiesKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxPushDescriptors
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
 
 instance Show VkPhysicalDevicePushDescriptorPropertiesKHR where
         showsPrec d x
           = showString "VkPhysicalDevicePushDescriptorPropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMaxPushDescriptors = " .
-                            showsPrec d (vkMaxPushDescriptors x) . showChar '}'
+                          showString "maxPushDescriptors = " .
+                            showsPrec d (getField @"maxPushDescriptors" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSampleLocationsPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSampleLocationsPropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSampleLocationsPropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSampleLocationsPropertiesEXT.hsc
@@ -8,23 +8,23 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSampleLocationsPropertiesEXT
        (VkPhysicalDeviceSampleLocationsPropertiesEXT(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
-import           GHC.TypeLits                                                (KnownNat,
-                                                                              natVal') -- ' closing tick for hsc2hs
+import           GHC.TypeLits                                             (KnownNat,
+                                                                           natVal') -- ' closing tick for hsc2hs
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags               (VkSampleCountFlags)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkExtent2D                     (VkExtent2D)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags            (VkSampleCountFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkExtent2D                  (VkExtent2D)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
 --   >     VkStructureType sType;
@@ -36,7 +36,7 @@
 --   >     VkBool32                         variableSampleLocations;
 --   > } VkPhysicalDeviceSampleLocationsPropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html VkPhysicalDeviceSampleLocationsPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html VkPhysicalDeviceSampleLocationsPropertiesEXT registry at www.khronos.org>
 data VkPhysicalDeviceSampleLocationsPropertiesEXT = VkPhysicalDeviceSampleLocationsPropertiesEXT## Addr##
                                                                                                   ByteArray##
 
@@ -99,29 +99,7 @@
         type ReturnedOnly VkPhysicalDeviceSampleLocationsPropertiesEXT =
              'True -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        type VkSTypeMType VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
+             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT where
@@ -145,36 +123,24 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
 
-instance CanReadField "sType"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        type VkPNextMType VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
+         CanWriteField "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT where
@@ -198,39 +164,24 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
 
-instance CanReadField "pNext"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationSampleCounts
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
+         CanWriteField "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        type VkSampleLocationSampleCountsMType
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkSampleCountFlags
-
-        {-# NOINLINE vkSampleLocationSampleCounts #-}
-        vkSampleLocationSampleCounts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts})
-
-        {-# INLINE vkSampleLocationSampleCountsByteOffset #-}
-        vkSampleLocationSampleCountsByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
-
-        {-# INLINE readVkSampleLocationSampleCounts #-}
-        readVkSampleLocationSampleCounts p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
-
-        {-# INLINE writeVkSampleLocationSampleCounts #-}
-        writeVkSampleLocationSampleCounts p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationSampleCounts"
@@ -257,39 +208,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
 
-instance CanReadField "sampleLocationSampleCounts"
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationSampleCounts"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationSampleCounts
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationSampleCounts
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
 
 instance {-# OVERLAPPING #-}
-         HasVkMaxSampleLocationGridSize
+         CanWriteField "sampleLocationSampleCounts"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        type VkMaxSampleLocationGridSizeMType
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkExtent2D
-
-        {-# NOINLINE vkMaxSampleLocationGridSize #-}
-        vkMaxSampleLocationGridSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize})
-
-        {-# INLINE vkMaxSampleLocationGridSizeByteOffset #-}
-        vkMaxSampleLocationGridSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
-
-        {-# INLINE readVkMaxSampleLocationGridSize #-}
-        readVkMaxSampleLocationGridSize p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
-
-        {-# INLINE writeVkMaxSampleLocationGridSize #-}
-        writeVkMaxSampleLocationGridSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
 
 instance {-# OVERLAPPING #-}
          HasField "maxSampleLocationGridSize"
@@ -316,45 +254,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
 
-instance CanReadField "maxSampleLocationGridSize"
+instance {-# OVERLAPPING #-}
+         CanReadField "maxSampleLocationGridSize"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkMaxSampleLocationGridSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize})
 
         {-# INLINE readField #-}
-        readField = readVkMaxSampleLocationGridSize
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
 
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationCoordinateRangeArray
+         CanWriteField "maxSampleLocationGridSize"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        type VkSampleLocationCoordinateRangeArrayMType
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = #{type float}
-
-        {-# NOINLINE vkSampleLocationCoordinateRangeArray #-}
-        vkSampleLocationCoordinateRangeArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}))
-
-        {-# INLINE vkSampleLocationCoordinateRangeArrayByteOffset #-}
-        vkSampleLocationCoordinateRangeArrayByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
-
-        {-# INLINE readVkSampleLocationCoordinateRangeArray #-}
-        readVkSampleLocationCoordinateRangeArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange})
-
-        {-# INLINE writeVkSampleLocationCoordinateRangeArray #-}
-        writeVkSampleLocationCoordinateRangeArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange})
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationCoordinateRange"
@@ -381,7 +300,8 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "sampleLocationCoordinateRange" idx
             VkPhysicalDeviceSampleLocationsPropertiesEXT) =>
          CanReadFieldArray "sampleLocationCoordinateRange" idx
@@ -404,39 +324,47 @@
         fieldArrayLength = 2
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkSampleLocationCoordinateRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
+                      +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkSampleLocationCoordinateRangeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
+                 +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationSubPixelBits
+         (KnownNat idx,
+          IndexInBounds "sampleLocationCoordinateRange" idx
+            VkPhysicalDeviceSampleLocationsPropertiesEXT) =>
+         CanWriteFieldArray "sampleLocationCoordinateRange" idx
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        type VkSampleLocationSubPixelBitsMType
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = Word32
-
-        {-# NOINLINE vkSampleLocationSubPixelBits #-}
-        vkSampleLocationSubPixelBits x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits})
-
-        {-# INLINE vkSampleLocationSubPixelBitsByteOffset #-}
-        vkSampleLocationSubPixelBitsByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "sampleLocationCoordinateRange" 0
+                         VkPhysicalDeviceSampleLocationsPropertiesEXT
+                       #-}
 
-        {-# INLINE readVkSampleLocationSubPixelBits #-}
-        readVkSampleLocationSubPixelBits p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "sampleLocationCoordinateRange" 1
+                         VkPhysicalDeviceSampleLocationsPropertiesEXT
+                       #-}
 
-        {-# INLINE writeVkSampleLocationSubPixelBits #-}
-        writeVkSampleLocationSubPixelBits p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
+                 +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationSubPixelBits"
@@ -463,39 +391,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
 
-instance CanReadField "sampleLocationSubPixelBits"
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationSubPixelBits"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationSubPixelBits
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationSubPixelBits
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
 
 instance {-# OVERLAPPING #-}
-         HasVkVariableSampleLocations
+         CanWriteField "sampleLocationSubPixelBits"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        type VkVariableSampleLocationsMType
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkVariableSampleLocations #-}
-        vkVariableSampleLocations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations})
-
-        {-# INLINE vkVariableSampleLocationsByteOffset #-}
-        vkVariableSampleLocationsByteOffset ~_
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
-
-        {-# INLINE readVkVariableSampleLocations #-}
-        readVkVariableSampleLocations p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
-
-        {-# INLINE writeVkVariableSampleLocations #-}
-        writeVkVariableSampleLocations p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
 
 instance {-# OVERLAPPING #-}
          HasField "variableSampleLocations"
@@ -522,39 +437,65 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
 
-instance CanReadField "variableSampleLocations"
+instance {-# OVERLAPPING #-}
+         CanReadField "variableSampleLocations"
            VkPhysicalDeviceSampleLocationsPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkVariableSampleLocations
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations})
 
         {-# INLINE readField #-}
-        readField = readVkVariableSampleLocations
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSampleLocationSampleCounts = " .
-                            showsPrec d (vkSampleLocationSampleCounts x) .
+                          showString "sampleLocationSampleCounts = " .
+                            showsPrec d (getField @"sampleLocationSampleCounts" x) .
                               showString ", " .
-                                showString "vkMaxSampleLocationGridSize = " .
-                                  showsPrec d (vkMaxSampleLocationGridSize x) .
+                                showString "maxSampleLocationGridSize = " .
+                                  showsPrec d (getField @"maxSampleLocationGridSize" x) .
                                     showString ", " .
-                                      showString "vkSampleLocationCoordinateRangeArray = [" .
-                                        showsPrec d
-                                          (map (vkSampleLocationCoordinateRangeArray x) [1 .. 2])
-                                          .
-                                          showChar ']' .
-                                            showString ", " .
-                                              showString "vkSampleLocationSubPixelBits = " .
-                                                showsPrec d (vkSampleLocationSubPixelBits x) .
-                                                  showString ", " .
-                                                    showString "vkVariableSampleLocations = " .
-                                                      showsPrec d (vkVariableSampleLocations x) .
-                                                        showChar '}'
+                                      (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
        (VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(..)) where
-import           Foreign.Storable                                            (Storable (..))
+import           Foreign.Storable                                         (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR (VkPhysicalDeviceProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
 --   >     VkStructureType sType;
@@ -25,7 +25,7 @@
 --   >     VkBool32               filterMinmaxImageComponentMapping;
 --   > } VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT registry at www.khronos.org>
 data VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT## Addr##
                                                                                                           ByteArray##
 
@@ -90,29 +90,7 @@
         type ReturnedOnly VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
              = 'True -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT where
-        type VkSTypeMType VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
+             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
@@ -138,36 +116,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT where
-        type VkPNextMType VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
+         CanWriteField "sType"
+           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
@@ -193,39 +161,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkFilterMinmaxSingleComponentFormats
+         CanWriteField "pNext"
            VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
          where
-        type VkFilterMinmaxSingleComponentFormatsMType
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkFilterMinmaxSingleComponentFormats #-}
-        vkFilterMinmaxSingleComponentFormats x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats})
-
-        {-# INLINE vkFilterMinmaxSingleComponentFormatsByteOffset #-}
-        vkFilterMinmaxSingleComponentFormatsByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
-
-        {-# INLINE readVkFilterMinmaxSingleComponentFormats #-}
-        readVkFilterMinmaxSingleComponentFormats p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
-
-        {-# INLINE writeVkFilterMinmaxSingleComponentFormats #-}
-        writeVkFilterMinmaxSingleComponentFormats p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "filterMinmaxSingleComponentFormats"
@@ -252,39 +207,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
 
-instance CanReadField "filterMinmaxSingleComponentFormats"
+instance {-# OVERLAPPING #-}
+         CanReadField "filterMinmaxSingleComponentFormats"
            VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkFilterMinmaxSingleComponentFormats
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats})
 
         {-# INLINE readField #-}
-        readField = readVkFilterMinmaxSingleComponentFormats
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
 
 instance {-# OVERLAPPING #-}
-         HasVkFilterMinmaxImageComponentMapping
+         CanWriteField "filterMinmaxSingleComponentFormats"
            VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
          where
-        type VkFilterMinmaxImageComponentMappingMType
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = VkBool32
-
-        {-# NOINLINE vkFilterMinmaxImageComponentMapping #-}
-        vkFilterMinmaxImageComponentMapping x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping})
-
-        {-# INLINE vkFilterMinmaxImageComponentMappingByteOffset #-}
-        vkFilterMinmaxImageComponentMappingByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
-
-        {-# INLINE readVkFilterMinmaxImageComponentMapping #-}
-        readVkFilterMinmaxImageComponentMapping p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
-
-        {-# INLINE writeVkFilterMinmaxImageComponentMapping #-}
-        writeVkFilterMinmaxImageComponentMapping p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
 
 instance {-# OVERLAPPING #-}
          HasField "filterMinmaxImageComponentMapping"
@@ -311,27 +253,40 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
 
-instance CanReadField "filterMinmaxImageComponentMapping"
+instance {-# OVERLAPPING #-}
+         CanReadField "filterMinmaxImageComponentMapping"
            VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
          where
-        {-# INLINE getField #-}
-        getField = vkFilterMinmaxImageComponentMapping
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping})
 
         {-# INLINE readField #-}
-        readField = readVkFilterMinmaxImageComponentMapping
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFilterMinmaxSingleComponentFormats = " .
-                            showsPrec d (vkFilterMinmaxSingleComponentFormats x) .
+                          showString "filterMinmaxSingleComponentFormats = " .
+                            showsPrec d (getField @"filterMinmaxSingleComponentFormats" x) .
                               showString ", " .
-                                showString "vkFilterMinmaxImageComponentMapping = " .
-                                  showsPrec d (vkFilterMinmaxImageComponentMapping x) . showChar '}'
+                                showString "filterMinmaxImageComponentMapping = " .
+                                  showsPrec d (getField @"filterMinmaxImageComponentMapping" x) .
+                                    showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeatures.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeatures.hsc
@@ -0,0 +1,237 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeatures
+       (VkPhysicalDeviceSamplerYcbcrConversionFeatures(..)) where
+import           Foreign.Storable                                       (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo        (VkDeviceCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
+--   >     VkStructureType sType;
+--   >     void*      pNext;
+--   >     VkBool32                         samplerYcbcrConversion;
+--   > } VkPhysicalDeviceSamplerYcbcrConversionFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html VkPhysicalDeviceSamplerYcbcrConversionFeatures registry at www.khronos.org>
+data VkPhysicalDeviceSamplerYcbcrConversionFeatures = VkPhysicalDeviceSamplerYcbcrConversionFeatures## Addr##
+                                                                                                      ByteArray##
+
+instance Eq VkPhysicalDeviceSamplerYcbcrConversionFeatures where
+        (VkPhysicalDeviceSamplerYcbcrConversionFeatures## a _) ==
+          x@(VkPhysicalDeviceSamplerYcbcrConversionFeatures## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceSamplerYcbcrConversionFeatures where
+        (VkPhysicalDeviceSamplerYcbcrConversionFeatures## a _) `compare`
+          x@(VkPhysicalDeviceSamplerYcbcrConversionFeatures## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkPhysicalDeviceSamplerYcbcrConversionFeatures
+         where
+        unsafeAddr (VkPhysicalDeviceSamplerYcbcrConversionFeatures## a _)
+          = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray
+          (VkPhysicalDeviceSamplerYcbcrConversionFeatures## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceSamplerYcbcrConversionFeatures##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
+       (VkPhysicalDeviceSamplerYcbcrConversionFeatures(..),
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeatures
+                                                                                              (VkPhysicalDeviceSamplerYcbcrConversionFeatures (..))
+
+-- | Alias for `VkPhysicalDeviceSamplerYcbcrConversionFeatures`
+type VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
+     VkPhysicalDeviceSamplerYcbcrConversionFeatures
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.hsc
+++ /dev/null
@@ -1,294 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-       (VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR(..)) where
-import           Foreign.Storable                                          (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                           (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo           (VkDeviceCreateInfo)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR (VkPhysicalDeviceFeatures2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR {
---   >     VkStructureType sType;
---   >     void*      pNext;
---   >     VkBool32                         samplerYcbcrConversion;
---   > } VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR registry at www.khronos.org>
-data VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## Addr##
-                                                                                                            ByteArray##
-
-instance Eq VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR where
-        (VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## a _) ==
-          x@(VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        (VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## a _) `compare`
-          x@(VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        unsafeAddr (VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## a _)
-          = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray
-          (VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        type StructFields VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = '["sType", "pNext", "samplerYcbcrConversion"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = '[VkPhysicalDeviceFeatures2KHR, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR where
-        type VkSTypeMType VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR where
-        type VkPNextMType VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkSamplerYcbcrConversion
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        type VkSamplerYcbcrConversionMType
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkSamplerYcbcrConversion #-}
-        vkSamplerYcbcrConversion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, samplerYcbcrConversion})
-
-        {-# INLINE vkSamplerYcbcrConversionByteOffset #-}
-        vkSamplerYcbcrConversionByteOffset ~_
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, samplerYcbcrConversion}
-
-        {-# INLINE readVkSamplerYcbcrConversion #-}
-        readVkSamplerYcbcrConversion p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, samplerYcbcrConversion}
-
-        {-# INLINE writeVkSamplerYcbcrConversion #-}
-        writeVkSamplerYcbcrConversion p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, samplerYcbcrConversion}
-
-instance {-# OVERLAPPING #-}
-         HasField "samplerYcbcrConversion"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        type FieldType "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = VkBool32
-        type FieldOptional "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, samplerYcbcrConversion}
-        type FieldIsArray "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR, samplerYcbcrConversion}
-
-instance CanReadField "samplerYcbcrConversion"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSamplerYcbcrConversion
-
-        {-# INLINE readField #-}
-        readField = readVkSamplerYcbcrConversion
-
-instance CanWriteField "samplerYcbcrConversion"
-           VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSamplerYcbcrConversion
-
-instance Show VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
-         where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR {"
-              .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkSamplerYcbcrConversion = " .
-                            showsPrec d (vkSamplerYcbcrConversion x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceShaderDrawParameterFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceShaderDrawParameterFeatures.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceShaderDrawParameterFeatures.hsc
@@ -0,0 +1,227 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceShaderDrawParameterFeatures
+       (VkPhysicalDeviceShaderDrawParameterFeatures(..)) where
+import           Foreign.Storable                                       (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceShaderDrawParameterFeatures {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         shaderDrawParameters;
+--   > } VkPhysicalDeviceShaderDrawParameterFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html VkPhysicalDeviceShaderDrawParameterFeatures registry at www.khronos.org>
+data VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParameterFeatures## Addr##
+                                                                                                ByteArray##
+
+instance Eq VkPhysicalDeviceShaderDrawParameterFeatures where
+        (VkPhysicalDeviceShaderDrawParameterFeatures## a _) ==
+          x@(VkPhysicalDeviceShaderDrawParameterFeatures## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceShaderDrawParameterFeatures where
+        (VkPhysicalDeviceShaderDrawParameterFeatures## a _) `compare`
+          x@(VkPhysicalDeviceShaderDrawParameterFeatures## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkPhysicalDeviceShaderDrawParameterFeatures
+         where
+        unsafeAddr (VkPhysicalDeviceShaderDrawParameterFeatures## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceShaderDrawParameterFeatures## _ b)
+          = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceShaderDrawParameterFeatures##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2.hsc
@@ -0,0 +1,359 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2
+       (VkPhysicalDeviceSparseImageFormatInfo2(..)) where
+import           Foreign.Storable                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkFormat           (VkFormat)
+import           Graphics.Vulkan.Types.Enum.VkImageTiling      (VkImageTiling)
+import           Graphics.Vulkan.Types.Enum.VkImageType        (VkImageType)
+import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags  (VkImageUsageFlags)
+import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags (VkSampleCountFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
+import           System.IO.Unsafe                              (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html VkPhysicalDeviceSparseImageFormatInfo2 registry at www.khronos.org>
+data VkPhysicalDeviceSparseImageFormatInfo2 = VkPhysicalDeviceSparseImageFormatInfo2## Addr##
+                                                                                      ByteArray##
+
+instance Eq VkPhysicalDeviceSparseImageFormatInfo2 where
+        (VkPhysicalDeviceSparseImageFormatInfo2## a _) ==
+          x@(VkPhysicalDeviceSparseImageFormatInfo2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceSparseImageFormatInfo2 where
+        (VkPhysicalDeviceSparseImageFormatInfo2## a _) `compare`
+          x@(VkPhysicalDeviceSparseImageFormatInfo2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceSparseImageFormatInfo2
+         where
+        unsafeAddr (VkPhysicalDeviceSparseImageFormatInfo2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceSparseImageFormatInfo2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceSparseImageFormatInfo2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2KHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2KHR
+       (VkPhysicalDeviceSparseImageFormatInfo2(..),
+        VkPhysicalDeviceSparseImageFormatInfo2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2
+                                                                                      (VkPhysicalDeviceSparseImageFormatInfo2 (..))
+
+-- | Alias for `VkPhysicalDeviceSparseImageFormatInfo2`
+type VkPhysicalDeviceSparseImageFormatInfo2KHR =
+     VkPhysicalDeviceSparseImageFormatInfo2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseImageFormatInfo2KHR.hsc
+++ /dev/null
@@ -1,517 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2KHR
-       (VkPhysicalDeviceSparseImageFormatInfo2KHR(..)) where
-import           Foreign.Storable                              (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkFormat           (VkFormat)
-import           Graphics.Vulkan.Types.Enum.VkImageTiling      (VkImageTiling)
-import           Graphics.Vulkan.Types.Enum.VkImageType        (VkImageType)
-import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags  (VkImageUsageFlags)
-import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags (VkSampleCountFlagBits)
-import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceSparseImageFormatInfo2KHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkFormat                         format;
---   >     VkImageType                      type;
---   >     VkSampleCountFlagBits            samples;
---   >     VkImageUsageFlags                usage;
---   >     VkImageTiling                    tiling;
---   > } VkPhysicalDeviceSparseImageFormatInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html VkPhysicalDeviceSparseImageFormatInfo2KHR registry at www.khronos.org>
-data VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2KHR## Addr##
-                                                                                            ByteArray##
-
-instance Eq VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        (VkPhysicalDeviceSparseImageFormatInfo2KHR## a _) ==
-          x@(VkPhysicalDeviceSparseImageFormatInfo2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        (VkPhysicalDeviceSparseImageFormatInfo2KHR## a _) `compare`
-          x@(VkPhysicalDeviceSparseImageFormatInfo2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceSparseImageFormatInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSparseImageFormatInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        unsafeAddr (VkPhysicalDeviceSparseImageFormatInfo2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceSparseImageFormatInfo2KHR## _ b)
-          = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceSparseImageFormatInfo2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        type StructFields VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             '["sType", "pNext", "format", "type", "samples", "usage", "tiling"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceSparseImageFormatInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSparseImageFormatInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkSTypeMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "sType" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkPNextMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "pNext" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFormat VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkFormatMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "format" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkFormat
-        type FieldOptional "format"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, format}
-        type FieldIsArray "format"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, format}
-
-instance CanReadField "format"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFormat
-
-        {-# INLINE readField #-}
-        readField = readVkFormat
-
-instance CanWriteField "format"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-}
-         HasVkType VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkTypeMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkImageType
-
-        {-# NOINLINE vkType #-}
-        vkType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, type})
-
-        {-# INLINE vkTypeByteOffset #-}
-        vkTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, type}
-
-        {-# INLINE readVkType #-}
-        readVkType p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, type}
-
-        {-# INLINE writeVkType #-}
-        writeVkType p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "type" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkImageType
-        type FieldOptional "type" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, type}
-        type FieldIsArray "type" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, type}
-
-instance CanReadField "type"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkType
-
-        {-# INLINE readField #-}
-        readField = readVkType
-
-instance CanWriteField "type"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkType
-
-instance {-# OVERLAPPING #-}
-         HasVkSamples VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkSamplesMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkSampleCountFlagBits
-
-        {-# NOINLINE vkSamples #-}
-        vkSamples x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, samples})
-
-        {-# INLINE vkSamplesByteOffset #-}
-        vkSamplesByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, samples}
-
-        {-# INLINE readVkSamples #-}
-        readVkSamples p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, samples}
-
-        {-# INLINE writeVkSamples #-}
-        writeVkSamples p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "samples" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "samples" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = VkSampleCountFlagBits
-        type FieldOptional "samples"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samples"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, samples}
-        type FieldIsArray "samples"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, samples}
-
-instance CanReadField "samples"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSamples
-
-        {-# INLINE readField #-}
-        readField = readVkSamples
-
-instance CanWriteField "samples"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSamples
-
-instance {-# OVERLAPPING #-}
-         HasVkUsage VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkUsageMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkImageUsageFlags
-
-        {-# NOINLINE vkUsage #-}
-        vkUsage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, usage})
-
-        {-# INLINE vkUsageByteOffset #-}
-        vkUsageByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, usage}
-
-        {-# INLINE readVkUsage #-}
-        readVkUsage p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, usage}
-
-        {-# INLINE writeVkUsage #-}
-        writeVkUsage p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "usage" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkImageUsageFlags
-        type FieldOptional "usage"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, usage}
-        type FieldIsArray "usage" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, usage}
-
-instance CanReadField "usage"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkUsage
-
-        {-# INLINE readField #-}
-        readField = readVkUsage
-
-instance CanWriteField "usage"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkUsage
-
-instance {-# OVERLAPPING #-}
-         HasVkTiling VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type VkTilingMType VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkImageTiling
-
-        {-# NOINLINE vkTiling #-}
-        vkTiling x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, tiling})
-
-        {-# INLINE vkTilingByteOffset #-}
-        vkTilingByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, tiling}
-
-        {-# INLINE readVkTiling #-}
-        readVkTiling p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, tiling}
-
-        {-# INLINE writeVkTiling #-}
-        writeVkTiling p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, tiling}
-
-instance {-# OVERLAPPING #-}
-         HasField "tiling" VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        type FieldType "tiling" VkPhysicalDeviceSparseImageFormatInfo2KHR =
-             VkImageTiling
-        type FieldOptional "tiling"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tiling" VkPhysicalDeviceSparseImageFormatInfo2KHR
-             =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, tiling}
-        type FieldIsArray "tiling"
-               VkPhysicalDeviceSparseImageFormatInfo2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2KHR, tiling}
-
-instance CanReadField "tiling"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkTiling
-
-        {-# INLINE readField #-}
-        readField = readVkTiling
-
-instance CanWriteField "tiling"
-           VkPhysicalDeviceSparseImageFormatInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTiling
-
-instance Show VkPhysicalDeviceSparseImageFormatInfo2KHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSparseImageFormatInfo2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFormat = " .
-                            showsPrec d (vkFormat x) .
-                              showString ", " .
-                                showString "vkType = " .
-                                  showsPrec d (vkType x) .
-                                    showString ", " .
-                                      showString "vkSamples = " .
-                                        showsPrec d (vkSamples x) .
-                                          showString ", " .
-                                            showString "vkUsage = " .
-                                              showsPrec d (vkUsage x) .
-                                                showString ", " .
-                                                  showString "vkTiling = " .
-                                                    showsPrec d (vkTiling x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSparseProperties.hsc
@@ -5,16 +5,16 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
        (VkPhysicalDeviceSparseProperties(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes     (VkBool32)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes  (VkBool32)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceSparseProperties {
 --   >     VkBool32               residencyStandard2DBlockShape;
@@ -24,7 +24,7 @@
 --   >     VkBool32               residencyNonResidentStrict;
 --   > } VkPhysicalDeviceSparseProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceSparseProperties.html VkPhysicalDeviceSparseProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceSparseProperties.html VkPhysicalDeviceSparseProperties registry at www.khronos.org>
 data VkPhysicalDeviceSparseProperties = VkPhysicalDeviceSparseProperties## Addr##
                                                                           ByteArray##
 
@@ -82,30 +82,6 @@
         type StructExtends VkPhysicalDeviceSparseProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkResidencyStandard2DBlockShape VkPhysicalDeviceSparseProperties
-         where
-        type VkResidencyStandard2DBlockShapeMType
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-
-        {-# NOINLINE vkResidencyStandard2DBlockShape #-}
-        vkResidencyStandard2DBlockShape x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape})
-
-        {-# INLINE vkResidencyStandard2DBlockShapeByteOffset #-}
-        vkResidencyStandard2DBlockShapeByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-
-        {-# INLINE readVkResidencyStandard2DBlockShape #-}
-        readVkResidencyStandard2DBlockShape p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-
-        {-# INLINE writeVkResidencyStandard2DBlockShape #-}
-        writeVkResidencyStandard2DBlockShape p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-
-instance {-# OVERLAPPING #-}
          HasField "residencyStandard2DBlockShape"
            VkPhysicalDeviceSparseProperties
          where
@@ -130,39 +106,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
 
-instance CanReadField "residencyStandard2DBlockShape"
+instance {-# OVERLAPPING #-}
+         CanReadField "residencyStandard2DBlockShape"
            VkPhysicalDeviceSparseProperties
          where
-        {-# INLINE getField #-}
-        getField = vkResidencyStandard2DBlockShape
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape})
 
         {-# INLINE readField #-}
-        readField = readVkResidencyStandard2DBlockShape
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
 
 instance {-# OVERLAPPING #-}
-         HasVkResidencyStandard2DMultisampleBlockShape
+         CanWriteField "residencyStandard2DBlockShape"
            VkPhysicalDeviceSparseProperties
          where
-        type VkResidencyStandard2DMultisampleBlockShapeMType
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-
-        {-# NOINLINE vkResidencyStandard2DMultisampleBlockShape #-}
-        vkResidencyStandard2DMultisampleBlockShape x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape})
-
-        {-# INLINE vkResidencyStandard2DMultisampleBlockShapeByteOffset #-}
-        vkResidencyStandard2DMultisampleBlockShapeByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
-
-        {-# INLINE readVkResidencyStandard2DMultisampleBlockShape #-}
-        readVkResidencyStandard2DMultisampleBlockShape p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
-
-        {-# INLINE writeVkResidencyStandard2DMultisampleBlockShape #-}
-        writeVkResidencyStandard2DMultisampleBlockShape p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
 
 instance {-# OVERLAPPING #-}
          HasField "residencyStandard2DMultisampleBlockShape"
@@ -189,38 +152,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
 
-instance CanReadField "residencyStandard2DMultisampleBlockShape"
+instance {-# OVERLAPPING #-}
+         CanReadField "residencyStandard2DMultisampleBlockShape"
            VkPhysicalDeviceSparseProperties
          where
-        {-# INLINE getField #-}
-        getField = vkResidencyStandard2DMultisampleBlockShape
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape})
 
         {-# INLINE readField #-}
-        readField = readVkResidencyStandard2DMultisampleBlockShape
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
 
 instance {-# OVERLAPPING #-}
-         HasVkResidencyStandard3DBlockShape VkPhysicalDeviceSparseProperties
+         CanWriteField "residencyStandard2DMultisampleBlockShape"
+           VkPhysicalDeviceSparseProperties
          where
-        type VkResidencyStandard3DBlockShapeMType
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-
-        {-# NOINLINE vkResidencyStandard3DBlockShape #-}
-        vkResidencyStandard3DBlockShape x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape})
-
-        {-# INLINE vkResidencyStandard3DBlockShapeByteOffset #-}
-        vkResidencyStandard3DBlockShapeByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
-
-        {-# INLINE readVkResidencyStandard3DBlockShape #-}
-        readVkResidencyStandard3DBlockShape p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
-
-        {-# INLINE writeVkResidencyStandard3DBlockShape #-}
-        writeVkResidencyStandard3DBlockShape p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
 
 instance {-# OVERLAPPING #-}
          HasField "residencyStandard3DBlockShape"
@@ -247,37 +198,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
 
-instance CanReadField "residencyStandard3DBlockShape"
+instance {-# OVERLAPPING #-}
+         CanReadField "residencyStandard3DBlockShape"
            VkPhysicalDeviceSparseProperties
          where
-        {-# INLINE getField #-}
-        getField = vkResidencyStandard3DBlockShape
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape})
 
         {-# INLINE readField #-}
-        readField = readVkResidencyStandard3DBlockShape
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
 
 instance {-# OVERLAPPING #-}
-         HasVkResidencyAlignedMipSize VkPhysicalDeviceSparseProperties where
-        type VkResidencyAlignedMipSizeMType
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-
-        {-# NOINLINE vkResidencyAlignedMipSize #-}
-        vkResidencyAlignedMipSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize})
-
-        {-# INLINE vkResidencyAlignedMipSizeByteOffset #-}
-        vkResidencyAlignedMipSizeByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
-
-        {-# INLINE readVkResidencyAlignedMipSize #-}
-        readVkResidencyAlignedMipSize p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
-
-        {-# INLINE writeVkResidencyAlignedMipSize #-}
-        writeVkResidencyAlignedMipSize p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
+         CanWriteField "residencyStandard3DBlockShape"
+           VkPhysicalDeviceSparseProperties
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
 
 instance {-# OVERLAPPING #-}
          HasField "residencyAlignedMipSize" VkPhysicalDeviceSparseProperties
@@ -303,38 +243,26 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
 
-instance CanReadField "residencyAlignedMipSize"
+instance {-# OVERLAPPING #-}
+         CanReadField "residencyAlignedMipSize"
            VkPhysicalDeviceSparseProperties
          where
-        {-# INLINE getField #-}
-        getField = vkResidencyAlignedMipSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize})
 
         {-# INLINE readField #-}
-        readField = readVkResidencyAlignedMipSize
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
 
 instance {-# OVERLAPPING #-}
-         HasVkResidencyNonResidentStrict VkPhysicalDeviceSparseProperties
+         CanWriteField "residencyAlignedMipSize"
+           VkPhysicalDeviceSparseProperties
          where
-        type VkResidencyNonResidentStrictMType
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-
-        {-# NOINLINE vkResidencyNonResidentStrict #-}
-        vkResidencyNonResidentStrict x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict})
-
-        {-# INLINE vkResidencyNonResidentStrictByteOffset #-}
-        vkResidencyNonResidentStrictByteOffset ~_
-          = #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
-
-        {-# INLINE readVkResidencyNonResidentStrict #-}
-        readVkResidencyNonResidentStrict p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
-
-        {-# INLINE writeVkResidencyNonResidentStrict #-}
-        writeVkResidencyNonResidentStrict p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
 
 instance {-# OVERLAPPING #-}
          HasField "residencyNonResidentStrict"
@@ -361,29 +289,44 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
 
-instance CanReadField "residencyNonResidentStrict"
+instance {-# OVERLAPPING #-}
+         CanReadField "residencyNonResidentStrict"
            VkPhysicalDeviceSparseProperties
          where
-        {-# INLINE getField #-}
-        getField = vkResidencyNonResidentStrict
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict})
 
         {-# INLINE readField #-}
-        readField = readVkResidencyNonResidentStrict
+        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 "vkResidencyStandard2DBlockShape = " .
-                showsPrec d (vkResidencyStandard2DBlockShape x) .
+              showString "residencyStandard2DBlockShape = " .
+                showsPrec d (getField @"residencyStandard2DBlockShape" x) .
                   showString ", " .
-                    showString "vkResidencyStandard2DMultisampleBlockShape = " .
-                      showsPrec d (vkResidencyStandard2DMultisampleBlockShape x) .
+                    showString "residencyStandard2DMultisampleBlockShape = " .
+                      showsPrec d
+                        (getField @"residencyStandard2DMultisampleBlockShape" x)
+                        .
                         showString ", " .
-                          showString "vkResidencyStandard3DBlockShape = " .
-                            showsPrec d (vkResidencyStandard3DBlockShape x) .
+                          showString "residencyStandard3DBlockShape = " .
+                            showsPrec d (getField @"residencyStandard3DBlockShape" x) .
                               showString ", " .
-                                showString "vkResidencyAlignedMipSize = " .
-                                  showsPrec d (vkResidencyAlignedMipSize x) .
+                                showString "residencyAlignedMipSize = " .
+                                  showsPrec d (getField @"residencyAlignedMipSize" x) .
                                     showString ", " .
-                                      showString "vkResidencyNonResidentStrict = " .
-                                        showsPrec d (vkResidencyNonResidentStrict x) . showChar '}'
+                                      showString "residencyNonResidentStrict = " .
+                                        showsPrec d (getField @"residencyNonResidentStrict" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSubgroupProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSubgroupProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSubgroupProperties.hsc
@@ -0,0 +1,349 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSubgroupProperties
+       (VkPhysicalDeviceSubgroupProperties(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags            (VkShaderStageFlags)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Enum.VkSubgroupFeatureFlags        (VkSubgroupFeatureFlags)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPhysicalDeviceSubgroupProperties.html VkPhysicalDeviceSubgroupProperties registry at www.khronos.org>
+data VkPhysicalDeviceSubgroupProperties = VkPhysicalDeviceSubgroupProperties## Addr##
+                                                                              ByteArray##
+
+instance Eq VkPhysicalDeviceSubgroupProperties where
+        (VkPhysicalDeviceSubgroupProperties## a _) ==
+          x@(VkPhysicalDeviceSubgroupProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceSubgroupProperties where
+        (VkPhysicalDeviceSubgroupProperties## a _) `compare`
+          x@(VkPhysicalDeviceSubgroupProperties## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceSubgroupProperties where
+        unsafeAddr (VkPhysicalDeviceSubgroupProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceSubgroupProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceSubgroupProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSurfaceInfo2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSurfaceInfo2KHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSurfaceInfo2KHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceSurfaceInfo2KHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSurfaceInfo2KHR
        (VkPhysicalDeviceSurfaceInfo2KHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkSurfaceKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
@@ -23,7 +23,7 @@
 --   >     VkSurfaceKHR surface;
 --   > } VkPhysicalDeviceSurfaceInfo2KHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html VkPhysicalDeviceSurfaceInfo2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html VkPhysicalDeviceSurfaceInfo2KHR registry at www.khronos.org>
 data VkPhysicalDeviceSurfaceInfo2KHR = VkPhysicalDeviceSurfaceInfo2KHR## Addr##
                                                                         ByteArray##
 
@@ -77,27 +77,6 @@
         type StructExtends VkPhysicalDeviceSurfaceInfo2KHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceSurfaceInfo2KHR where
-        type VkSTypeMType VkPhysicalDeviceSurfaceInfo2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
         type FieldType "sType" VkPhysicalDeviceSurfaceInfo2KHR =
              VkStructureType
@@ -113,38 +92,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
 
-instance CanReadField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPhysicalDeviceSurfaceInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceSurfaceInfo2KHR where
-        type VkPNextMType VkPhysicalDeviceSurfaceInfo2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
@@ -161,38 +124,22 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
 
-instance CanReadField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPhysicalDeviceSurfaceInfo2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSurface VkPhysicalDeviceSurfaceInfo2KHR where
-        type VkSurfaceMType VkPhysicalDeviceSurfaceInfo2KHR = VkSurfaceKHR
-
-        {-# NOINLINE vkSurface #-}
-        vkSurface x
+         CanReadField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface})
-
-        {-# INLINE vkSurfaceByteOffset #-}
-        vkSurfaceByteOffset ~_
-          = #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext})
 
-        {-# INLINE readVkSurface #-}
-        readVkSurface p
-          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
 
-        {-# INLINE writeVkSurface #-}
-        writeVkSurface p
-          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "surface" VkPhysicalDeviceSurfaceInfo2KHR where
@@ -212,27 +159,31 @@
         fieldOffset
           = #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
 
-instance CanReadField "surface" VkPhysicalDeviceSurfaceInfo2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSurface
+instance {-# OVERLAPPING #-}
+         CanReadField "surface" VkPhysicalDeviceSurfaceInfo2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface})
 
         {-# INLINE readField #-}
-        readField = readVkSurface
+        readField p
+          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
 
-instance CanWriteField "surface" VkPhysicalDeviceSurfaceInfo2KHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "surface" VkPhysicalDeviceSurfaceInfo2KHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSurface
+        writeField p
+          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
 
 instance Show VkPhysicalDeviceSurfaceInfo2KHR where
         showsPrec d x
           = showString "VkPhysicalDeviceSurfaceInfo2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSurface = " .
-                            showsPrec d (vkSurface x) . showChar '}'
+                          showString "surface = " .
+                            showsPrec d (getField @"surface" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeatures.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeatures.hsc
@@ -0,0 +1,262 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeatures
+       (VkPhysicalDeviceVariablePointerFeatures(..)) where
+import           Foreign.Storable                                       (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                        (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo        (VkDeviceCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2 (VkPhysicalDeviceFeatures2)
+import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceVariablePointerFeatures {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         variablePointersStorageBuffer;
+--   >     VkBool32                         variablePointers;
+--   > } VkPhysicalDeviceVariablePointerFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceVariablePointerFeatures.html VkPhysicalDeviceVariablePointerFeatures registry at www.khronos.org>
+data VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointerFeatures## Addr##
+                                                                                        ByteArray##
+
+instance Eq VkPhysicalDeviceVariablePointerFeatures where
+        (VkPhysicalDeviceVariablePointerFeatures## a _) ==
+          x@(VkPhysicalDeviceVariablePointerFeatures## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceVariablePointerFeatures where
+        (VkPhysicalDeviceVariablePointerFeatures## a _) `compare`
+          x@(VkPhysicalDeviceVariablePointerFeatures## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkPhysicalDeviceVariablePointerFeatures
+         where
+        unsafeAddr (VkPhysicalDeviceVariablePointerFeatures## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkPhysicalDeviceVariablePointerFeatures## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceVariablePointerFeatures##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeaturesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeaturesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeaturesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeaturesKHR
+       (VkPhysicalDeviceVariablePointerFeatures(..),
+        VkPhysicalDeviceVariablePointerFeaturesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeatures
+                                                                                       (VkPhysicalDeviceVariablePointerFeatures (..))
+
+-- | Alias for `VkPhysicalDeviceVariablePointerFeatures`
+type VkPhysicalDeviceVariablePointerFeaturesKHR =
+     VkPhysicalDeviceVariablePointerFeatures
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeaturesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeaturesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVariablePointerFeaturesKHR.hsc
+++ /dev/null
@@ -1,349 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeaturesKHR
-       (VkPhysicalDeviceVariablePointerFeaturesKHR(..)) where
-import           Foreign.Storable                                          (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                           (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo           (VkDeviceCreateInfo)
-import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR (VkPhysicalDeviceFeatures2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceVariablePointerFeaturesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         variablePointersStorageBuffer;
---   >     VkBool32                         variablePointers;
---   > } VkPhysicalDeviceVariablePointerFeaturesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html VkPhysicalDeviceVariablePointerFeaturesKHR registry at www.khronos.org>
-data VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointerFeaturesKHR## Addr##
-                                                                                              ByteArray##
-
-instance Eq VkPhysicalDeviceVariablePointerFeaturesKHR where
-        (VkPhysicalDeviceVariablePointerFeaturesKHR## a _) ==
-          x@(VkPhysicalDeviceVariablePointerFeaturesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceVariablePointerFeaturesKHR where
-        (VkPhysicalDeviceVariablePointerFeaturesKHR## a _) `compare`
-          x@(VkPhysicalDeviceVariablePointerFeaturesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceVariablePointerFeaturesKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceVariablePointerFeaturesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceVariablePointerFeaturesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        unsafeAddr (VkPhysicalDeviceVariablePointerFeaturesKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkPhysicalDeviceVariablePointerFeaturesKHR## _ b)
-          = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPhysicalDeviceVariablePointerFeaturesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        type StructFields VkPhysicalDeviceVariablePointerFeaturesKHR =
-             '["sType", "pNext", "variablePointersStorageBuffer", -- ' closing tick for hsc2hs
-               "variablePointers"]
-        type CUnionType VkPhysicalDeviceVariablePointerFeaturesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceVariablePointerFeaturesKHR =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceVariablePointerFeaturesKHR =
-             '[VkPhysicalDeviceFeatures2KHR, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPhysicalDeviceVariablePointerFeaturesKHR where
-        type VkSTypeMType VkPhysicalDeviceVariablePointerFeaturesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceVariablePointerFeaturesKHR where
-        type FieldType "sType" VkPhysicalDeviceVariablePointerFeaturesKHR =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceVariablePointerFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, sType}
-
-instance CanReadField "sType"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPhysicalDeviceVariablePointerFeaturesKHR where
-        type VkPNextMType VkPhysicalDeviceVariablePointerFeaturesKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceVariablePointerFeaturesKHR where
-        type FieldType "pNext" VkPhysicalDeviceVariablePointerFeaturesKHR =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceVariablePointerFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkVariablePointersStorageBuffer
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        type VkVariablePointersStorageBufferMType
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkVariablePointersStorageBuffer #-}
-        vkVariablePointersStorageBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointersStorageBuffer})
-
-        {-# INLINE vkVariablePointersStorageBufferByteOffset #-}
-        vkVariablePointersStorageBufferByteOffset ~_
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointersStorageBuffer}
-
-        {-# INLINE readVkVariablePointersStorageBuffer #-}
-        readVkVariablePointersStorageBuffer p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointersStorageBuffer}
-
-        {-# INLINE writeVkVariablePointersStorageBuffer #-}
-        writeVkVariablePointersStorageBuffer p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointersStorageBuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "variablePointersStorageBuffer"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        type FieldType "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = VkBool32
-        type FieldOptional "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointersStorageBuffer}
-        type FieldIsArray "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointersStorageBuffer}
-
-instance CanReadField "variablePointersStorageBuffer"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkVariablePointersStorageBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkVariablePointersStorageBuffer
-
-instance CanWriteField "variablePointersStorageBuffer"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVariablePointersStorageBuffer
-
-instance {-# OVERLAPPING #-}
-         HasVkVariablePointers VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        type VkVariablePointersMType
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = VkBool32
-
-        {-# NOINLINE vkVariablePointers #-}
-        vkVariablePointers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointers})
-
-        {-# INLINE vkVariablePointersByteOffset #-}
-        vkVariablePointersByteOffset ~_
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointers}
-
-        {-# INLINE readVkVariablePointers #-}
-        readVkVariablePointers p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointers}
-
-        {-# INLINE writeVkVariablePointers #-}
-        writeVkVariablePointers p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointers}
-
-instance {-# OVERLAPPING #-}
-         HasField "variablePointers"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        type FieldType "variablePointers"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = VkBool32
-        type FieldOptional "variablePointers"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "variablePointers"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             =
-             #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointers}
-        type FieldIsArray "variablePointers"
-               VkPhysicalDeviceVariablePointerFeaturesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeaturesKHR, variablePointers}
-
-instance CanReadField "variablePointers"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkVariablePointers
-
-        {-# INLINE readField #-}
-        readField = readVkVariablePointers
-
-instance CanWriteField "variablePointers"
-           VkPhysicalDeviceVariablePointerFeaturesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVariablePointers
-
-instance Show VkPhysicalDeviceVariablePointerFeaturesKHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceVariablePointerFeaturesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkVariablePointersStorageBuffer = " .
-                            showsPrec d (vkVariablePointersStorageBuffer x) .
-                              showString ", " .
-                                showString "vkVariablePointers = " .
-                                  showsPrec d (vkVariablePointers x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.hsc
@@ -0,0 +1,249 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+       (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2 (VkPhysicalDeviceProperties2)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                  pNext;
+--   >     uint32_t               maxVertexAttribDivisor;
+--   > } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT registry at www.khronos.org>
+data VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## Addr##
+                                                                                                                ByteArray##
+
+instance Eq VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+         where
+        (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## a _) ==
+          x@(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+         where
+        (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## a _)
+          `compare`
+          x@(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+         where
+        unsafeAddr
+          (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray
+          (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCacheCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCacheCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCacheCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCacheCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineCacheCreateInfo
        (VkPipelineCacheCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkPipelineCacheCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineCacheCreateInfo {
@@ -25,7 +25,7 @@
 --   >     const void*            pInitialData;
 --   > } VkPipelineCacheCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineCacheCreateInfo.html VkPipelineCacheCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineCacheCreateInfo.html VkPipelineCacheCreateInfo registry at www.khronos.org>
 data VkPipelineCacheCreateInfo = VkPipelineCacheCreateInfo## Addr##
                                                             ByteArray##
 
@@ -75,27 +75,6 @@
         type ReturnedOnly VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPipelineCacheCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkPipelineCacheCreateInfo
-         where
-        type VkSTypeMType VkPipelineCacheCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineCacheCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineCacheCreateInfo where
         type FieldType "sType" VkPipelineCacheCreateInfo = VkStructureType
@@ -111,37 +90,22 @@
         fieldOffset
           = #{offset VkPipelineCacheCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineCacheCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineCacheCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineCacheCreateInfo, sType}
 
-instance CanWriteField "sType" VkPipelineCacheCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineCacheCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkPipelineCacheCreateInfo
-         where
-        type VkPNextMType VkPipelineCacheCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineCacheCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineCacheCreateInfo where
@@ -158,38 +122,22 @@
         fieldOffset
           = #{offset VkPipelineCacheCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineCacheCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineCacheCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineCacheCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkPipelineCacheCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineCacheCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkPipelineCacheCreateInfo
-         where
-        type VkFlagsMType VkPipelineCacheCreateInfo =
-             VkPipelineCacheCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineCacheCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineCacheCreateInfo where
@@ -207,37 +155,22 @@
         fieldOffset
           = #{offset VkPipelineCacheCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineCacheCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineCacheCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkInitialDataSize VkPipelineCacheCreateInfo where
-        type VkInitialDataSizeMType VkPipelineCacheCreateInfo = CSize
-
-        {-# NOINLINE vkInitialDataSize #-}
-        vkInitialDataSize x
+         CanReadField "flags" VkPipelineCacheCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, initialDataSize})
-
-        {-# INLINE vkInitialDataSizeByteOffset #-}
-        vkInitialDataSizeByteOffset ~_
-          = #{offset VkPipelineCacheCreateInfo, initialDataSize}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, flags})
 
-        {-# INLINE readVkInitialDataSize #-}
-        readVkInitialDataSize p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, initialDataSize}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineCacheCreateInfo, flags}
 
-        {-# INLINE writeVkInitialDataSize #-}
-        writeVkInitialDataSize p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, initialDataSize}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineCacheCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "initialDataSize" VkPipelineCacheCreateInfo where
@@ -256,39 +189,22 @@
         fieldOffset
           = #{offset VkPipelineCacheCreateInfo, initialDataSize}
 
-instance CanReadField "initialDataSize" VkPipelineCacheCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkInitialDataSize
-
-        {-# INLINE readField #-}
-        readField = readVkInitialDataSize
-
-instance CanWriteField "initialDataSize" VkPipelineCacheCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkInitialDataSize
-
 instance {-# OVERLAPPING #-}
-         HasVkPInitialData VkPipelineCacheCreateInfo where
-        type VkPInitialDataMType VkPipelineCacheCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPInitialData #-}
-        vkPInitialData x
+         CanReadField "initialDataSize" VkPipelineCacheCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, pInitialData})
-
-        {-# INLINE vkPInitialDataByteOffset #-}
-        vkPInitialDataByteOffset ~_
-          = #{offset VkPipelineCacheCreateInfo, pInitialData}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, initialDataSize})
 
-        {-# INLINE readVkPInitialData #-}
-        readVkPInitialData p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, pInitialData}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineCacheCreateInfo, initialDataSize}
 
-        {-# INLINE writeVkPInitialData #-}
-        writeVkPInitialData p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, pInitialData}
+instance {-# OVERLAPPING #-}
+         CanWriteField "initialDataSize" VkPipelineCacheCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, initialDataSize}
 
 instance {-# OVERLAPPING #-}
          HasField "pInitialData" VkPipelineCacheCreateInfo where
@@ -306,33 +222,37 @@
         fieldOffset
           = #{offset VkPipelineCacheCreateInfo, pInitialData}
 
-instance CanReadField "pInitialData" VkPipelineCacheCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPInitialData
+instance {-# OVERLAPPING #-}
+         CanReadField "pInitialData" VkPipelineCacheCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, pInitialData})
 
         {-# INLINE readField #-}
-        readField = readVkPInitialData
+        readField p
+          = peekByteOff p #{offset VkPipelineCacheCreateInfo, pInitialData}
 
-instance CanWriteField "pInitialData" VkPipelineCacheCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pInitialData" VkPipelineCacheCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPInitialData
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, pInitialData}
 
 instance Show VkPipelineCacheCreateInfo where
         showsPrec d x
           = showString "VkPipelineCacheCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkInitialDataSize = " .
-                                  showsPrec d (vkInitialDataSize x) .
+                                showString "initialDataSize = " .
+                                  showsPrec d (getField @"initialDataSize" x) .
                                     showString ", " .
-                                      showString "vkPInitialData = " .
-                                        showsPrec d (vkPInitialData x) . showChar '}'
+                                      showString "pInitialData = " .
+                                        showsPrec d (getField @"pInitialData" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAdvancedStateCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAdvancedStateCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAdvancedStateCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAdvancedStateCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAdvancedStateCreateInfoEXT
        (VkPipelineColorBlendAdvancedStateCreateInfoEXT(..)) where
@@ -21,7 +22,6 @@
                                                                                    (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo
                                                                                    (VkPipelineColorBlendStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                    (unsafeDupablePerformIO)
 
@@ -33,7 +33,7 @@
 --   >     VkBlendOverlapEXT      blendOverlap;
 --   > } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html VkPipelineColorBlendAdvancedStateCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html VkPipelineColorBlendAdvancedStateCreateInfoEXT registry at www.khronos.org>
 data VkPipelineColorBlendAdvancedStateCreateInfoEXT = VkPipelineColorBlendAdvancedStateCreateInfoEXT## Addr##
                                                                                                       ByteArray##
 
@@ -100,28 +100,6 @@
              '[VkPipelineColorBlendStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineColorBlendAdvancedStateCreateInfoEXT where
-        type VkSTypeMType VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
         type FieldType "sType"
@@ -145,42 +123,25 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
 
-instance CanReadField "sType"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
 
-instance CanWriteField "sType"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineColorBlendAdvancedStateCreateInfoEXT where
-        type VkPNextMType VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineColorBlendAdvancedStateCreateInfoEXT
@@ -206,45 +167,25 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkSrcPremultiplied
+         CanWriteField "pNext"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        type VkSrcPremultipliedMType
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkBool32
-
-        {-# NOINLINE vkSrcPremultiplied #-}
-        vkSrcPremultiplied x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied})
-
-        {-# INLINE vkSrcPremultipliedByteOffset #-}
-        vkSrcPremultipliedByteOffset ~_
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
-
-        {-# INLINE readVkSrcPremultiplied #-}
-        readVkSrcPremultiplied p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
-
-        {-# INLINE writeVkSrcPremultiplied #-}
-        writeVkSrcPremultiplied p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "srcPremultiplied"
@@ -271,45 +212,26 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
 
-instance CanReadField "srcPremultiplied"
+instance {-# OVERLAPPING #-}
+         CanReadField "srcPremultiplied"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSrcPremultiplied
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied})
 
         {-# INLINE readField #-}
-        readField = readVkSrcPremultiplied
-
-instance CanWriteField "srcPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSrcPremultiplied
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
 
 instance {-# OVERLAPPING #-}
-         HasVkDstPremultiplied
+         CanWriteField "srcPremultiplied"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        type VkDstPremultipliedMType
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkBool32
-
-        {-# NOINLINE vkDstPremultiplied #-}
-        vkDstPremultiplied x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied})
-
-        {-# INLINE vkDstPremultipliedByteOffset #-}
-        vkDstPremultipliedByteOffset ~_
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
-
-        {-# INLINE readVkDstPremultiplied #-}
-        readVkDstPremultiplied p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
-
-        {-# INLINE writeVkDstPremultiplied #-}
-        writeVkDstPremultiplied p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
 
 instance {-# OVERLAPPING #-}
          HasField "dstPremultiplied"
@@ -336,44 +258,26 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
 
-instance CanReadField "dstPremultiplied"
+instance {-# OVERLAPPING #-}
+         CanReadField "dstPremultiplied"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkDstPremultiplied
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied})
 
         {-# INLINE readField #-}
-        readField = readVkDstPremultiplied
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
 
-instance CanWriteField "dstPremultiplied"
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstPremultiplied"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDstPremultiplied
-
-instance {-# OVERLAPPING #-}
-         HasVkBlendOverlap VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type VkBlendOverlapMType
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkBlendOverlapEXT
-
-        {-# NOINLINE vkBlendOverlap #-}
-        vkBlendOverlap x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap})
-
-        {-# INLINE vkBlendOverlapByteOffset #-}
-        vkBlendOverlapByteOffset ~_
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
-
-        {-# INLINE readVkBlendOverlap #-}
-        readVkBlendOverlap p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
-
-        {-# INLINE writeVkBlendOverlap #-}
-        writeVkBlendOverlap p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
 
 instance {-# OVERLAPPING #-}
          HasField "blendOverlap"
@@ -400,35 +304,41 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
 
-instance CanReadField "blendOverlap"
+instance {-# OVERLAPPING #-}
+         CanReadField "blendOverlap"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkBlendOverlap
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap})
 
         {-# INLINE readField #-}
-        readField = readVkBlendOverlap
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
 
-instance CanWriteField "blendOverlap"
+instance {-# OVERLAPPING #-}
+         CanWriteField "blendOverlap"
            VkPipelineColorBlendAdvancedStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkBlendOverlap
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
 
 instance Show VkPipelineColorBlendAdvancedStateCreateInfoEXT where
         showsPrec d x
           = showString "VkPipelineColorBlendAdvancedStateCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSrcPremultiplied = " .
-                            showsPrec d (vkSrcPremultiplied x) .
+                          showString "srcPremultiplied = " .
+                            showsPrec d (getField @"srcPremultiplied" x) .
                               showString ", " .
-                                showString "vkDstPremultiplied = " .
-                                  showsPrec d (vkDstPremultiplied x) .
+                                showString "dstPremultiplied = " .
+                                  showsPrec d (getField @"dstPremultiplied" x) .
                                     showString ", " .
-                                      showString "vkBlendOverlap = " .
-                                        showsPrec d (vkBlendOverlap x) . showChar '}'
+                                      showString "blendOverlap = " .
+                                        showsPrec d (getField @"blendOverlap" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAttachmentState.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAttachmentState.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAttachmentState.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendAttachmentState.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
        (VkPipelineColorBlendAttachmentState(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkBlendFactor         (VkBlendFactor)
 import           Graphics.Vulkan.Types.Enum.VkBlendOp             (VkBlendOp)
 import           Graphics.Vulkan.Types.Enum.VkColorComponentFlags (VkColorComponentFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineColorBlendAttachmentState {
@@ -30,7 +30,7 @@
 --   >     VkColorComponentFlags  colorWriteMask;
 --   > } VkPipelineColorBlendAttachmentState;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineColorBlendAttachmentState.html VkPipelineColorBlendAttachmentState registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineColorBlendAttachmentState.html VkPipelineColorBlendAttachmentState registry at www.khronos.org>
 data VkPipelineColorBlendAttachmentState = VkPipelineColorBlendAttachmentState## Addr##
                                                                                 ByteArray##
 
@@ -88,28 +88,6 @@
         type StructExtends VkPipelineColorBlendAttachmentState = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkBlendEnable VkPipelineColorBlendAttachmentState where
-        type VkBlendEnableMType VkPipelineColorBlendAttachmentState =
-             VkBool32
-
-        {-# NOINLINE vkBlendEnable #-}
-        vkBlendEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, blendEnable})
-
-        {-# INLINE vkBlendEnableByteOffset #-}
-        vkBlendEnableByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-
-        {-# INLINE readVkBlendEnable #-}
-        readVkBlendEnable p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-
-        {-# INLINE writeVkBlendEnable #-}
-        writeVkBlendEnable p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-
-instance {-# OVERLAPPING #-}
          HasField "blendEnable" VkPipelineColorBlendAttachmentState where
         type FieldType "blendEnable" VkPipelineColorBlendAttachmentState =
              VkBool32
@@ -129,42 +107,24 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, blendEnable}
 
-instance CanReadField "blendEnable"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanReadField "blendEnable" VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkBlendEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, blendEnable})
 
         {-# INLINE readField #-}
-        readField = readVkBlendEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, blendEnable}
 
-instance CanWriteField "blendEnable"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanWriteField "blendEnable" VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkBlendEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkSrcColorBlendFactor VkPipelineColorBlendAttachmentState where
-        type VkSrcColorBlendFactorMType VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-
-        {-# NOINLINE vkSrcColorBlendFactor #-}
-        vkSrcColorBlendFactor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor})
-
-        {-# INLINE vkSrcColorBlendFactorByteOffset #-}
-        vkSrcColorBlendFactorByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
-
-        {-# INLINE readVkSrcColorBlendFactor #-}
-        readVkSrcColorBlendFactor p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
-
-        {-# INLINE writeVkSrcColorBlendFactor #-}
-        writeVkSrcColorBlendFactor p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, blendEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "srcColorBlendFactor" VkPipelineColorBlendAttachmentState
@@ -190,42 +150,26 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
 
-instance CanReadField "srcColorBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanReadField "srcColorBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkSrcColorBlendFactor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor})
 
         {-# INLINE readField #-}
-        readField = readVkSrcColorBlendFactor
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
 
-instance CanWriteField "srcColorBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcColorBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcColorBlendFactor
-
-instance {-# OVERLAPPING #-}
-         HasVkDstColorBlendFactor VkPipelineColorBlendAttachmentState where
-        type VkDstColorBlendFactorMType VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-
-        {-# NOINLINE vkDstColorBlendFactor #-}
-        vkDstColorBlendFactor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor})
-
-        {-# INLINE vkDstColorBlendFactorByteOffset #-}
-        vkDstColorBlendFactorByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
-
-        {-# INLINE readVkDstColorBlendFactor #-}
-        readVkDstColorBlendFactor p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
-
-        {-# INLINE writeVkDstColorBlendFactor #-}
-        writeVkDstColorBlendFactor p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
 
 instance {-# OVERLAPPING #-}
          HasField "dstColorBlendFactor" VkPipelineColorBlendAttachmentState
@@ -251,42 +195,26 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
 
-instance CanReadField "dstColorBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanReadField "dstColorBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkDstColorBlendFactor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor})
 
         {-# INLINE readField #-}
-        readField = readVkDstColorBlendFactor
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
 
-instance CanWriteField "dstColorBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstColorBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDstColorBlendFactor
-
-instance {-# OVERLAPPING #-}
-         HasVkColorBlendOp VkPipelineColorBlendAttachmentState where
-        type VkColorBlendOpMType VkPipelineColorBlendAttachmentState =
-             VkBlendOp
-
-        {-# NOINLINE vkColorBlendOp #-}
-        vkColorBlendOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, colorBlendOp})
-
-        {-# INLINE vkColorBlendOpByteOffset #-}
-        vkColorBlendOpByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
-
-        {-# INLINE readVkColorBlendOp #-}
-        readVkColorBlendOp p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
-
-        {-# INLINE writeVkColorBlendOp #-}
-        writeVkColorBlendOp p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
 
 instance {-# OVERLAPPING #-}
          HasField "colorBlendOp" VkPipelineColorBlendAttachmentState where
@@ -309,42 +237,24 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
 
-instance CanReadField "colorBlendOp"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanReadField "colorBlendOp" VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkColorBlendOp
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, colorBlendOp})
 
         {-# INLINE readField #-}
-        readField = readVkColorBlendOp
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
 
-instance CanWriteField "colorBlendOp"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanWriteField "colorBlendOp" VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkColorBlendOp
-
-instance {-# OVERLAPPING #-}
-         HasVkSrcAlphaBlendFactor VkPipelineColorBlendAttachmentState where
-        type VkSrcAlphaBlendFactorMType VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-
-        {-# NOINLINE vkSrcAlphaBlendFactor #-}
-        vkSrcAlphaBlendFactor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor})
-
-        {-# INLINE vkSrcAlphaBlendFactorByteOffset #-}
-        vkSrcAlphaBlendFactorByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
-
-        {-# INLINE readVkSrcAlphaBlendFactor #-}
-        readVkSrcAlphaBlendFactor p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
-
-        {-# INLINE writeVkSrcAlphaBlendFactor #-}
-        writeVkSrcAlphaBlendFactor p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
 
 instance {-# OVERLAPPING #-}
          HasField "srcAlphaBlendFactor" VkPipelineColorBlendAttachmentState
@@ -370,42 +280,26 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
 
-instance CanReadField "srcAlphaBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanReadField "srcAlphaBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkSrcAlphaBlendFactor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor})
 
         {-# INLINE readField #-}
-        readField = readVkSrcAlphaBlendFactor
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
 
-instance CanWriteField "srcAlphaBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcAlphaBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcAlphaBlendFactor
-
-instance {-# OVERLAPPING #-}
-         HasVkDstAlphaBlendFactor VkPipelineColorBlendAttachmentState where
-        type VkDstAlphaBlendFactorMType VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-
-        {-# NOINLINE vkDstAlphaBlendFactor #-}
-        vkDstAlphaBlendFactor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor})
-
-        {-# INLINE vkDstAlphaBlendFactorByteOffset #-}
-        vkDstAlphaBlendFactorByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
-
-        {-# INLINE readVkDstAlphaBlendFactor #-}
-        readVkDstAlphaBlendFactor p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
-
-        {-# INLINE writeVkDstAlphaBlendFactor #-}
-        writeVkDstAlphaBlendFactor p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
 
 instance {-# OVERLAPPING #-}
          HasField "dstAlphaBlendFactor" VkPipelineColorBlendAttachmentState
@@ -431,42 +325,26 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
 
-instance CanReadField "dstAlphaBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanReadField "dstAlphaBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkDstAlphaBlendFactor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor})
 
         {-# INLINE readField #-}
-        readField = readVkDstAlphaBlendFactor
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
 
-instance CanWriteField "dstAlphaBlendFactor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstAlphaBlendFactor"
            VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDstAlphaBlendFactor
-
-instance {-# OVERLAPPING #-}
-         HasVkAlphaBlendOp VkPipelineColorBlendAttachmentState where
-        type VkAlphaBlendOpMType VkPipelineColorBlendAttachmentState =
-             VkBlendOp
-
-        {-# NOINLINE vkAlphaBlendOp #-}
-        vkAlphaBlendOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp})
-
-        {-# INLINE vkAlphaBlendOpByteOffset #-}
-        vkAlphaBlendOpByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
-
-        {-# INLINE readVkAlphaBlendOp #-}
-        readVkAlphaBlendOp p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
-
-        {-# INLINE writeVkAlphaBlendOp #-}
-        writeVkAlphaBlendOp p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
 
 instance {-# OVERLAPPING #-}
          HasField "alphaBlendOp" VkPipelineColorBlendAttachmentState where
@@ -489,42 +367,24 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
 
-instance CanReadField "alphaBlendOp"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanReadField "alphaBlendOp" VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkAlphaBlendOp
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp})
 
         {-# INLINE readField #-}
-        readField = readVkAlphaBlendOp
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
 
-instance CanWriteField "alphaBlendOp"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanWriteField "alphaBlendOp" VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAlphaBlendOp
-
-instance {-# OVERLAPPING #-}
-         HasVkColorWriteMask VkPipelineColorBlendAttachmentState where
-        type VkColorWriteMaskMType VkPipelineColorBlendAttachmentState =
-             VkColorComponentFlags
-
-        {-# NOINLINE vkColorWriteMask #-}
-        vkColorWriteMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, colorWriteMask})
-
-        {-# INLINE vkColorWriteMaskByteOffset #-}
-        vkColorWriteMaskByteOffset ~_
-          = #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
-
-        {-# INLINE readVkColorWriteMask #-}
-        readVkColorWriteMask p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
-
-        {-# INLINE writeVkColorWriteMask #-}
-        writeVkColorWriteMask p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
 
 instance {-# OVERLAPPING #-}
          HasField "colorWriteMask" VkPipelineColorBlendAttachmentState where
@@ -548,45 +408,49 @@
         fieldOffset
           = #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
 
-instance CanReadField "colorWriteMask"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanReadField "colorWriteMask" VkPipelineColorBlendAttachmentState
          where
-        {-# INLINE getField #-}
-        getField = vkColorWriteMask
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, colorWriteMask})
 
         {-# INLINE readField #-}
-        readField = readVkColorWriteMask
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
 
-instance CanWriteField "colorWriteMask"
-           VkPipelineColorBlendAttachmentState
+instance {-# OVERLAPPING #-}
+         CanWriteField "colorWriteMask" VkPipelineColorBlendAttachmentState
          where
         {-# INLINE writeField #-}
-        writeField = writeVkColorWriteMask
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
 
 instance Show VkPipelineColorBlendAttachmentState where
         showsPrec d x
           = showString "VkPipelineColorBlendAttachmentState {" .
-              showString "vkBlendEnable = " .
-                showsPrec d (vkBlendEnable x) .
+              showString "blendEnable = " .
+                showsPrec d (getField @"blendEnable" x) .
                   showString ", " .
-                    showString "vkSrcColorBlendFactor = " .
-                      showsPrec d (vkSrcColorBlendFactor x) .
+                    showString "srcColorBlendFactor = " .
+                      showsPrec d (getField @"srcColorBlendFactor" x) .
                         showString ", " .
-                          showString "vkDstColorBlendFactor = " .
-                            showsPrec d (vkDstColorBlendFactor x) .
+                          showString "dstColorBlendFactor = " .
+                            showsPrec d (getField @"dstColorBlendFactor" x) .
                               showString ", " .
-                                showString "vkColorBlendOp = " .
-                                  showsPrec d (vkColorBlendOp x) .
+                                showString "colorBlendOp = " .
+                                  showsPrec d (getField @"colorBlendOp" x) .
                                     showString ", " .
-                                      showString "vkSrcAlphaBlendFactor = " .
-                                        showsPrec d (vkSrcAlphaBlendFactor x) .
+                                      showString "srcAlphaBlendFactor = " .
+                                        showsPrec d (getField @"srcAlphaBlendFactor" x) .
                                           showString ", " .
-                                            showString "vkDstAlphaBlendFactor = " .
-                                              showsPrec d (vkDstAlphaBlendFactor x) .
+                                            showString "dstAlphaBlendFactor = " .
+                                              showsPrec d (getField @"dstAlphaBlendFactor" x) .
                                                 showString ", " .
-                                                  showString "vkAlphaBlendOp = " .
-                                                    showsPrec d (vkAlphaBlendOp x) .
+                                                  showString "alphaBlendOp = " .
+                                                    showsPrec d (getField @"alphaBlendOp" x) .
                                                       showString ", " .
-                                                        showString "vkColorWriteMask = " .
-                                                          showsPrec d (vkColorWriteMask x) .
-                                                            showChar '}'
+                                                        showString "colorWriteMask = " .
+                                                          showsPrec d (getField @"colorWriteMask" x)
+                                                            . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineColorBlendStateCreateInfo.hsc
@@ -8,6 +8,7 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineColorBlendStateCreateInfo
@@ -30,7 +31,6 @@
                                                                                    (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
                                                                                    (VkPipelineColorBlendAttachmentState)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                    (unsafeDupablePerformIO)
 
@@ -45,7 +45,7 @@
 --   >     float                  blendConstants[4];
 --   > } VkPipelineColorBlendStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html VkPipelineColorBlendStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html VkPipelineColorBlendStateCreateInfo registry at www.khronos.org>
 data VkPipelineColorBlendStateCreateInfo = VkPipelineColorBlendStateCreateInfo## Addr##
                                                                                 ByteArray##
 
@@ -102,28 +102,6 @@
         type StructExtends VkPipelineColorBlendStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineColorBlendStateCreateInfo where
-        type VkSTypeMType VkPipelineColorBlendStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineColorBlendStateCreateInfo where
         type FieldType "sType" VkPipelineColorBlendStateCreateInfo =
              VkStructureType
@@ -141,39 +119,22 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineColorBlendStateCreateInfo where
-        type VkPNextMType VkPipelineColorBlendStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineColorBlendStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineColorBlendStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineColorBlendStateCreateInfo where
@@ -193,40 +154,22 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineColorBlendStateCreateInfo where
-        type VkFlagsMType VkPipelineColorBlendStateCreateInfo =
-             VkPipelineColorBlendStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineColorBlendStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineColorBlendStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineColorBlendStateCreateInfo where
@@ -246,40 +189,22 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkLogicOpEnable VkPipelineColorBlendStateCreateInfo where
-        type VkLogicOpEnableMType VkPipelineColorBlendStateCreateInfo =
-             VkBool32
-
-        {-# NOINLINE vkLogicOpEnable #-}
-        vkLogicOpEnable x
+         CanReadField "flags" VkPipelineColorBlendStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable})
-
-        {-# INLINE vkLogicOpEnableByteOffset #-}
-        vkLogicOpEnableByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, flags})
 
-        {-# INLINE readVkLogicOpEnable #-}
-        readVkLogicOpEnable p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, flags}
 
-        {-# INLINE writeVkLogicOpEnable #-}
-        writeVkLogicOpEnable p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineColorBlendStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "logicOpEnable" VkPipelineColorBlendStateCreateInfo where
@@ -303,41 +228,24 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
 
-instance CanReadField "logicOpEnable"
-           VkPipelineColorBlendStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "logicOpEnable" VkPipelineColorBlendStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkLogicOpEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable})
 
         {-# INLINE readField #-}
-        readField = readVkLogicOpEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
 
-instance CanWriteField "logicOpEnable"
-           VkPipelineColorBlendStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "logicOpEnable" VkPipelineColorBlendStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkLogicOpEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkLogicOp VkPipelineColorBlendStateCreateInfo where
-        type VkLogicOpMType VkPipelineColorBlendStateCreateInfo = VkLogicOp
-
-        {-# NOINLINE vkLogicOp #-}
-        vkLogicOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, logicOp})
-
-        {-# INLINE vkLogicOpByteOffset #-}
-        vkLogicOpByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
-
-        {-# INLINE readVkLogicOp #-}
-        readVkLogicOp p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
-
-        {-# INLINE writeVkLogicOp #-}
-        writeVkLogicOp p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "logicOp" VkPipelineColorBlendStateCreateInfo where
@@ -357,41 +265,22 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
 
-instance CanReadField "logicOp" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkLogicOp
-
-        {-# INLINE readField #-}
-        readField = readVkLogicOp
-
-instance CanWriteField "logicOp"
-           VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkLogicOp
-
 instance {-# OVERLAPPING #-}
-         HasVkAttachmentCount VkPipelineColorBlendStateCreateInfo where
-        type VkAttachmentCountMType VkPipelineColorBlendStateCreateInfo =
-             Word32
-
-        {-# NOINLINE vkAttachmentCount #-}
-        vkAttachmentCount x
+         CanReadField "logicOp" VkPipelineColorBlendStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount})
-
-        {-# INLINE vkAttachmentCountByteOffset #-}
-        vkAttachmentCountByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, logicOp})
 
-        {-# INLINE readVkAttachmentCount #-}
-        readVkAttachmentCount p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
 
-        {-# INLINE writeVkAttachmentCount #-}
-        writeVkAttachmentCount p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "logicOp" VkPipelineColorBlendStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
 
 instance {-# OVERLAPPING #-}
          HasField "attachmentCount" VkPipelineColorBlendStateCreateInfo
@@ -417,42 +306,24 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
 
-instance CanReadField "attachmentCount"
-           VkPipelineColorBlendStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "attachmentCount" VkPipelineColorBlendStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkAttachmentCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount})
 
         {-# INLINE readField #-}
-        readField = readVkAttachmentCount
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
 
-instance CanWriteField "attachmentCount"
-           VkPipelineColorBlendStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "attachmentCount" VkPipelineColorBlendStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAttachmentCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPAttachments VkPipelineColorBlendStateCreateInfo where
-        type VkPAttachmentsMType VkPipelineColorBlendStateCreateInfo =
-             Ptr VkPipelineColorBlendAttachmentState
-
-        {-# NOINLINE vkPAttachments #-}
-        vkPAttachments x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, pAttachments})
-
-        {-# INLINE vkPAttachmentsByteOffset #-}
-        vkPAttachmentsByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
-
-        {-# INLINE readVkPAttachments #-}
-        readVkPAttachments p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
-
-        {-# INLINE writeVkPAttachments #-}
-        writeVkPAttachments p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttachments" VkPipelineColorBlendStateCreateInfo where
@@ -475,48 +346,24 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
 
-instance CanReadField "pAttachments"
-           VkPipelineColorBlendStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pAttachments" VkPipelineColorBlendStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPAttachments
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, pAttachments})
 
         {-# INLINE readField #-}
-        readField = readVkPAttachments
+        readField p
+          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
 
-instance CanWriteField "pAttachments"
-           VkPipelineColorBlendStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttachments" VkPipelineColorBlendStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAttachments
-
-instance {-# OVERLAPPING #-}
-         HasVkBlendConstantsArray VkPipelineColorBlendStateCreateInfo where
-        type VkBlendConstantsArrayMType VkPipelineColorBlendStateCreateInfo
-             = #{type float}
-
-        {-# NOINLINE vkBlendConstantsArray #-}
-        vkBlendConstantsArray x idx
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: #{type float}) +
-                    #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}))
-
-        {-# INLINE vkBlendConstantsArrayByteOffset #-}
-        vkBlendConstantsArrayByteOffset ~_
-          = #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
-
-        {-# INLINE readVkBlendConstantsArray #-}
-        readVkBlendConstantsArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPipelineColorBlendStateCreateInfo, blendConstants})
-
-        {-# INLINE writeVkBlendConstantsArray #-}
-        writeVkBlendConstantsArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: #{type float}) +
-                 #{offset VkPipelineColorBlendStateCreateInfo, blendConstants})
+        writeField p
+          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "blendConstants" VkPipelineColorBlendStateCreateInfo where
@@ -540,7 +387,8 @@
         fieldOffset
           = #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "blendConstants" idx
             VkPipelineColorBlendStateCreateInfo) =>
          CanReadFieldArray "blendConstants" idx
@@ -573,16 +421,25 @@
         fieldArrayLength = 4
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkBlendConstantsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
+                      +
+                      sizeOf (undefined :: #{type float}) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkBlendConstantsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
+                 +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "blendConstants" idx
             VkPipelineColorBlendStateCreateInfo) =>
          CanWriteFieldArray "blendConstants" idx
@@ -609,35 +466,55 @@
                        #-}
 
         {-# INLINE writeFieldArray #-}
-        writeFieldArray x
-          = writeVkBlendConstantsArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
+                 +
+                 sizeOf (undefined :: #{type float}) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
 instance Show VkPipelineColorBlendStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineColorBlendStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkLogicOpEnable = " .
-                                  showsPrec d (vkLogicOpEnable x) .
+                                showString "logicOpEnable = " .
+                                  showsPrec d (getField @"logicOpEnable" x) .
                                     showString ", " .
-                                      showString "vkLogicOp = " .
-                                        showsPrec d (vkLogicOp x) .
+                                      showString "logicOp = " .
+                                        showsPrec d (getField @"logicOp" x) .
                                           showString ", " .
-                                            showString "vkAttachmentCount = " .
-                                              showsPrec d (vkAttachmentCount x) .
+                                            showString "attachmentCount = " .
+                                              showsPrec d (getField @"attachmentCount" x) .
                                                 showString ", " .
-                                                  showString "vkPAttachments = " .
-                                                    showsPrec d (vkPAttachments x) .
+                                                  showString "pAttachments = " .
+                                                    showsPrec d (getField @"pAttachments" x) .
                                                       showString ", " .
-                                                        showString "vkBlendConstantsArray = [" .
-                                                          showsPrec d
-                                                            (map (vkBlendConstantsArray x) [1 .. 4])
-                                                            . showChar ']' . showChar '}'
+                                                        (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageModulationStateCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageModulationStateCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageModulationStateCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageModulationStateCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineCoverageModulationStateCreateInfoNV
        (VkPipelineCoverageModulationStateCreateInfoNV(..)) where
@@ -23,7 +24,6 @@
                                                                                     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo
                                                                                     (VkPipelineMultisampleStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                     (unsafeDupablePerformIO)
 
@@ -37,7 +37,7 @@
 --   >     const float* pCoverageModulationTable;
 --   > } VkPipelineCoverageModulationStateCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html VkPipelineCoverageModulationStateCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html VkPipelineCoverageModulationStateCreateInfoNV registry at www.khronos.org>
 data VkPipelineCoverageModulationStateCreateInfoNV = VkPipelineCoverageModulationStateCreateInfoNV## Addr##
                                                                                                     ByteArray##
 
@@ -104,28 +104,6 @@
              '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineCoverageModulationStateCreateInfoNV where
-        type VkSTypeMType VkPipelineCoverageModulationStateCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineCoverageModulationStateCreateInfoNV
          where
         type FieldType "sType"
@@ -149,42 +127,24 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkPipelineCoverageModulationStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
 
-instance CanWriteField "sType"
-           VkPipelineCoverageModulationStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineCoverageModulationStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineCoverageModulationStateCreateInfoNV where
-        type VkPNextMType VkPipelineCoverageModulationStateCreateInfoNV =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
@@ -210,42 +170,24 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineCoverageModulationStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
 
-instance CanWriteField "pNext"
-           VkPipelineCoverageModulationStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineCoverageModulationStateCreateInfoNV where
-        type VkFlagsMType VkPipelineCoverageModulationStateCreateInfoNV =
-             VkPipelineCoverageModulationStateCreateFlagsNV
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineCoverageModulationStateCreateInfoNV
@@ -271,45 +213,24 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
 
-instance CanReadField "flags"
-           VkPipelineCoverageModulationStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
 
 instance {-# OVERLAPPING #-}
-         HasVkCoverageModulationMode
-           VkPipelineCoverageModulationStateCreateInfoNV
+         CanWriteField "flags" VkPipelineCoverageModulationStateCreateInfoNV
          where
-        type VkCoverageModulationModeMType
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = VkCoverageModulationModeNV
-
-        {-# NOINLINE vkCoverageModulationMode #-}
-        vkCoverageModulationMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode})
-
-        {-# INLINE vkCoverageModulationModeByteOffset #-}
-        vkCoverageModulationModeByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
-
-        {-# INLINE readVkCoverageModulationMode #-}
-        readVkCoverageModulationMode p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
-
-        {-# INLINE writeVkCoverageModulationMode #-}
-        writeVkCoverageModulationMode p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "coverageModulationMode"
@@ -336,45 +257,26 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
 
-instance CanReadField "coverageModulationMode"
+instance {-# OVERLAPPING #-}
+         CanReadField "coverageModulationMode"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkCoverageModulationMode
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode})
 
         {-# INLINE readField #-}
-        readField = readVkCoverageModulationMode
-
-instance CanWriteField "coverageModulationMode"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCoverageModulationMode
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
 
 instance {-# OVERLAPPING #-}
-         HasVkCoverageModulationTableEnable
+         CanWriteField "coverageModulationMode"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        type VkCoverageModulationTableEnableMType
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = VkBool32
-
-        {-# NOINLINE vkCoverageModulationTableEnable #-}
-        vkCoverageModulationTableEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable})
-
-        {-# INLINE vkCoverageModulationTableEnableByteOffset #-}
-        vkCoverageModulationTableEnableByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
-
-        {-# INLINE readVkCoverageModulationTableEnable #-}
-        readVkCoverageModulationTableEnable p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
-
-        {-# INLINE writeVkCoverageModulationTableEnable #-}
-        writeVkCoverageModulationTableEnable p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
 
 instance {-# OVERLAPPING #-}
          HasField "coverageModulationTableEnable"
@@ -401,45 +303,26 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
 
-instance CanReadField "coverageModulationTableEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "coverageModulationTableEnable"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkCoverageModulationTableEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable})
 
         {-# INLINE readField #-}
-        readField = readVkCoverageModulationTableEnable
-
-instance CanWriteField "coverageModulationTableEnable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCoverageModulationTableEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
 
 instance {-# OVERLAPPING #-}
-         HasVkCoverageModulationTableCount
+         CanWriteField "coverageModulationTableEnable"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        type VkCoverageModulationTableCountMType
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = Word32
-
-        {-# NOINLINE vkCoverageModulationTableCount #-}
-        vkCoverageModulationTableCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount})
-
-        {-# INLINE vkCoverageModulationTableCountByteOffset #-}
-        vkCoverageModulationTableCountByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
-
-        {-# INLINE readVkCoverageModulationTableCount #-}
-        readVkCoverageModulationTableCount p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
-
-        {-# INLINE writeVkCoverageModulationTableCount #-}
-        writeVkCoverageModulationTableCount p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "coverageModulationTableCount"
@@ -466,45 +349,26 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
 
-instance CanReadField "coverageModulationTableCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "coverageModulationTableCount"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkCoverageModulationTableCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount})
 
         {-# INLINE readField #-}
-        readField = readVkCoverageModulationTableCount
-
-instance CanWriteField "coverageModulationTableCount"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCoverageModulationTableCount
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkPCoverageModulationTable
+         CanWriteField "coverageModulationTableCount"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        type VkPCoverageModulationTableMType
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = Ptr #{type float}
-
-        {-# NOINLINE vkPCoverageModulationTable #-}
-        vkPCoverageModulationTable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable})
-
-        {-# INLINE vkPCoverageModulationTableByteOffset #-}
-        vkPCoverageModulationTableByteOffset ~_
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
-
-        {-# INLINE readVkPCoverageModulationTable #-}
-        readVkPCoverageModulationTable p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
-
-        {-# INLINE writeVkPCoverageModulationTable #-}
-        writeVkPCoverageModulationTable p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pCoverageModulationTable"
@@ -531,42 +395,51 @@
         fieldOffset
           = #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
 
-instance CanReadField "pCoverageModulationTable"
+instance {-# OVERLAPPING #-}
+         CanReadField "pCoverageModulationTable"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPCoverageModulationTable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable})
 
         {-# INLINE readField #-}
-        readField = readVkPCoverageModulationTable
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
 
-instance CanWriteField "pCoverageModulationTable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pCoverageModulationTable"
            VkPipelineCoverageModulationStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPCoverageModulationTable
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
 
 instance Show VkPipelineCoverageModulationStateCreateInfoNV where
         showsPrec d x
           = showString "VkPipelineCoverageModulationStateCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkCoverageModulationMode = " .
-                                  showsPrec d (vkCoverageModulationMode x) .
+                                showString "coverageModulationMode = " .
+                                  showsPrec d (getField @"coverageModulationMode" x) .
                                     showString ", " .
-                                      showString "vkCoverageModulationTableEnable = " .
-                                        showsPrec d (vkCoverageModulationTableEnable x) .
+                                      showString "coverageModulationTableEnable = " .
+                                        showsPrec d (getField @"coverageModulationTableEnable" x) .
                                           showString ", " .
-                                            showString "vkCoverageModulationTableCount = " .
-                                              showsPrec d (vkCoverageModulationTableCount x) .
+                                            showString "coverageModulationTableCount = " .
+                                              showsPrec d
+                                                (getField @"coverageModulationTableCount" x)
+                                                .
                                                 showString ", " .
-                                                  showString "vkPCoverageModulationTable = " .
-                                                    showsPrec d (vkPCoverageModulationTable x) .
-                                                      showChar '}'
+                                                  showString "pCoverageModulationTable = " .
+                                                    showsPrec d
+                                                      (getField @"pCoverageModulationTable" x)
+                                                      . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageToColorStateCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageToColorStateCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageToColorStateCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineCoverageToColorStateCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineCoverageToColorStateCreateInfoNV
        (VkPipelineCoverageToColorStateCreateInfoNV(..)) where
@@ -21,7 +22,6 @@
                                                                                     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo
                                                                                     (VkPipelineMultisampleStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                     (unsafeDupablePerformIO)
 
@@ -33,7 +33,7 @@
 --   >     uint32_t         coverageToColorLocation;
 --   > } VkPipelineCoverageToColorStateCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html VkPipelineCoverageToColorStateCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html VkPipelineCoverageToColorStateCreateInfoNV registry at www.khronos.org>
 data VkPipelineCoverageToColorStateCreateInfoNV = VkPipelineCoverageToColorStateCreateInfoNV## Addr##
                                                                                               ByteArray##
 
@@ -96,28 +96,6 @@
              '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineCoverageToColorStateCreateInfoNV where
-        type VkSTypeMType VkPipelineCoverageToColorStateCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineCoverageToColorStateCreateInfoNV where
         type FieldType "sType" VkPipelineCoverageToColorStateCreateInfoNV =
              VkStructureType
@@ -138,42 +116,24 @@
         fieldOffset
           = #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkPipelineCoverageToColorStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineCoverageToColorStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
 
-instance CanWriteField "sType"
-           VkPipelineCoverageToColorStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineCoverageToColorStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineCoverageToColorStateCreateInfoNV where
-        type VkPNextMType VkPipelineCoverageToColorStateCreateInfoNV =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineCoverageToColorStateCreateInfoNV where
@@ -196,42 +156,24 @@
         fieldOffset
           = #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineCoverageToColorStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineCoverageToColorStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
 
-instance CanWriteField "pNext"
-           VkPipelineCoverageToColorStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineCoverageToColorStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineCoverageToColorStateCreateInfoNV where
-        type VkFlagsMType VkPipelineCoverageToColorStateCreateInfoNV =
-             VkPipelineCoverageToColorStateCreateFlagsNV
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineCoverageToColorStateCreateInfoNV where
@@ -254,45 +196,24 @@
         fieldOffset
           = #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
 
-instance CanReadField "flags"
-           VkPipelineCoverageToColorStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkPipelineCoverageToColorStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
 
 instance {-# OVERLAPPING #-}
-         HasVkCoverageToColorEnable
-           VkPipelineCoverageToColorStateCreateInfoNV
+         CanWriteField "flags" VkPipelineCoverageToColorStateCreateInfoNV
          where
-        type VkCoverageToColorEnableMType
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = VkBool32
-
-        {-# NOINLINE vkCoverageToColorEnable #-}
-        vkCoverageToColorEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable})
-
-        {-# INLINE vkCoverageToColorEnableByteOffset #-}
-        vkCoverageToColorEnableByteOffset ~_
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
-
-        {-# INLINE readVkCoverageToColorEnable #-}
-        readVkCoverageToColorEnable p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
-
-        {-# INLINE writeVkCoverageToColorEnable #-}
-        writeVkCoverageToColorEnable p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "coverageToColorEnable"
@@ -319,45 +240,26 @@
         fieldOffset
           = #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
 
-instance CanReadField "coverageToColorEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "coverageToColorEnable"
            VkPipelineCoverageToColorStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkCoverageToColorEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable})
 
         {-# INLINE readField #-}
-        readField = readVkCoverageToColorEnable
-
-instance CanWriteField "coverageToColorEnable"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCoverageToColorEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
 
 instance {-# OVERLAPPING #-}
-         HasVkCoverageToColorLocation
+         CanWriteField "coverageToColorEnable"
            VkPipelineCoverageToColorStateCreateInfoNV
          where
-        type VkCoverageToColorLocationMType
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = Word32
-
-        {-# NOINLINE vkCoverageToColorLocation #-}
-        vkCoverageToColorLocation x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation})
-
-        {-# INLINE vkCoverageToColorLocationByteOffset #-}
-        vkCoverageToColorLocationByteOffset ~_
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
-
-        {-# INLINE readVkCoverageToColorLocation #-}
-        readVkCoverageToColorLocation p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
-
-        {-# INLINE writeVkCoverageToColorLocation #-}
-        writeVkCoverageToColorLocation p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "coverageToColorLocation"
@@ -384,35 +286,42 @@
         fieldOffset
           = #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
 
-instance CanReadField "coverageToColorLocation"
+instance {-# OVERLAPPING #-}
+         CanReadField "coverageToColorLocation"
            VkPipelineCoverageToColorStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkCoverageToColorLocation
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation})
 
         {-# INLINE readField #-}
-        readField = readVkCoverageToColorLocation
+        readField p
+          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
 
-instance CanWriteField "coverageToColorLocation"
+instance {-# OVERLAPPING #-}
+         CanWriteField "coverageToColorLocation"
            VkPipelineCoverageToColorStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkCoverageToColorLocation
+        writeField p
+          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
 
 instance Show VkPipelineCoverageToColorStateCreateInfoNV where
         showsPrec d x
           = showString "VkPipelineCoverageToColorStateCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkCoverageToColorEnable = " .
-                                  showsPrec d (vkCoverageToColorEnable x) .
+                                showString "coverageToColorEnable = " .
+                                  showsPrec d (getField @"coverageToColorEnable" x) .
                                     showString ", " .
-                                      showString "vkCoverageToColorLocation = " .
-                                        showsPrec d (vkCoverageToColorLocation x) . showChar '}'
+                                      showString "coverageToColorLocation = " .
+                                        showsPrec d (getField @"coverageToColorLocation" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDepthStencilStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDepthStencilStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDepthStencilStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDepthStencilStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineDepthStencilStateCreateInfo
        (VkPipelineDepthStencilStateCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkCompareOp        (VkCompareOp)
 import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkStencilOpState (VkStencilOpState)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineDepthStencilStateCreateInfo {
@@ -35,7 +35,7 @@
 --   >     float                  maxDepthBounds;
 --   > } VkPipelineDepthStencilStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html VkPipelineDepthStencilStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html VkPipelineDepthStencilStateCreateInfo registry at www.khronos.org>
 data VkPipelineDepthStencilStateCreateInfo = VkPipelineDepthStencilStateCreateInfo## Addr##
                                                                                     ByteArray##
 
@@ -94,28 +94,6 @@
         type StructExtends VkPipelineDepthStencilStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineDepthStencilStateCreateInfo where
-        type VkSTypeMType VkPipelineDepthStencilStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineDepthStencilStateCreateInfo where
         type FieldType "sType" VkPipelineDepthStencilStateCreateInfo =
              VkStructureType
@@ -133,40 +111,22 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineDepthStencilStateCreateInfo where
-        type VkPNextMType VkPipelineDepthStencilStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineDepthStencilStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineDepthStencilStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineDepthStencilStateCreateInfo where
@@ -186,41 +146,22 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineDepthStencilStateCreateInfo where
-        type VkFlagsMType VkPipelineDepthStencilStateCreateInfo =
-             VkPipelineDepthStencilStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineDepthStencilStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineDepthStencilStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineDepthStencilStateCreateInfo where
@@ -240,41 +181,22 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkDepthTestEnable VkPipelineDepthStencilStateCreateInfo where
-        type VkDepthTestEnableMType VkPipelineDepthStencilStateCreateInfo =
-             VkBool32
-
-        {-# NOINLINE vkDepthTestEnable #-}
-        vkDepthTestEnable x
+         CanReadField "flags" VkPipelineDepthStencilStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable})
-
-        {-# INLINE vkDepthTestEnableByteOffset #-}
-        vkDepthTestEnableByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, flags})
 
-        {-# INLINE readVkDepthTestEnable #-}
-        readVkDepthTestEnable p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, flags}
 
-        {-# INLINE writeVkDepthTestEnable #-}
-        writeVkDepthTestEnable p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineDepthStencilStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "depthTestEnable" VkPipelineDepthStencilStateCreateInfo
@@ -300,42 +222,26 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
 
-instance CanReadField "depthTestEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthTestEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthTestEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable})
 
         {-# INLINE readField #-}
-        readField = readVkDepthTestEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
 
-instance CanWriteField "depthTestEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthTestEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthTestEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthWriteEnable VkPipelineDepthStencilStateCreateInfo where
-        type VkDepthWriteEnableMType VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkDepthWriteEnable #-}
-        vkDepthWriteEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable})
-
-        {-# INLINE vkDepthWriteEnableByteOffset #-}
-        vkDepthWriteEnableByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
-
-        {-# INLINE readVkDepthWriteEnable #-}
-        readVkDepthWriteEnable p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
-
-        {-# INLINE writeVkDepthWriteEnable #-}
-        writeVkDepthWriteEnable p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "depthWriteEnable" VkPipelineDepthStencilStateCreateInfo
@@ -361,42 +267,26 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
 
-instance CanReadField "depthWriteEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthWriteEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthWriteEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable})
 
         {-# INLINE readField #-}
-        readField = readVkDepthWriteEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
 
-instance CanWriteField "depthWriteEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthWriteEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthWriteEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthCompareOp VkPipelineDepthStencilStateCreateInfo where
-        type VkDepthCompareOpMType VkPipelineDepthStencilStateCreateInfo =
-             VkCompareOp
-
-        {-# NOINLINE vkDepthCompareOp #-}
-        vkDepthCompareOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp})
-
-        {-# INLINE vkDepthCompareOpByteOffset #-}
-        vkDepthCompareOpByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
-
-        {-# INLINE readVkDepthCompareOp #-}
-        readVkDepthCompareOp p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
-
-        {-# INLINE writeVkDepthCompareOp #-}
-        writeVkDepthCompareOp p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "depthCompareOp" VkPipelineDepthStencilStateCreateInfo
@@ -422,44 +312,25 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
 
-instance CanReadField "depthCompareOp"
-           VkPipelineDepthStencilStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "depthCompareOp" VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthCompareOp
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp})
 
         {-# INLINE readField #-}
-        readField = readVkDepthCompareOp
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
 
-instance CanWriteField "depthCompareOp"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthCompareOp"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthCompareOp
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBoundsTestEnable VkPipelineDepthStencilStateCreateInfo
-         where
-        type VkDepthBoundsTestEnableMType
-               VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkDepthBoundsTestEnable #-}
-        vkDepthBoundsTestEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable})
-
-        {-# INLINE vkDepthBoundsTestEnableByteOffset #-}
-        vkDepthBoundsTestEnableByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
-
-        {-# INLINE readVkDepthBoundsTestEnable #-}
-        readVkDepthBoundsTestEnable p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
-
-        {-# INLINE writeVkDepthBoundsTestEnable #-}
-        writeVkDepthBoundsTestEnable p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
 
 instance {-# OVERLAPPING #-}
          HasField "depthBoundsTestEnable"
@@ -486,42 +357,26 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
 
-instance CanReadField "depthBoundsTestEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthBoundsTestEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthBoundsTestEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable})
 
         {-# INLINE readField #-}
-        readField = readVkDepthBoundsTestEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
 
-instance CanWriteField "depthBoundsTestEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthBoundsTestEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthBoundsTestEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkStencilTestEnable VkPipelineDepthStencilStateCreateInfo where
-        type VkStencilTestEnableMType VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkStencilTestEnable #-}
-        vkStencilTestEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable})
-
-        {-# INLINE vkStencilTestEnableByteOffset #-}
-        vkStencilTestEnableByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
-
-        {-# INLINE readVkStencilTestEnable #-}
-        readVkStencilTestEnable p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
-
-        {-# INLINE writeVkStencilTestEnable #-}
-        writeVkStencilTestEnable p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "stencilTestEnable" VkPipelineDepthStencilStateCreateInfo
@@ -547,42 +402,26 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
 
-instance CanReadField "stencilTestEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "stencilTestEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkStencilTestEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable})
 
         {-# INLINE readField #-}
-        readField = readVkStencilTestEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
 
-instance CanWriteField "stencilTestEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "stencilTestEnable"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkStencilTestEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkFront VkPipelineDepthStencilStateCreateInfo where
-        type VkFrontMType VkPipelineDepthStencilStateCreateInfo =
-             VkStencilOpState
-
-        {-# NOINLINE vkFront #-}
-        vkFront x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, front})
-
-        {-# INLINE vkFrontByteOffset #-}
-        vkFrontByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, front}
-
-        {-# INLINE readVkFront #-}
-        readVkFront p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, front}
-
-        {-# INLINE writeVkFront #-}
-        writeVkFront p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, front}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "front" VkPipelineDepthStencilStateCreateInfo where
@@ -602,41 +441,22 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, front}
 
-instance CanReadField "front" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFront
-
-        {-# INLINE readField #-}
-        readField = readVkFront
-
-instance CanWriteField "front"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFront
-
 instance {-# OVERLAPPING #-}
-         HasVkBack VkPipelineDepthStencilStateCreateInfo where
-        type VkBackMType VkPipelineDepthStencilStateCreateInfo =
-             VkStencilOpState
-
-        {-# NOINLINE vkBack #-}
-        vkBack x
+         CanReadField "front" VkPipelineDepthStencilStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, back})
-
-        {-# INLINE vkBackByteOffset #-}
-        vkBackByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, back}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, front})
 
-        {-# INLINE readVkBack #-}
-        readVkBack p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, back}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, front}
 
-        {-# INLINE writeVkBack #-}
-        writeVkBack p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, back}
+instance {-# OVERLAPPING #-}
+         CanWriteField "front" VkPipelineDepthStencilStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, front}
 
 instance {-# OVERLAPPING #-}
          HasField "back" VkPipelineDepthStencilStateCreateInfo where
@@ -656,40 +476,22 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, back}
 
-instance CanReadField "back" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBack
-
-        {-# INLINE readField #-}
-        readField = readVkBack
-
-instance CanWriteField "back" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBack
-
 instance {-# OVERLAPPING #-}
-         HasVkMinDepthBounds VkPipelineDepthStencilStateCreateInfo where
-        type VkMinDepthBoundsMType VkPipelineDepthStencilStateCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkMinDepthBounds #-}
-        vkMinDepthBounds x
+         CanReadField "back" VkPipelineDepthStencilStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds})
-
-        {-# INLINE vkMinDepthBoundsByteOffset #-}
-        vkMinDepthBoundsByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, back})
 
-        {-# INLINE readVkMinDepthBounds #-}
-        readVkMinDepthBounds p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, back}
 
-        {-# INLINE writeVkMinDepthBounds #-}
-        writeVkMinDepthBounds p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
+instance {-# OVERLAPPING #-}
+         CanWriteField "back" VkPipelineDepthStencilStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, back}
 
 instance {-# OVERLAPPING #-}
          HasField "minDepthBounds" VkPipelineDepthStencilStateCreateInfo
@@ -715,42 +517,25 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
 
-instance CanReadField "minDepthBounds"
-           VkPipelineDepthStencilStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "minDepthBounds" VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkMinDepthBounds
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds})
 
         {-# INLINE readField #-}
-        readField = readVkMinDepthBounds
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
 
-instance CanWriteField "minDepthBounds"
+instance {-# OVERLAPPING #-}
+         CanWriteField "minDepthBounds"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMinDepthBounds
-
-instance {-# OVERLAPPING #-}
-         HasVkMaxDepthBounds VkPipelineDepthStencilStateCreateInfo where
-        type VkMaxDepthBoundsMType VkPipelineDepthStencilStateCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkMaxDepthBounds #-}
-        vkMaxDepthBounds x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds})
-
-        {-# INLINE vkMaxDepthBoundsByteOffset #-}
-        vkMaxDepthBoundsByteOffset ~_
-          = #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
-
-        {-# INLINE readVkMaxDepthBounds #-}
-        readVkMaxDepthBounds p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
-
-        {-# INLINE writeVkMaxDepthBounds #-}
-        writeVkMaxDepthBounds p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
 
 instance {-# OVERLAPPING #-}
          HasField "maxDepthBounds" VkPipelineDepthStencilStateCreateInfo
@@ -776,65 +561,79 @@
         fieldOffset
           = #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
 
-instance CanReadField "maxDepthBounds"
-           VkPipelineDepthStencilStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "maxDepthBounds" VkPipelineDepthStencilStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkMaxDepthBounds
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds})
 
         {-# INLINE readField #-}
-        readField = readVkMaxDepthBounds
+        readField p
+          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
 
-instance CanWriteField "maxDepthBounds"
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxDepthBounds"
            VkPipelineDepthStencilStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxDepthBounds
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
 
 instance Show VkPipelineDepthStencilStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineDepthStencilStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDepthTestEnable = " .
-                                  showsPrec d (vkDepthTestEnable x) .
+                                showString "depthTestEnable = " .
+                                  showsPrec d (getField @"depthTestEnable" x) .
                                     showString ", " .
-                                      showString "vkDepthWriteEnable = " .
-                                        showsPrec d (vkDepthWriteEnable x) .
+                                      showString "depthWriteEnable = " .
+                                        showsPrec d (getField @"depthWriteEnable" x) .
                                           showString ", " .
-                                            showString "vkDepthCompareOp = " .
-                                              showsPrec d (vkDepthCompareOp x) .
+                                            showString "depthCompareOp = " .
+                                              showsPrec d (getField @"depthCompareOp" x) .
                                                 showString ", " .
-                                                  showString "vkDepthBoundsTestEnable = " .
-                                                    showsPrec d (vkDepthBoundsTestEnable x) .
+                                                  showString "depthBoundsTestEnable = " .
+                                                    showsPrec d
+                                                      (getField @"depthBoundsTestEnable" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkStencilTestEnable = " .
-                                                          showsPrec d (vkStencilTestEnable x) .
+                                                        showString "stencilTestEnable = " .
+                                                          showsPrec d
+                                                            (getField @"stencilTestEnable" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkFront = " .
-                                                                showsPrec d (vkFront x) .
+                                                              showString "front = " .
+                                                                showsPrec d (getField @"front" x) .
                                                                   showString ", " .
-                                                                    showString "vkBack = " .
-                                                                      showsPrec d (vkBack x) .
+                                                                    showString "back = " .
+                                                                      showsPrec d
+                                                                        (getField @"back" x)
+                                                                        .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkMinDepthBounds = "
+                                                                            "minDepthBounds = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkMinDepthBounds x)
+                                                                              (getField
+                                                                                 @"minDepthBounds"
+                                                                                 x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkMaxDepthBounds = "
+                                                                                  "maxDepthBounds = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkMaxDepthBounds
+                                                                                    (getField
+                                                                                       @"maxDepthBounds"
                                                                                        x)
                                                                                     . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDiscardRectangleStateCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDiscardRectangleStateCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDiscardRectangleStateCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDiscardRectangleStateCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineDiscardRectangleStateCreateInfoEXT
        (VkPipelineDiscardRectangleStateCreateInfoEXT(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType                (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo (VkGraphicsPipelineCreateInfo)
 import           Graphics.Vulkan.Types.Struct.VkRect2D                     (VkRect2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                          (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
@@ -29,7 +29,7 @@
 --   >     const VkRect2D* pDiscardRectangles;
 --   > } VkPipelineDiscardRectangleStateCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html VkPipelineDiscardRectangleStateCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html VkPipelineDiscardRectangleStateCreateInfoEXT registry at www.khronos.org>
 data VkPipelineDiscardRectangleStateCreateInfoEXT = VkPipelineDiscardRectangleStateCreateInfoEXT## Addr##
                                                                                                   ByteArray##
 
@@ -94,28 +94,6 @@
              '[VkGraphicsPipelineCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineDiscardRectangleStateCreateInfoEXT where
-        type VkSTypeMType VkPipelineDiscardRectangleStateCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT where
         type FieldType "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
              = VkStructureType
@@ -137,42 +115,24 @@
         fieldOffset
           = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
 
-instance CanReadField "sType"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
 
-instance CanWriteField "sType"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineDiscardRectangleStateCreateInfoEXT where
-        type VkPNextMType VkPipelineDiscardRectangleStateCreateInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT where
@@ -196,42 +156,24 @@
         fieldOffset
           = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
 
-instance CanWriteField "pNext"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineDiscardRectangleStateCreateInfoEXT where
-        type VkFlagsMType VkPipelineDiscardRectangleStateCreateInfoEXT =
-             VkPipelineDiscardRectangleStateCreateFlagsEXT
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT where
@@ -255,45 +197,24 @@
         fieldOffset
           = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
 
-instance CanReadField "flags"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        readField p
+          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
 
 instance {-# OVERLAPPING #-}
-         HasVkDiscardRectangleMode
-           VkPipelineDiscardRectangleStateCreateInfoEXT
+         CanWriteField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        type VkDiscardRectangleModeMType
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = VkDiscardRectangleModeEXT
-
-        {-# NOINLINE vkDiscardRectangleMode #-}
-        vkDiscardRectangleMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode})
-
-        {-# INLINE vkDiscardRectangleModeByteOffset #-}
-        vkDiscardRectangleModeByteOffset ~_
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
-
-        {-# INLINE readVkDiscardRectangleMode #-}
-        readVkDiscardRectangleMode p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
-
-        {-# INLINE writeVkDiscardRectangleMode #-}
-        writeVkDiscardRectangleMode p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "discardRectangleMode"
@@ -320,45 +241,26 @@
         fieldOffset
           = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
 
-instance CanReadField "discardRectangleMode"
+instance {-# OVERLAPPING #-}
+         CanReadField "discardRectangleMode"
            VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkDiscardRectangleMode
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode})
 
         {-# INLINE readField #-}
-        readField = readVkDiscardRectangleMode
-
-instance CanWriteField "discardRectangleMode"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDiscardRectangleMode
+        readField p
+          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
 
 instance {-# OVERLAPPING #-}
-         HasVkDiscardRectangleCount
+         CanWriteField "discardRectangleMode"
            VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        type VkDiscardRectangleCountMType
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = Word32
-
-        {-# NOINLINE vkDiscardRectangleCount #-}
-        vkDiscardRectangleCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount})
-
-        {-# INLINE vkDiscardRectangleCountByteOffset #-}
-        vkDiscardRectangleCountByteOffset ~_
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
-
-        {-# INLINE readVkDiscardRectangleCount #-}
-        readVkDiscardRectangleCount p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
-
-        {-# INLINE writeVkDiscardRectangleCount #-}
-        writeVkDiscardRectangleCount p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
 
 instance {-# OVERLAPPING #-}
          HasField "discardRectangleCount"
@@ -385,45 +287,26 @@
         fieldOffset
           = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
 
-instance CanReadField "discardRectangleCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "discardRectangleCount"
            VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkDiscardRectangleCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount})
 
         {-# INLINE readField #-}
-        readField = readVkDiscardRectangleCount
-
-instance CanWriteField "discardRectangleCount"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDiscardRectangleCount
+        readField p
+          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkPDiscardRectangles
+         CanWriteField "discardRectangleCount"
            VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        type VkPDiscardRectanglesMType
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = Ptr VkRect2D
-
-        {-# NOINLINE vkPDiscardRectangles #-}
-        vkPDiscardRectangles x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles})
-
-        {-# INLINE vkPDiscardRectanglesByteOffset #-}
-        vkPDiscardRectanglesByteOffset ~_
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
-
-        {-# INLINE readVkPDiscardRectangles #-}
-        readVkPDiscardRectangles p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
-
-        {-# INLINE writeVkPDiscardRectangles #-}
-        writeVkPDiscardRectangles p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pDiscardRectangles"
@@ -450,38 +333,45 @@
         fieldOffset
           = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
 
-instance CanReadField "pDiscardRectangles"
+instance {-# OVERLAPPING #-}
+         CanReadField "pDiscardRectangles"
            VkPipelineDiscardRectangleStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPDiscardRectangles
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles})
 
         {-# INLINE readField #-}
-        readField = readVkPDiscardRectangles
+        readField p
+          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
 
-instance CanWriteField "pDiscardRectangles"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDiscardRectangles"
            VkPipelineDiscardRectangleStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPDiscardRectangles
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
 
 instance Show VkPipelineDiscardRectangleStateCreateInfoEXT where
         showsPrec d x
           = showString "VkPipelineDiscardRectangleStateCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDiscardRectangleMode = " .
-                                  showsPrec d (vkDiscardRectangleMode x) .
+                                showString "discardRectangleMode = " .
+                                  showsPrec d (getField @"discardRectangleMode" x) .
                                     showString ", " .
-                                      showString "vkDiscardRectangleCount = " .
-                                        showsPrec d (vkDiscardRectangleCount x) .
+                                      showString "discardRectangleCount = " .
+                                        showsPrec d (getField @"discardRectangleCount" x) .
                                           showString ", " .
-                                            showString "vkPDiscardRectangles = " .
-                                              showsPrec d (vkPDiscardRectangles x) . showChar '}'
+                                            showString "pDiscardRectangles = " .
+                                              showsPrec d (getField @"pDiscardRectangles" x) .
+                                                showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDynamicStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDynamicStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDynamicStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineDynamicStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineDynamicStateCreateInfo
        (VkPipelineDynamicStateCreateInfo(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Bitmasks             (VkPipelineDynamicStateCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkDynamicState  (VkDynamicState)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineDynamicStateCreateInfo {
@@ -26,7 +26,7 @@
 --   >     const VkDynamicState*  pDynamicStates;
 --   > } VkPipelineDynamicStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineDynamicStateCreateInfo.html VkPipelineDynamicStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineDynamicStateCreateInfo.html VkPipelineDynamicStateCreateInfo registry at www.khronos.org>
 data VkPipelineDynamicStateCreateInfo = VkPipelineDynamicStateCreateInfo## Addr##
                                                                           ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkPipelineDynamicStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineDynamicStateCreateInfo where
-        type VkSTypeMType VkPipelineDynamicStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineDynamicStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineDynamicStateCreateInfo where
         type FieldType "sType" VkPipelineDynamicStateCreateInfo =
              VkStructureType
@@ -119,39 +97,22 @@
         fieldOffset
           = #{offset VkPipelineDynamicStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineDynamicStateCreateInfo where
-        type VkPNextMType VkPipelineDynamicStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineDynamicStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineDynamicStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineDynamicStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineDynamicStateCreateInfo where
@@ -169,40 +130,22 @@
         fieldOffset
           = #{offset VkPipelineDynamicStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineDynamicStateCreateInfo where
-        type VkFlagsMType VkPipelineDynamicStateCreateInfo =
-             VkPipelineDynamicStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineDynamicStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineDynamicStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineDynamicStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineDynamicStateCreateInfo where
@@ -220,40 +163,22 @@
         fieldOffset
           = #{offset VkPipelineDynamicStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkDynamicStateCount VkPipelineDynamicStateCreateInfo where
-        type VkDynamicStateCountMType VkPipelineDynamicStateCreateInfo =
-             Word32
-
-        {-# NOINLINE vkDynamicStateCount #-}
-        vkDynamicStateCount x
+         CanReadField "flags" VkPipelineDynamicStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount})
-
-        {-# INLINE vkDynamicStateCountByteOffset #-}
-        vkDynamicStateCountByteOffset ~_
-          = #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, flags})
 
-        {-# INLINE readVkDynamicStateCount #-}
-        readVkDynamicStateCount p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, flags}
 
-        {-# INLINE writeVkDynamicStateCount #-}
-        writeVkDynamicStateCount p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineDynamicStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "dynamicStateCount" VkPipelineDynamicStateCreateInfo where
@@ -277,42 +202,24 @@
         fieldOffset
           = #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
 
-instance CanReadField "dynamicStateCount"
-           VkPipelineDynamicStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "dynamicStateCount" VkPipelineDynamicStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDynamicStateCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount})
 
         {-# INLINE readField #-}
-        readField = readVkDynamicStateCount
+        readField p
+          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
 
-instance CanWriteField "dynamicStateCount"
-           VkPipelineDynamicStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "dynamicStateCount" VkPipelineDynamicStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDynamicStateCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDynamicStates VkPipelineDynamicStateCreateInfo where
-        type VkPDynamicStatesMType VkPipelineDynamicStateCreateInfo =
-             Ptr VkDynamicState
-
-        {-# NOINLINE vkPDynamicStates #-}
-        vkPDynamicStates x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates})
-
-        {-# INLINE vkPDynamicStatesByteOffset #-}
-        vkPDynamicStatesByteOffset ~_
-          = #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
-
-        {-# INLINE readVkPDynamicStates #-}
-        readVkPDynamicStates p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
-
-        {-# INLINE writeVkPDynamicStates #-}
-        writeVkPDynamicStates p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pDynamicStates" VkPipelineDynamicStateCreateInfo where
@@ -334,35 +241,39 @@
         fieldOffset
           = #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
 
-instance CanReadField "pDynamicStates"
-           VkPipelineDynamicStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pDynamicStates" VkPipelineDynamicStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPDynamicStates
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates})
 
         {-# INLINE readField #-}
-        readField = readVkPDynamicStates
+        readField p
+          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
 
-instance CanWriteField "pDynamicStates"
-           VkPipelineDynamicStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDynamicStates" VkPipelineDynamicStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPDynamicStates
+        writeField p
+          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
 
 instance Show VkPipelineDynamicStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineDynamicStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDynamicStateCount = " .
-                                  showsPrec d (vkDynamicStateCount x) .
+                                showString "dynamicStateCount = " .
+                                  showsPrec d (getField @"dynamicStateCount" x) .
                                     showString ", " .
-                                      showString "vkPDynamicStates = " .
-                                        showsPrec d (vkPDynamicStates x) . showChar '}'
+                                      showString "pDynamicStates = " .
+                                        showsPrec d (getField @"pDynamicStates" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineInputAssemblyStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineInputAssemblyStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineInputAssemblyStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineInputAssemblyStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineInputAssemblyStateCreateInfo
        (VkPipelineInputAssemblyStateCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Bitmasks                 (VkPipelineInputAssemblyStateCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkPrimitiveTopology (VkPrimitiveTopology)
 import           Graphics.Vulkan.Types.Enum.VkStructureType     (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineInputAssemblyStateCreateInfo {
@@ -27,7 +27,7 @@
 --   >     VkBool32               primitiveRestartEnable;
 --   > } VkPipelineInputAssemblyStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html VkPipelineInputAssemblyStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html VkPipelineInputAssemblyStateCreateInfo registry at www.khronos.org>
 data VkPipelineInputAssemblyStateCreateInfo = VkPipelineInputAssemblyStateCreateInfo## Addr##
                                                                                       ByteArray##
 
@@ -84,28 +84,6 @@
         type StructExtends VkPipelineInputAssemblyStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineInputAssemblyStateCreateInfo where
-        type VkSTypeMType VkPipelineInputAssemblyStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineInputAssemblyStateCreateInfo where
         type FieldType "sType" VkPipelineInputAssemblyStateCreateInfo =
              VkStructureType
@@ -123,41 +101,22 @@
         fieldOffset
           = #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
 
-instance CanReadField "sType"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineInputAssemblyStateCreateInfo where
-        type VkPNextMType VkPipelineInputAssemblyStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineInputAssemblyStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineInputAssemblyStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineInputAssemblyStateCreateInfo where
@@ -177,42 +136,22 @@
         fieldOffset
           = #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineInputAssemblyStateCreateInfo where
-        type VkFlagsMType VkPipelineInputAssemblyStateCreateInfo =
-             VkPipelineInputAssemblyStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineInputAssemblyStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineInputAssemblyStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineInputAssemblyStateCreateInfo where
@@ -232,42 +171,22 @@
         fieldOffset
           = #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
 
-instance CanReadField "flags"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkTopology VkPipelineInputAssemblyStateCreateInfo where
-        type VkTopologyMType VkPipelineInputAssemblyStateCreateInfo =
-             VkPrimitiveTopology
-
-        {-# NOINLINE vkTopology #-}
-        vkTopology x
+         CanReadField "flags" VkPipelineInputAssemblyStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, topology})
-
-        {-# INLINE vkTopologyByteOffset #-}
-        vkTopologyByteOffset ~_
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, flags})
 
-        {-# INLINE readVkTopology #-}
-        readVkTopology p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
 
-        {-# INLINE writeVkTopology #-}
-        writeVkTopology p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineInputAssemblyStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "topology" VkPipelineInputAssemblyStateCreateInfo where
@@ -289,44 +208,24 @@
         fieldOffset
           = #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
 
-instance CanReadField "topology"
-           VkPipelineInputAssemblyStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "topology" VkPipelineInputAssemblyStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkTopology
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, topology})
 
         {-# INLINE readField #-}
-        readField = readVkTopology
-
-instance CanWriteField "topology"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkTopology
+        readField p
+          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
 
 instance {-# OVERLAPPING #-}
-         HasVkPrimitiveRestartEnable VkPipelineInputAssemblyStateCreateInfo
+         CanWriteField "topology" VkPipelineInputAssemblyStateCreateInfo
          where
-        type VkPrimitiveRestartEnableMType
-               VkPipelineInputAssemblyStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkPrimitiveRestartEnable #-}
-        vkPrimitiveRestartEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable})
-
-        {-# INLINE vkPrimitiveRestartEnableByteOffset #-}
-        vkPrimitiveRestartEnableByteOffset ~_
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
-
-        {-# INLINE readVkPrimitiveRestartEnable #-}
-        readVkPrimitiveRestartEnable p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
-
-        {-# INLINE writeVkPrimitiveRestartEnable #-}
-        writeVkPrimitiveRestartEnable p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
 
 instance {-# OVERLAPPING #-}
          HasField "primitiveRestartEnable"
@@ -353,35 +252,42 @@
         fieldOffset
           = #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
 
-instance CanReadField "primitiveRestartEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "primitiveRestartEnable"
            VkPipelineInputAssemblyStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPrimitiveRestartEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable})
 
         {-# INLINE readField #-}
-        readField = readVkPrimitiveRestartEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
 
-instance CanWriteField "primitiveRestartEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "primitiveRestartEnable"
            VkPipelineInputAssemblyStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPrimitiveRestartEnable
+        writeField p
+          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
 
 instance Show VkPipelineInputAssemblyStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineInputAssemblyStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkTopology = " .
-                                  showsPrec d (vkTopology x) .
+                                showString "topology = " .
+                                  showsPrec d (getField @"topology" x) .
                                     showString ", " .
-                                      showString "vkPrimitiveRestartEnable = " .
-                                        showsPrec d (vkPrimitiveRestartEnable x) . showChar '}'
+                                      showString "primitiveRestartEnable = " .
+                                        showsPrec d (getField @"primitiveRestartEnable" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineLayoutCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineLayoutCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineLayoutCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineLayoutCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineLayoutCreateInfo
        (VkPipelineLayoutCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType       (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                    (VkDescriptorSetLayout)
 import           Graphics.Vulkan.Types.Struct.VkPushConstantRange (VkPushConstantRange)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineLayoutCreateInfo {
@@ -29,7 +29,7 @@
 --   >     const VkPushConstantRange* pPushConstantRanges;
 --   > } VkPipelineLayoutCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineLayoutCreateInfo.html VkPipelineLayoutCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineLayoutCreateInfo.html VkPipelineLayoutCreateInfo registry at www.khronos.org>
 data VkPipelineLayoutCreateInfo = VkPipelineLayoutCreateInfo## Addr##
                                                               ByteArray##
 
@@ -82,27 +82,6 @@
         type ReturnedOnly VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPipelineLayoutCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkPipelineLayoutCreateInfo
-         where
-        type VkSTypeMType VkPipelineLayoutCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineLayoutCreateInfo where
         type FieldType "sType" VkPipelineLayoutCreateInfo = VkStructureType
@@ -118,37 +97,22 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineLayoutCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, sType}
 
-instance CanWriteField "sType" VkPipelineLayoutCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineLayoutCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkPipelineLayoutCreateInfo
-         where
-        type VkPNextMType VkPipelineLayoutCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineLayoutCreateInfo where
@@ -165,38 +129,22 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineLayoutCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkPipelineLayoutCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineLayoutCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkPipelineLayoutCreateInfo
-         where
-        type VkFlagsMType VkPipelineLayoutCreateInfo =
-             VkPipelineLayoutCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineLayoutCreateInfo where
@@ -214,37 +162,22 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineLayoutCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkSetLayoutCount VkPipelineLayoutCreateInfo where
-        type VkSetLayoutCountMType VkPipelineLayoutCreateInfo = Word32
-
-        {-# NOINLINE vkSetLayoutCount #-}
-        vkSetLayoutCount x
+         CanReadField "flags" VkPipelineLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, setLayoutCount})
-
-        {-# INLINE vkSetLayoutCountByteOffset #-}
-        vkSetLayoutCountByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, flags})
 
-        {-# INLINE readVkSetLayoutCount #-}
-        readVkSetLayoutCount p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, flags}
 
-        {-# INLINE writeVkSetLayoutCount #-}
-        writeVkSetLayoutCount p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "setLayoutCount" VkPipelineLayoutCreateInfo where
@@ -263,40 +196,22 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
 
-instance CanReadField "setLayoutCount" VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSetLayoutCount
-
-        {-# INLINE readField #-}
-        readField = readVkSetLayoutCount
-
-instance CanWriteField "setLayoutCount" VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSetLayoutCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPSetLayouts VkPipelineLayoutCreateInfo where
-        type VkPSetLayoutsMType VkPipelineLayoutCreateInfo =
-             Ptr VkDescriptorSetLayout
-
-        {-# NOINLINE vkPSetLayouts #-}
-        vkPSetLayouts x
+         CanReadField "setLayoutCount" VkPipelineLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pSetLayouts})
-
-        {-# INLINE vkPSetLayoutsByteOffset #-}
-        vkPSetLayoutsByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, setLayoutCount})
 
-        {-# INLINE readVkPSetLayouts #-}
-        readVkPSetLayouts p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
 
-        {-# INLINE writeVkPSetLayouts #-}
-        writeVkPSetLayouts p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
+instance {-# OVERLAPPING #-}
+         CanWriteField "setLayoutCount" VkPipelineLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSetLayouts" VkPipelineLayoutCreateInfo where
@@ -315,40 +230,22 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
 
-instance CanReadField "pSetLayouts" VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPSetLayouts
-
-        {-# INLINE readField #-}
-        readField = readVkPSetLayouts
-
-instance CanWriteField "pSetLayouts" VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPSetLayouts
-
 instance {-# OVERLAPPING #-}
-         HasVkPushConstantRangeCount VkPipelineLayoutCreateInfo where
-        type VkPushConstantRangeCountMType VkPipelineLayoutCreateInfo =
-             Word32
-
-        {-# NOINLINE vkPushConstantRangeCount #-}
-        vkPushConstantRangeCount x
+         CanReadField "pSetLayouts" VkPipelineLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount})
-
-        {-# INLINE vkPushConstantRangeCountByteOffset #-}
-        vkPushConstantRangeCountByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pSetLayouts})
 
-        {-# INLINE readVkPushConstantRangeCount #-}
-        readVkPushConstantRangeCount p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
 
-        {-# INLINE writeVkPushConstantRangeCount #-}
-        writeVkPushConstantRangeCount p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSetLayouts" VkPipelineLayoutCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
 
 instance {-# OVERLAPPING #-}
          HasField "pushConstantRangeCount" VkPipelineLayoutCreateInfo where
@@ -372,42 +269,24 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
 
-instance CanReadField "pushConstantRangeCount"
-           VkPipelineLayoutCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pushConstantRangeCount" VkPipelineLayoutCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPushConstantRangeCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount})
 
         {-# INLINE readField #-}
-        readField = readVkPushConstantRangeCount
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
 
-instance CanWriteField "pushConstantRangeCount"
-           VkPipelineLayoutCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pushConstantRangeCount" VkPipelineLayoutCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPushConstantRangeCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPPushConstantRanges VkPipelineLayoutCreateInfo where
-        type VkPPushConstantRangesMType VkPipelineLayoutCreateInfo =
-             Ptr VkPushConstantRange
-
-        {-# NOINLINE vkPPushConstantRanges #-}
-        vkPPushConstantRanges x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges})
-
-        {-# INLINE vkPPushConstantRangesByteOffset #-}
-        vkPPushConstantRangesByteOffset ~_
-          = #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
-
-        {-# INLINE readVkPPushConstantRanges #-}
-        readVkPPushConstantRanges p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
-
-        {-# INLINE writeVkPPushConstantRanges #-}
-        writeVkPPushConstantRanges p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pPushConstantRanges" VkPipelineLayoutCreateInfo where
@@ -427,42 +306,45 @@
         fieldOffset
           = #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
 
-instance CanReadField "pPushConstantRanges"
-           VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPPushConstantRanges
+instance {-# OVERLAPPING #-}
+         CanReadField "pPushConstantRanges" VkPipelineLayoutCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges})
 
         {-# INLINE readField #-}
-        readField = readVkPPushConstantRanges
+        readField p
+          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
 
-instance CanWriteField "pPushConstantRanges"
-           VkPipelineLayoutCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pPushConstantRanges" VkPipelineLayoutCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPPushConstantRanges
+        writeField p
+          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
 
 instance Show VkPipelineLayoutCreateInfo where
         showsPrec d x
           = showString "VkPipelineLayoutCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkSetLayoutCount = " .
-                                  showsPrec d (vkSetLayoutCount x) .
+                                showString "setLayoutCount = " .
+                                  showsPrec d (getField @"setLayoutCount" x) .
                                     showString ", " .
-                                      showString "vkPSetLayouts = " .
-                                        showsPrec d (vkPSetLayouts x) .
+                                      showString "pSetLayouts = " .
+                                        showsPrec d (getField @"pSetLayouts" x) .
                                           showString ", " .
-                                            showString "vkPushConstantRangeCount = " .
-                                              showsPrec d (vkPushConstantRangeCount x) .
+                                            showString "pushConstantRangeCount = " .
+                                              showsPrec d (getField @"pushConstantRangeCount" x) .
                                                 showString ", " .
-                                                  showString "vkPPushConstantRanges = " .
-                                                    showsPrec d (vkPPushConstantRanges x) .
-                                                      showChar '}'
+                                                  showString "pPushConstantRanges = " .
+                                                    showsPrec d (getField @"pPushConstantRanges" x)
+                                                      . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineMultisampleStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineMultisampleStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineMultisampleStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineMultisampleStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineMultisampleStateCreateInfo
        (VkPipelineMultisampleStateCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Bitmasks                (VkPipelineMultisampleStateCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkSampleCountFlags (VkSampleCountFlagBits)
 import           Graphics.Vulkan.Types.Enum.VkStructureType    (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineMultisampleStateCreateInfo {
@@ -32,7 +32,7 @@
 --   >     VkBool32               alphaToOneEnable;
 --   > } VkPipelineMultisampleStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html VkPipelineMultisampleStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html VkPipelineMultisampleStateCreateInfo registry at www.khronos.org>
 data VkPipelineMultisampleStateCreateInfo = VkPipelineMultisampleStateCreateInfo## Addr##
                                                                                   ByteArray##
 
@@ -91,28 +91,6 @@
         type StructExtends VkPipelineMultisampleStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineMultisampleStateCreateInfo where
-        type VkSTypeMType VkPipelineMultisampleStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineMultisampleStateCreateInfo where
         type FieldType "sType" VkPipelineMultisampleStateCreateInfo =
              VkStructureType
@@ -130,39 +108,22 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineMultisampleStateCreateInfo where
-        type VkPNextMType VkPipelineMultisampleStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineMultisampleStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineMultisampleStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineMultisampleStateCreateInfo where
@@ -182,40 +143,22 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineMultisampleStateCreateInfo where
-        type VkFlagsMType VkPipelineMultisampleStateCreateInfo =
-             VkPipelineMultisampleStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineMultisampleStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineMultisampleStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineMultisampleStateCreateInfo where
@@ -235,42 +178,22 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkRasterizationSamples VkPipelineMultisampleStateCreateInfo
-         where
-        type VkRasterizationSamplesMType
-               VkPipelineMultisampleStateCreateInfo
-             = VkSampleCountFlagBits
-
-        {-# NOINLINE vkRasterizationSamples #-}
-        vkRasterizationSamples x
+         CanReadField "flags" VkPipelineMultisampleStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples})
-
-        {-# INLINE vkRasterizationSamplesByteOffset #-}
-        vkRasterizationSamplesByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, flags})
 
-        {-# INLINE readVkRasterizationSamples #-}
-        readVkRasterizationSamples p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, flags}
 
-        {-# INLINE writeVkRasterizationSamples #-}
-        writeVkRasterizationSamples p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineMultisampleStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "rasterizationSamples"
@@ -297,43 +220,26 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
 
-instance CanReadField "rasterizationSamples"
+instance {-# OVERLAPPING #-}
+         CanReadField "rasterizationSamples"
            VkPipelineMultisampleStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkRasterizationSamples
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples})
 
         {-# INLINE readField #-}
-        readField = readVkRasterizationSamples
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
 
-instance CanWriteField "rasterizationSamples"
+instance {-# OVERLAPPING #-}
+         CanWriteField "rasterizationSamples"
            VkPipelineMultisampleStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkRasterizationSamples
-
-instance {-# OVERLAPPING #-}
-         HasVkSampleShadingEnable VkPipelineMultisampleStateCreateInfo where
-        type VkSampleShadingEnableMType
-               VkPipelineMultisampleStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkSampleShadingEnable #-}
-        vkSampleShadingEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable})
-
-        {-# INLINE vkSampleShadingEnableByteOffset #-}
-        vkSampleShadingEnableByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
-
-        {-# INLINE readVkSampleShadingEnable #-}
-        readVkSampleShadingEnable p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
-
-        {-# INLINE writeVkSampleShadingEnable #-}
-        writeVkSampleShadingEnable p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleShadingEnable" VkPipelineMultisampleStateCreateInfo
@@ -359,42 +265,26 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
 
-instance CanReadField "sampleShadingEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleShadingEnable"
            VkPipelineMultisampleStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkSampleShadingEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable})
 
         {-# INLINE readField #-}
-        readField = readVkSampleShadingEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
 
-instance CanWriteField "sampleShadingEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleShadingEnable"
            VkPipelineMultisampleStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSampleShadingEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkMinSampleShading VkPipelineMultisampleStateCreateInfo where
-        type VkMinSampleShadingMType VkPipelineMultisampleStateCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkMinSampleShading #-}
-        vkMinSampleShading x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading})
-
-        {-# INLINE vkMinSampleShadingByteOffset #-}
-        vkMinSampleShadingByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
-
-        {-# INLINE readVkMinSampleShading #-}
-        readVkMinSampleShading p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
-
-        {-# INLINE writeVkMinSampleShading #-}
-        writeVkMinSampleShading p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "minSampleShading" VkPipelineMultisampleStateCreateInfo
@@ -420,42 +310,26 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
 
-instance CanReadField "minSampleShading"
+instance {-# OVERLAPPING #-}
+         CanReadField "minSampleShading"
            VkPipelineMultisampleStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkMinSampleShading
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading})
 
         {-# INLINE readField #-}
-        readField = readVkMinSampleShading
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
 
-instance CanWriteField "minSampleShading"
+instance {-# OVERLAPPING #-}
+         CanWriteField "minSampleShading"
            VkPipelineMultisampleStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkMinSampleShading
-
-instance {-# OVERLAPPING #-}
-         HasVkPSampleMask VkPipelineMultisampleStateCreateInfo where
-        type VkPSampleMaskMType VkPipelineMultisampleStateCreateInfo =
-             Ptr VkSampleMask
-
-        {-# NOINLINE vkPSampleMask #-}
-        vkPSampleMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask})
-
-        {-# INLINE vkPSampleMaskByteOffset #-}
-        vkPSampleMaskByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
-
-        {-# INLINE readVkPSampleMask #-}
-        readVkPSampleMask p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
-
-        {-# INLINE writeVkPSampleMask #-}
-        writeVkPSampleMask p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
 
 instance {-# OVERLAPPING #-}
          HasField "pSampleMask" VkPipelineMultisampleStateCreateInfo where
@@ -478,44 +352,24 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
 
-instance CanReadField "pSampleMask"
-           VkPipelineMultisampleStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pSampleMask" VkPipelineMultisampleStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPSampleMask
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask})
 
         {-# INLINE readField #-}
-        readField = readVkPSampleMask
-
-instance CanWriteField "pSampleMask"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPSampleMask
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
 
 instance {-# OVERLAPPING #-}
-         HasVkAlphaToCoverageEnable VkPipelineMultisampleStateCreateInfo
+         CanWriteField "pSampleMask" VkPipelineMultisampleStateCreateInfo
          where
-        type VkAlphaToCoverageEnableMType
-               VkPipelineMultisampleStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkAlphaToCoverageEnable #-}
-        vkAlphaToCoverageEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable})
-
-        {-# INLINE vkAlphaToCoverageEnableByteOffset #-}
-        vkAlphaToCoverageEnableByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
-
-        {-# INLINE readVkAlphaToCoverageEnable #-}
-        readVkAlphaToCoverageEnable p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
-
-        {-# INLINE writeVkAlphaToCoverageEnable #-}
-        writeVkAlphaToCoverageEnable p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
 
 instance {-# OVERLAPPING #-}
          HasField "alphaToCoverageEnable"
@@ -542,42 +396,26 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
 
-instance CanReadField "alphaToCoverageEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "alphaToCoverageEnable"
            VkPipelineMultisampleStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkAlphaToCoverageEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable})
 
         {-# INLINE readField #-}
-        readField = readVkAlphaToCoverageEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
 
-instance CanWriteField "alphaToCoverageEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "alphaToCoverageEnable"
            VkPipelineMultisampleStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAlphaToCoverageEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkAlphaToOneEnable VkPipelineMultisampleStateCreateInfo where
-        type VkAlphaToOneEnableMType VkPipelineMultisampleStateCreateInfo =
-             VkBool32
-
-        {-# NOINLINE vkAlphaToOneEnable #-}
-        vkAlphaToOneEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable})
-
-        {-# INLINE vkAlphaToOneEnableByteOffset #-}
-        vkAlphaToOneEnableByteOffset ~_
-          = #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
-
-        {-# INLINE readVkAlphaToOneEnable #-}
-        readVkAlphaToOneEnable p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
-
-        {-# INLINE writeVkAlphaToOneEnable #-}
-        writeVkAlphaToOneEnable p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "alphaToOneEnable" VkPipelineMultisampleStateCreateInfo
@@ -603,48 +441,57 @@
         fieldOffset
           = #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
 
-instance CanReadField "alphaToOneEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "alphaToOneEnable"
            VkPipelineMultisampleStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkAlphaToOneEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable})
 
         {-# INLINE readField #-}
-        readField = readVkAlphaToOneEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
 
-instance CanWriteField "alphaToOneEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "alphaToOneEnable"
            VkPipelineMultisampleStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAlphaToOneEnable
+        writeField p
+          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
 
 instance Show VkPipelineMultisampleStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineMultisampleStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkRasterizationSamples = " .
-                                  showsPrec d (vkRasterizationSamples x) .
+                                showString "rasterizationSamples = " .
+                                  showsPrec d (getField @"rasterizationSamples" x) .
                                     showString ", " .
-                                      showString "vkSampleShadingEnable = " .
-                                        showsPrec d (vkSampleShadingEnable x) .
+                                      showString "sampleShadingEnable = " .
+                                        showsPrec d (getField @"sampleShadingEnable" x) .
                                           showString ", " .
-                                            showString "vkMinSampleShading = " .
-                                              showsPrec d (vkMinSampleShading x) .
+                                            showString "minSampleShading = " .
+                                              showsPrec d (getField @"minSampleShading" x) .
                                                 showString ", " .
-                                                  showString "vkPSampleMask = " .
-                                                    showsPrec d (vkPSampleMask x) .
+                                                  showString "pSampleMask = " .
+                                                    showsPrec d (getField @"pSampleMask" x) .
                                                       showString ", " .
-                                                        showString "vkAlphaToCoverageEnable = " .
-                                                          showsPrec d (vkAlphaToCoverageEnable x) .
+                                                        showString "alphaToCoverageEnable = " .
+                                                          showsPrec d
+                                                            (getField @"alphaToCoverageEnable" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkAlphaToOneEnable = " .
-                                                                showsPrec d (vkAlphaToOneEnable x) .
-                                                                  showChar '}'
+                                                              showString "alphaToOneEnable = " .
+                                                                showsPrec d
+                                                                  (getField @"alphaToOneEnable" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationConservativeStateCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationConservativeStateCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationConservativeStateCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationConservativeStateCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineRasterizationConservativeStateCreateInfoEXT
        (VkPipelineRasterizationConservativeStateCreateInfoEXT(..)) where
@@ -21,7 +22,6 @@
                                                                                       (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo
                                                                                       (VkPipelineRasterizationStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                       (unsafeDupablePerformIO)
 
@@ -33,7 +33,7 @@
 --   >     float                                                                            extraPrimitiveOverestimationSize;
 --   > } VkPipelineRasterizationConservativeStateCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html VkPipelineRasterizationConservativeStateCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html VkPipelineRasterizationConservativeStateCreateInfoEXT registry at www.khronos.org>
 data VkPipelineRasterizationConservativeStateCreateInfoEXT = VkPipelineRasterizationConservativeStateCreateInfoEXT## Addr##
                                                                                                                     ByteArray##
 
@@ -109,30 +109,6 @@
              = '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type VkSTypeMType
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
@@ -157,44 +133,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
 
-instance CanWriteField "sType"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type VkPNextMType
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext"
@@ -221,44 +179,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
 
-instance CanWriteField "pNext"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type VkFlagsMType
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = VkPipelineRasterizationConservativeStateCreateFlagsEXT
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags"
@@ -285,45 +225,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
 
-instance CanReadField "flags"
+instance {-# OVERLAPPING #-}
+         CanReadField "flags"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
 
 instance {-# OVERLAPPING #-}
-         HasVkConservativeRasterizationMode
+         CanWriteField "flags"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        type VkConservativeRasterizationModeMType
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = VkConservativeRasterizationModeEXT
-
-        {-# NOINLINE vkConservativeRasterizationMode #-}
-        vkConservativeRasterizationMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode})
-
-        {-# INLINE vkConservativeRasterizationModeByteOffset #-}
-        vkConservativeRasterizationModeByteOffset ~_
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
-
-        {-# INLINE readVkConservativeRasterizationMode #-}
-        readVkConservativeRasterizationMode p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
-
-        {-# INLINE writeVkConservativeRasterizationMode #-}
-        writeVkConservativeRasterizationMode p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "conservativeRasterizationMode"
@@ -350,45 +271,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
 
-instance CanReadField "conservativeRasterizationMode"
+instance {-# OVERLAPPING #-}
+         CanReadField "conservativeRasterizationMode"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkConservativeRasterizationMode
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode})
 
         {-# INLINE readField #-}
-        readField = readVkConservativeRasterizationMode
-
-instance CanWriteField "conservativeRasterizationMode"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkConservativeRasterizationMode
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
 
 instance {-# OVERLAPPING #-}
-         HasVkExtraPrimitiveOverestimationSize
+         CanWriteField "conservativeRasterizationMode"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        type VkExtraPrimitiveOverestimationSizeMType
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = #{type float}
-
-        {-# NOINLINE vkExtraPrimitiveOverestimationSize #-}
-        vkExtraPrimitiveOverestimationSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize})
-
-        {-# INLINE vkExtraPrimitiveOverestimationSizeByteOffset #-}
-        vkExtraPrimitiveOverestimationSizeByteOffset ~_
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
-
-        {-# INLINE readVkExtraPrimitiveOverestimationSize #-}
-        readVkExtraPrimitiveOverestimationSize p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
-
-        {-# INLINE writeVkExtraPrimitiveOverestimationSize #-}
-        writeVkExtraPrimitiveOverestimationSize p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
 
 instance {-# OVERLAPPING #-}
          HasField "extraPrimitiveOverestimationSize"
@@ -415,20 +317,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
 
-instance CanReadField "extraPrimitiveOverestimationSize"
+instance {-# OVERLAPPING #-}
+         CanReadField "extraPrimitiveOverestimationSize"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkExtraPrimitiveOverestimationSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize})
 
         {-# INLINE readField #-}
-        readField = readVkExtraPrimitiveOverestimationSize
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
 
-instance CanWriteField "extraPrimitiveOverestimationSize"
+instance {-# OVERLAPPING #-}
+         CanWriteField "extraPrimitiveOverestimationSize"
            VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkExtraPrimitiveOverestimationSize
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
 
 instance Show VkPipelineRasterizationConservativeStateCreateInfoEXT
          where
@@ -436,18 +344,18 @@
           = showString
               "VkPipelineRasterizationConservativeStateCreateInfoEXT {"
               .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkConservativeRasterizationMode = " .
-                                  showsPrec d (vkConservativeRasterizationMode x) .
+                                showString "conservativeRasterizationMode = " .
+                                  showsPrec d (getField @"conservativeRasterizationMode" x) .
                                     showString ", " .
-                                      showString "vkExtraPrimitiveOverestimationSize = " .
-                                        showsPrec d (vkExtraPrimitiveOverestimationSize x) .
-                                          showChar '}'
+                                      showString "extraPrimitiveOverestimationSize = " .
+                                        showsPrec d (getField @"extraPrimitiveOverestimationSize" x)
+                                          . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo
        (VkPipelineRasterizationStateCreateInfo(..)) where
@@ -18,7 +19,6 @@
 import           Graphics.Vulkan.Types.Enum.VkFrontFace     (VkFrontFace)
 import           Graphics.Vulkan.Types.Enum.VkPolygonMode   (VkPolygonMode)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineRasterizationStateCreateInfo {
@@ -37,7 +37,7 @@
 --   >     float                  lineWidth;
 --   > } VkPipelineRasterizationStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineRasterizationStateCreateInfo.html VkPipelineRasterizationStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineRasterizationStateCreateInfo.html VkPipelineRasterizationStateCreateInfo registry at www.khronos.org>
 data VkPipelineRasterizationStateCreateInfo = VkPipelineRasterizationStateCreateInfo## Addr##
                                                                                       ByteArray##
 
@@ -97,28 +97,6 @@
         type StructExtends VkPipelineRasterizationStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineRasterizationStateCreateInfo where
-        type VkSTypeMType VkPipelineRasterizationStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineRasterizationStateCreateInfo where
         type FieldType "sType" VkPipelineRasterizationStateCreateInfo =
              VkStructureType
@@ -136,41 +114,22 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, sType}
 
-instance CanReadField "sType"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineRasterizationStateCreateInfo where
-        type VkPNextMType VkPipelineRasterizationStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineRasterizationStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineRasterizationStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineRasterizationStateCreateInfo where
@@ -190,42 +149,22 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineRasterizationStateCreateInfo where
-        type VkFlagsMType VkPipelineRasterizationStateCreateInfo =
-             VkPipelineRasterizationStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineRasterizationStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineRasterizationStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineRasterizationStateCreateInfo where
@@ -245,42 +184,22 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, flags}
 
-instance CanReadField "flags"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkDepthClampEnable VkPipelineRasterizationStateCreateInfo where
-        type VkDepthClampEnableMType VkPipelineRasterizationStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkDepthClampEnable #-}
-        vkDepthClampEnable x
+         CanReadField "flags" VkPipelineRasterizationStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable})
-
-        {-# INLINE vkDepthClampEnableByteOffset #-}
-        vkDepthClampEnableByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, flags})
 
-        {-# INLINE readVkDepthClampEnable #-}
-        readVkDepthClampEnable p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, flags}
 
-        {-# INLINE writeVkDepthClampEnable #-}
-        writeVkDepthClampEnable p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineRasterizationStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "depthClampEnable" VkPipelineRasterizationStateCreateInfo
@@ -306,44 +225,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
 
-instance CanReadField "depthClampEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthClampEnable"
            VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthClampEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable})
 
         {-# INLINE readField #-}
-        readField = readVkDepthClampEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
 
-instance CanWriteField "depthClampEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthClampEnable"
            VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthClampEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkRasterizerDiscardEnable VkPipelineRasterizationStateCreateInfo
-         where
-        type VkRasterizerDiscardEnableMType
-               VkPipelineRasterizationStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkRasterizerDiscardEnable #-}
-        vkRasterizerDiscardEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable})
-
-        {-# INLINE vkRasterizerDiscardEnableByteOffset #-}
-        vkRasterizerDiscardEnableByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
-
-        {-# INLINE readVkRasterizerDiscardEnable #-}
-        readVkRasterizerDiscardEnable p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
-
-        {-# INLINE writeVkRasterizerDiscardEnable #-}
-        writeVkRasterizerDiscardEnable p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "rasterizerDiscardEnable"
@@ -370,42 +271,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
 
-instance CanReadField "rasterizerDiscardEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "rasterizerDiscardEnable"
            VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkRasterizerDiscardEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable})
 
         {-# INLINE readField #-}
-        readField = readVkRasterizerDiscardEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
 
-instance CanWriteField "rasterizerDiscardEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "rasterizerDiscardEnable"
            VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkRasterizerDiscardEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkPolygonMode VkPipelineRasterizationStateCreateInfo where
-        type VkPolygonModeMType VkPipelineRasterizationStateCreateInfo =
-             VkPolygonMode
-
-        {-# NOINLINE vkPolygonMode #-}
-        vkPolygonMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, polygonMode})
-
-        {-# INLINE vkPolygonModeByteOffset #-}
-        vkPolygonModeByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
-
-        {-# INLINE readVkPolygonMode #-}
-        readVkPolygonMode p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
-
-        {-# INLINE writeVkPolygonMode #-}
-        writeVkPolygonMode p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "polygonMode" VkPipelineRasterizationStateCreateInfo where
@@ -429,42 +314,24 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
 
-instance CanReadField "polygonMode"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "polygonMode" VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPolygonMode
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, polygonMode})
 
         {-# INLINE readField #-}
-        readField = readVkPolygonMode
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
 
-instance CanWriteField "polygonMode"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "polygonMode" VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPolygonMode
-
-instance {-# OVERLAPPING #-}
-         HasVkCullMode VkPipelineRasterizationStateCreateInfo where
-        type VkCullModeMType VkPipelineRasterizationStateCreateInfo =
-             VkCullModeFlags
-
-        {-# NOINLINE vkCullMode #-}
-        vkCullMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, cullMode})
-
-        {-# INLINE vkCullModeByteOffset #-}
-        vkCullModeByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
-
-        {-# INLINE readVkCullMode #-}
-        readVkCullMode p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
-
-        {-# INLINE writeVkCullMode #-}
-        writeVkCullMode p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
 
 instance {-# OVERLAPPING #-}
          HasField "cullMode" VkPipelineRasterizationStateCreateInfo where
@@ -486,42 +353,24 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
 
-instance CanReadField "cullMode"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "cullMode" VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkCullMode
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, cullMode})
 
         {-# INLINE readField #-}
-        readField = readVkCullMode
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
 
-instance CanWriteField "cullMode"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "cullMode" VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkCullMode
-
-instance {-# OVERLAPPING #-}
-         HasVkFrontFace VkPipelineRasterizationStateCreateInfo where
-        type VkFrontFaceMType VkPipelineRasterizationStateCreateInfo =
-             VkFrontFace
-
-        {-# NOINLINE vkFrontFace #-}
-        vkFrontFace x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, frontFace})
-
-        {-# INLINE vkFrontFaceByteOffset #-}
-        vkFrontFaceByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
-
-        {-# INLINE readVkFrontFace #-}
-        readVkFrontFace p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
-
-        {-# INLINE writeVkFrontFace #-}
-        writeVkFrontFace p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
 
 instance {-# OVERLAPPING #-}
          HasField "frontFace" VkPipelineRasterizationStateCreateInfo where
@@ -544,42 +393,24 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
 
-instance CanReadField "frontFace"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "frontFace" VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkFrontFace
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, frontFace})
 
         {-# INLINE readField #-}
-        readField = readVkFrontFace
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
 
-instance CanWriteField "frontFace"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "frontFace" VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkFrontFace
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBiasEnable VkPipelineRasterizationStateCreateInfo where
-        type VkDepthBiasEnableMType VkPipelineRasterizationStateCreateInfo
-             = VkBool32
-
-        {-# NOINLINE vkDepthBiasEnable #-}
-        vkDepthBiasEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable})
-
-        {-# INLINE vkDepthBiasEnableByteOffset #-}
-        vkDepthBiasEnableByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
-
-        {-# INLINE readVkDepthBiasEnable #-}
-        readVkDepthBiasEnable p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
-
-        {-# INLINE writeVkDepthBiasEnable #-}
-        writeVkDepthBiasEnable p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
 
 instance {-# OVERLAPPING #-}
          HasField "depthBiasEnable" VkPipelineRasterizationStateCreateInfo
@@ -605,44 +436,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
 
-instance CanReadField "depthBiasEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthBiasEnable"
            VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthBiasEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable})
 
         {-# INLINE readField #-}
-        readField = readVkDepthBiasEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
 
-instance CanWriteField "depthBiasEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthBiasEnable"
            VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthBiasEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBiasConstantFactor VkPipelineRasterizationStateCreateInfo
-         where
-        type VkDepthBiasConstantFactorMType
-               VkPipelineRasterizationStateCreateInfo
-             = #{type float}
-
-        {-# NOINLINE vkDepthBiasConstantFactor #-}
-        vkDepthBiasConstantFactor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor})
-
-        {-# INLINE vkDepthBiasConstantFactorByteOffset #-}
-        vkDepthBiasConstantFactorByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
-
-        {-# INLINE readVkDepthBiasConstantFactor #-}
-        readVkDepthBiasConstantFactor p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
-
-        {-# INLINE writeVkDepthBiasConstantFactor #-}
-        writeVkDepthBiasConstantFactor p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "depthBiasConstantFactor"
@@ -669,42 +482,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
 
-instance CanReadField "depthBiasConstantFactor"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthBiasConstantFactor"
            VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthBiasConstantFactor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor})
 
         {-# INLINE readField #-}
-        readField = readVkDepthBiasConstantFactor
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
 
-instance CanWriteField "depthBiasConstantFactor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthBiasConstantFactor"
            VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthBiasConstantFactor
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBiasClamp VkPipelineRasterizationStateCreateInfo where
-        type VkDepthBiasClampMType VkPipelineRasterizationStateCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkDepthBiasClamp #-}
-        vkDepthBiasClamp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp})
-
-        {-# INLINE vkDepthBiasClampByteOffset #-}
-        vkDepthBiasClampByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
-
-        {-# INLINE readVkDepthBiasClamp #-}
-        readVkDepthBiasClamp p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
-
-        {-# INLINE writeVkDepthBiasClamp #-}
-        writeVkDepthBiasClamp p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
 
 instance {-# OVERLAPPING #-}
          HasField "depthBiasClamp" VkPipelineRasterizationStateCreateInfo
@@ -730,44 +527,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
 
-instance CanReadField "depthBiasClamp"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthBiasClamp"
            VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthBiasClamp
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp})
 
         {-# INLINE readField #-}
-        readField = readVkDepthBiasClamp
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
 
-instance CanWriteField "depthBiasClamp"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthBiasClamp"
            VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthBiasClamp
-
-instance {-# OVERLAPPING #-}
-         HasVkDepthBiasSlopeFactor VkPipelineRasterizationStateCreateInfo
-         where
-        type VkDepthBiasSlopeFactorMType
-               VkPipelineRasterizationStateCreateInfo
-             = #{type float}
-
-        {-# NOINLINE vkDepthBiasSlopeFactor #-}
-        vkDepthBiasSlopeFactor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor})
-
-        {-# INLINE vkDepthBiasSlopeFactorByteOffset #-}
-        vkDepthBiasSlopeFactorByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
-
-        {-# INLINE readVkDepthBiasSlopeFactor #-}
-        readVkDepthBiasSlopeFactor p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
-
-        {-# INLINE writeVkDepthBiasSlopeFactor #-}
-        writeVkDepthBiasSlopeFactor p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
 
 instance {-# OVERLAPPING #-}
          HasField "depthBiasSlopeFactor"
@@ -794,42 +573,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
 
-instance CanReadField "depthBiasSlopeFactor"
+instance {-# OVERLAPPING #-}
+         CanReadField "depthBiasSlopeFactor"
            VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkDepthBiasSlopeFactor
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor})
 
         {-# INLINE readField #-}
-        readField = readVkDepthBiasSlopeFactor
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
 
-instance CanWriteField "depthBiasSlopeFactor"
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthBiasSlopeFactor"
            VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthBiasSlopeFactor
-
-instance {-# OVERLAPPING #-}
-         HasVkLineWidth VkPipelineRasterizationStateCreateInfo where
-        type VkLineWidthMType VkPipelineRasterizationStateCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkLineWidth #-}
-        vkLineWidth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, lineWidth})
-
-        {-# INLINE vkLineWidthByteOffset #-}
-        vkLineWidthByteOffset ~_
-          = #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
-
-        {-# INLINE readVkLineWidth #-}
-        readVkLineWidth p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
-
-        {-# INLINE writeVkLineWidth #-}
-        writeVkLineWidth p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
 
 instance {-# OVERLAPPING #-}
          HasField "lineWidth" VkPipelineRasterizationStateCreateInfo where
@@ -852,80 +615,91 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
 
-instance CanReadField "lineWidth"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "lineWidth" VkPipelineRasterizationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkLineWidth
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, lineWidth})
 
         {-# INLINE readField #-}
-        readField = readVkLineWidth
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
 
-instance CanWriteField "lineWidth"
-           VkPipelineRasterizationStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "lineWidth" VkPipelineRasterizationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkLineWidth
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
 
 instance Show VkPipelineRasterizationStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineRasterizationStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDepthClampEnable = " .
-                                  showsPrec d (vkDepthClampEnable x) .
+                                showString "depthClampEnable = " .
+                                  showsPrec d (getField @"depthClampEnable" x) .
                                     showString ", " .
-                                      showString "vkRasterizerDiscardEnable = " .
-                                        showsPrec d (vkRasterizerDiscardEnable x) .
+                                      showString "rasterizerDiscardEnable = " .
+                                        showsPrec d (getField @"rasterizerDiscardEnable" x) .
                                           showString ", " .
-                                            showString "vkPolygonMode = " .
-                                              showsPrec d (vkPolygonMode x) .
+                                            showString "polygonMode = " .
+                                              showsPrec d (getField @"polygonMode" x) .
                                                 showString ", " .
-                                                  showString "vkCullMode = " .
-                                                    showsPrec d (vkCullMode x) .
+                                                  showString "cullMode = " .
+                                                    showsPrec d (getField @"cullMode" x) .
                                                       showString ", " .
-                                                        showString "vkFrontFace = " .
-                                                          showsPrec d (vkFrontFace x) .
+                                                        showString "frontFace = " .
+                                                          showsPrec d (getField @"frontFace" x) .
                                                             showString ", " .
-                                                              showString "vkDepthBiasEnable = " .
-                                                                showsPrec d (vkDepthBiasEnable x) .
+                                                              showString "depthBiasEnable = " .
+                                                                showsPrec d
+                                                                  (getField @"depthBiasEnable" x)
+                                                                  .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkDepthBiasConstantFactor = "
+                                                                      "depthBiasConstantFactor = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkDepthBiasConstantFactor
+                                                                        (getField
+                                                                           @"depthBiasConstantFactor"
                                                                            x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkDepthBiasClamp = "
+                                                                            "depthBiasClamp = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkDepthBiasClamp x)
+                                                                              (getField
+                                                                                 @"depthBiasClamp"
+                                                                                 x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkDepthBiasSlopeFactor = "
+                                                                                  "depthBiasSlopeFactor = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkDepthBiasSlopeFactor
+                                                                                    (getField
+                                                                                       @"depthBiasSlopeFactor"
                                                                                        x)
                                                                                     .
                                                                                     showString ", "
                                                                                       .
                                                                                       showString
-                                                                                        "vkLineWidth = "
+                                                                                        "lineWidth = "
                                                                                         .
                                                                                         showsPrec d
-                                                                                          (vkLineWidth
+                                                                                          (getField
+                                                                                             @"lineWidth"
                                                                                              x)
                                                                                           .
                                                                                           showChar
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateRasterizationOrderAMD.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateRasterizationOrderAMD.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateRasterizationOrderAMD.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineRasterizationStateRasterizationOrderAMD.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateRasterizationOrderAMD
        (VkPipelineRasterizationStateRasterizationOrderAMD(..)) where
@@ -19,7 +20,6 @@
                                                                                       (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateCreateInfo
                                                                                       (VkPipelineRasterizationStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                       (unsafeDupablePerformIO)
 
@@ -29,7 +29,7 @@
 --   >     VkRasterizationOrderAMD          rasterizationOrder;
 --   > } VkPipelineRasterizationStateRasterizationOrderAMD;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html VkPipelineRasterizationStateRasterizationOrderAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html VkPipelineRasterizationStateRasterizationOrderAMD registry at www.khronos.org>
 data VkPipelineRasterizationStateRasterizationOrderAMD = VkPipelineRasterizationStateRasterizationOrderAMD## Addr##
                                                                                                             ByteArray##
 
@@ -97,28 +97,6 @@
              = '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineRasterizationStateRasterizationOrderAMD where
-        type VkSTypeMType VkPipelineRasterizationStateRasterizationOrderAMD
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineRasterizationStateRasterizationOrderAMD
          where
         type FieldType "sType"
@@ -142,42 +120,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
 
-instance CanReadField "sType"
+instance {-# OVERLAPPING #-}
+         CanReadField "sType"
            VkPipelineRasterizationStateRasterizationOrderAMD
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
 
-instance CanWriteField "sType"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType"
            VkPipelineRasterizationStateRasterizationOrderAMD
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineRasterizationStateRasterizationOrderAMD where
-        type VkPNextMType VkPipelineRasterizationStateRasterizationOrderAMD
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineRasterizationStateRasterizationOrderAMD
@@ -203,45 +165,26 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
 
-instance CanReadField "pNext"
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext"
            VkPipelineRasterizationStateRasterizationOrderAMD
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkRasterizationOrder
+         CanWriteField "pNext"
            VkPipelineRasterizationStateRasterizationOrderAMD
          where
-        type VkRasterizationOrderMType
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = VkRasterizationOrderAMD
-
-        {-# NOINLINE vkRasterizationOrder #-}
-        vkRasterizationOrder x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder})
-
-        {-# INLINE vkRasterizationOrderByteOffset #-}
-        vkRasterizationOrderByteOffset ~_
-          = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
-
-        {-# INLINE readVkRasterizationOrder #-}
-        readVkRasterizationOrder p
-          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
-
-        {-# INLINE writeVkRasterizationOrder #-}
-        writeVkRasterizationOrder p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "rasterizationOrder"
@@ -268,31 +211,37 @@
         fieldOffset
           = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
 
-instance CanReadField "rasterizationOrder"
+instance {-# OVERLAPPING #-}
+         CanReadField "rasterizationOrder"
            VkPipelineRasterizationStateRasterizationOrderAMD
          where
-        {-# INLINE getField #-}
-        getField = vkRasterizationOrder
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder})
 
         {-# INLINE readField #-}
-        readField = readVkRasterizationOrder
+        readField p
+          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
 
-instance CanWriteField "rasterizationOrder"
+instance {-# OVERLAPPING #-}
+         CanWriteField "rasterizationOrder"
            VkPipelineRasterizationStateRasterizationOrderAMD
          where
         {-# INLINE writeField #-}
-        writeField = writeVkRasterizationOrder
+        writeField p
+          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
 
 instance Show VkPipelineRasterizationStateRasterizationOrderAMD
          where
         showsPrec d x
           = showString "VkPipelineRasterizationStateRasterizationOrderAMD {"
               .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkRasterizationOrder = " .
-                            showsPrec d (vkRasterizationOrder x) . showChar '}'
+                          showString "rasterizationOrder = " .
+                            showsPrec d (getField @"rasterizationOrder" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineSampleLocationsStateCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineSampleLocationsStateCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineSampleLocationsStateCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineSampleLocationsStateCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineSampleLocationsStateCreateInfoEXT
        (VkPipelineSampleLocationsStateCreateInfoEXT(..)) where
@@ -21,7 +22,6 @@
                                                                                     (VkPipelineMultisampleStateCreateInfo)
 import           Graphics.Vulkan.Types.Struct.VkSampleLocationsInfoEXT
                                                                                     (VkSampleLocationsInfoEXT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe
                                                                                     (unsafeDupablePerformIO)
 
@@ -32,7 +32,7 @@
 --   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
 --   > } VkPipelineSampleLocationsStateCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html VkPipelineSampleLocationsStateCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html VkPipelineSampleLocationsStateCreateInfoEXT registry at www.khronos.org>
 data VkPipelineSampleLocationsStateCreateInfoEXT = VkPipelineSampleLocationsStateCreateInfoEXT## Addr##
                                                                                                 ByteArray##
 
@@ -95,28 +95,6 @@
              '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineSampleLocationsStateCreateInfoEXT where
-        type VkSTypeMType VkPipelineSampleLocationsStateCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineSampleLocationsStateCreateInfoEXT where
         type FieldType "sType" VkPipelineSampleLocationsStateCreateInfoEXT
              = VkStructureType
@@ -138,42 +116,24 @@
         fieldOffset
           = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
 
-instance CanReadField "sType"
-           VkPipelineSampleLocationsStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineSampleLocationsStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
 
-instance CanWriteField "sType"
-           VkPipelineSampleLocationsStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineSampleLocationsStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineSampleLocationsStateCreateInfoEXT where
-        type VkPNextMType VkPipelineSampleLocationsStateCreateInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT where
@@ -197,45 +157,24 @@
         fieldOffset
           = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineSampleLocationsStateCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationsEnable
-           VkPipelineSampleLocationsStateCreateInfoEXT
+         CanWriteField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
          where
-        type VkSampleLocationsEnableMType
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = VkBool32
-
-        {-# NOINLINE vkSampleLocationsEnable #-}
-        vkSampleLocationsEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable})
-
-        {-# INLINE vkSampleLocationsEnableByteOffset #-}
-        vkSampleLocationsEnableByteOffset ~_
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
-
-        {-# INLINE readVkSampleLocationsEnable #-}
-        readVkSampleLocationsEnable p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
-
-        {-# INLINE writeVkSampleLocationsEnable #-}
-        writeVkSampleLocationsEnable p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationsEnable"
@@ -262,45 +201,26 @@
         fieldOffset
           = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
 
-instance CanReadField "sampleLocationsEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationsEnable"
            VkPipelineSampleLocationsStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationsEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationsEnable
-
-instance CanWriteField "sampleLocationsEnable"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationsEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
 
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationsInfo
+         CanWriteField "sampleLocationsEnable"
            VkPipelineSampleLocationsStateCreateInfoEXT
          where
-        type VkSampleLocationsInfoMType
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = VkSampleLocationsInfoEXT
-
-        {-# NOINLINE vkSampleLocationsInfo #-}
-        vkSampleLocationsInfo x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo})
-
-        {-# INLINE vkSampleLocationsInfoByteOffset #-}
-        vkSampleLocationsInfoByteOffset ~_
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
-
-        {-# INLINE readVkSampleLocationsInfo #-}
-        readVkSampleLocationsInfo p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
-
-        {-# INLINE writeVkSampleLocationsInfo #-}
-        writeVkSampleLocationsInfo p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationsInfo"
@@ -327,32 +247,38 @@
         fieldOffset
           = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
 
-instance CanReadField "sampleLocationsInfo"
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationsInfo"
            VkPipelineSampleLocationsStateCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationsInfo
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationsInfo
+        readField p
+          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
 
-instance CanWriteField "sampleLocationsInfo"
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleLocationsInfo"
            VkPipelineSampleLocationsStateCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationsInfo
+        writeField p
+          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
 
 instance Show VkPipelineSampleLocationsStateCreateInfoEXT where
         showsPrec d x
           = showString "VkPipelineSampleLocationsStateCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSampleLocationsEnable = " .
-                            showsPrec d (vkSampleLocationsEnable x) .
+                          showString "sampleLocationsEnable = " .
+                            showsPrec d (getField @"sampleLocationsEnable" x) .
                               showString ", " .
-                                showString "vkSampleLocationsInfo = " .
-                                  showsPrec d (vkSampleLocationsInfo x) . showChar '}'
+                                showString "sampleLocationsInfo = " .
+                                  showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineShaderStageCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineShaderStageCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineShaderStageCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineShaderStageCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo
        (VkPipelineShaderStageCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                     (VkShaderModule)
 import           Graphics.Vulkan.Types.Struct.VkSpecializationInfo (VkSpecializationInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineShaderStageCreateInfo {
@@ -30,7 +30,7 @@
 --   >     const VkSpecializationInfo* pSpecializationInfo;
 --   > } VkPipelineShaderStageCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineShaderStageCreateInfo.html VkPipelineShaderStageCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineShaderStageCreateInfo.html VkPipelineShaderStageCreateInfo registry at www.khronos.org>
 data VkPipelineShaderStageCreateInfo = VkPipelineShaderStageCreateInfo## Addr##
                                                                         ByteArray##
 
@@ -85,27 +85,6 @@
         type StructExtends VkPipelineShaderStageCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineShaderStageCreateInfo where
-        type VkSTypeMType VkPipelineShaderStageCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineShaderStageCreateInfo where
         type FieldType "sType" VkPipelineShaderStageCreateInfo =
              VkStructureType
@@ -121,38 +100,22 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineShaderStageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineShaderStageCreateInfo where
-        type VkPNextMType VkPipelineShaderStageCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineShaderStageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineShaderStageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineShaderStageCreateInfo where
@@ -169,39 +132,22 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineShaderStageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineShaderStageCreateInfo where
-        type VkFlagsMType VkPipelineShaderStageCreateInfo =
-             VkPipelineShaderStageCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineShaderStageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineShaderStageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineShaderStageCreateInfo where
@@ -219,39 +165,22 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineShaderStageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkStage VkPipelineShaderStageCreateInfo where
-        type VkStageMType VkPipelineShaderStageCreateInfo =
-             VkShaderStageFlagBits
-
-        {-# NOINLINE vkStage #-}
-        vkStage x
+         CanReadField "flags" VkPipelineShaderStageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, stage})
-
-        {-# INLINE vkStageByteOffset #-}
-        vkStageByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, stage}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, flags})
 
-        {-# INLINE readVkStage #-}
-        readVkStage p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, stage}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, flags}
 
-        {-# INLINE writeVkStage #-}
-        writeVkStage p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, stage}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineShaderStageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "stage" VkPipelineShaderStageCreateInfo where
@@ -269,38 +198,22 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, stage}
 
-instance CanReadField "stage" VkPipelineShaderStageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkStage
-
-        {-# INLINE readField #-}
-        readField = readVkStage
-
-instance CanWriteField "stage" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStage
-
 instance {-# OVERLAPPING #-}
-         HasVkModule VkPipelineShaderStageCreateInfo where
-        type VkModuleMType VkPipelineShaderStageCreateInfo = VkShaderModule
-
-        {-# NOINLINE vkModule #-}
-        vkModule x
+         CanReadField "stage" VkPipelineShaderStageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, module})
-
-        {-# INLINE vkModuleByteOffset #-}
-        vkModuleByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, module}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, stage})
 
-        {-# INLINE readVkModule #-}
-        readVkModule p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, module}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, stage}
 
-        {-# INLINE writeVkModule #-}
-        writeVkModule p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, module}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stage" VkPipelineShaderStageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, stage}
 
 instance {-# OVERLAPPING #-}
          HasField "module" VkPipelineShaderStageCreateInfo where
@@ -319,39 +232,22 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, module}
 
-instance CanReadField "module" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkModule
-
-        {-# INLINE readField #-}
-        readField = readVkModule
-
-instance CanWriteField "module" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkModule
-
 instance {-# OVERLAPPING #-}
-         HasVkPName VkPipelineShaderStageCreateInfo where
-        type VkPNameMType VkPipelineShaderStageCreateInfo = CString
-
-        {-# NOINLINE vkPName #-}
-        vkPName x
+         CanReadField "module" VkPipelineShaderStageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pName})
-
-        {-# INLINE vkPNameByteOffset #-}
-        vkPNameByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, pName}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, module})
 
-        {-# INLINE readVkPName #-}
-        readVkPName p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pName}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, module}
 
-        {-# INLINE writeVkPName #-}
-        writeVkPName p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pName}
+instance {-# OVERLAPPING #-}
+         CanWriteField "module" VkPipelineShaderStageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, module}
 
 instance {-# OVERLAPPING #-}
          HasField "pName" VkPipelineShaderStageCreateInfo where
@@ -368,39 +264,22 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, pName}
 
-instance CanReadField "pName" VkPipelineShaderStageCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPName
-
-        {-# INLINE readField #-}
-        readField = readVkPName
-
-instance CanWriteField "pName" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPName
-
 instance {-# OVERLAPPING #-}
-         HasVkPSpecializationInfo VkPipelineShaderStageCreateInfo where
-        type VkPSpecializationInfoMType VkPipelineShaderStageCreateInfo =
-             Ptr VkSpecializationInfo
-
-        {-# NOINLINE vkPSpecializationInfo #-}
-        vkPSpecializationInfo x
+         CanReadField "pName" VkPipelineShaderStageCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo})
-
-        {-# INLINE vkPSpecializationInfoByteOffset #-}
-        vkPSpecializationInfoByteOffset ~_
-          = #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pName})
 
-        {-# INLINE readVkPSpecializationInfo #-}
-        readVkPSpecializationInfo p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pName}
 
-        {-# INLINE writeVkPSpecializationInfo #-}
-        writeVkPSpecializationInfo p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pName" VkPipelineShaderStageCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pName}
 
 instance {-# OVERLAPPING #-}
          HasField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
@@ -426,42 +305,46 @@
         fieldOffset
           = #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
 
-instance CanReadField "pSpecializationInfo"
-           VkPipelineShaderStageCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPSpecializationInfo
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo})
 
         {-# INLINE readField #-}
-        readField = readVkPSpecializationInfo
+        readField p
+          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
 
-instance CanWriteField "pSpecializationInfo"
-           VkPipelineShaderStageCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPSpecializationInfo
+        writeField p
+          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
 
 instance Show VkPipelineShaderStageCreateInfo where
         showsPrec d x
           = showString "VkPipelineShaderStageCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkStage = " .
-                                  showsPrec d (vkStage x) .
+                                showString "stage = " .
+                                  showsPrec d (getField @"stage" x) .
                                     showString ", " .
-                                      showString "vkModule = " .
-                                        showsPrec d (vkModule x) .
+                                      showString "module = " .
+                                        showsPrec d (getField @"module" x) .
                                           showString ", " .
-                                            showString "vkPName = " .
-                                              showsPrec d (vkPName x) .
+                                            showString "pName = " .
+                                              showsPrec d (getField @"pName" x) .
                                                 showString ", " .
-                                                  showString "vkPSpecializationInfo = " .
-                                                    showsPrec d (vkPSpecializationInfo x) .
-                                                      showChar '}'
+                                                  showString "pSpecializationInfo = " .
+                                                    showsPrec d (getField @"pSpecializationInfo" x)
+                                                      . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfo.hsc
@@ -0,0 +1,247 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfo
+       (VkPipelineTessellationDomainOriginStateCreateInfo(..)) where
+import           Foreign.Storable
+                                                                                     (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+                                                                                     (VkStructureType)
+import           Graphics.Vulkan.Types.Enum.VkTessellationDomainOrigin
+                                                                                     (VkTessellationDomainOrigin)
+import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
+                                                                                     (VkPipelineTessellationStateCreateInfo)
+import           System.IO.Unsafe
+                                                                                     (unsafeDupablePerformIO)
+
+-- | > typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkTessellationDomainOrigin    domainOrigin;
+--   > } VkPipelineTessellationDomainOriginStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html VkPipelineTessellationDomainOriginStateCreateInfo registry at www.khronos.org>
+data VkPipelineTessellationDomainOriginStateCreateInfo = VkPipelineTessellationDomainOriginStateCreateInfo## Addr##
+                                                                                                            ByteArray##
+
+instance Eq VkPipelineTessellationDomainOriginStateCreateInfo where
+        (VkPipelineTessellationDomainOriginStateCreateInfo## a _) ==
+          x@(VkPipelineTessellationDomainOriginStateCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPipelineTessellationDomainOriginStateCreateInfo
+         where
+        (VkPipelineTessellationDomainOriginStateCreateInfo## a _) `compare`
+          x@(VkPipelineTessellationDomainOriginStateCreateInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkPipelineTessellationDomainOriginStateCreateInfo
+         where
+        unsafeAddr (VkPipelineTessellationDomainOriginStateCreateInfo## a _)
+          = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray
+          (VkPipelineTessellationDomainOriginStateCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPipelineTessellationDomainOriginStateCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfoKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfoKHR
+       (VkPipelineTessellationDomainOriginStateCreateInfo(..),
+        VkPipelineTessellationDomainOriginStateCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfo
+                                                                                                 (VkPipelineTessellationDomainOriginStateCreateInfo (..))
+
+-- | Alias for `VkPipelineTessellationDomainOriginStateCreateInfo`
+type VkPipelineTessellationDomainOriginStateCreateInfoKHR =
+     VkPipelineTessellationDomainOriginStateCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationDomainOriginStateCreateInfoKHR.hsc
+++ /dev/null
@@ -1,311 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfoKHR
-       (VkPipelineTessellationDomainOriginStateCreateInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                     (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                     (VkStructureType)
-import           Graphics.Vulkan.Types.Enum.VkTessellationDomainOriginKHR
-                                                                                     (VkTessellationDomainOriginKHR)
-import           Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
-                                                                                     (VkPipelineTessellationStateCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                     (unsafeDupablePerformIO)
-
--- | > typedef struct VkPipelineTessellationDomainOriginStateCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkTessellationDomainOriginKHR    domainOrigin;
---   > } VkPipelineTessellationDomainOriginStateCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html VkPipelineTessellationDomainOriginStateCreateInfoKHR registry at www.khronos.org>
-data VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfoKHR## Addr##
-                                                                                                                  ByteArray##
-
-instance Eq VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        (VkPipelineTessellationDomainOriginStateCreateInfoKHR## a _) ==
-          x@(VkPipelineTessellationDomainOriginStateCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        (VkPipelineTessellationDomainOriginStateCreateInfoKHR## a _)
-          `compare`
-          x@(VkPipelineTessellationDomainOriginStateCreateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        sizeOf ~_
-          = #{size VkPipelineTessellationDomainOriginStateCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineTessellationDomainOriginStateCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        unsafeAddr
-          (VkPipelineTessellationDomainOriginStateCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray
-          (VkPipelineTessellationDomainOriginStateCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkPipelineTessellationDomainOriginStateCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type StructFields
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = '["sType", "pNext", "domainOrigin"] -- ' closing tick for hsc2hs
-        type CUnionType
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = '[VkPipelineTessellationStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type VkSTypeMType
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type FieldType "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             =
-             #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, sType}
-        type FieldIsArray "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, sType}
-
-instance CanReadField "sType"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type VkPNextMType
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type FieldType "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             =
-             #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, pNext}
-
-instance CanReadField "pNext"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkDomainOrigin
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type VkDomainOriginMType
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = VkTessellationDomainOriginKHR
-
-        {-# NOINLINE vkDomainOrigin #-}
-        vkDomainOrigin x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, domainOrigin})
-
-        {-# INLINE vkDomainOriginByteOffset #-}
-        vkDomainOriginByteOffset ~_
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, domainOrigin}
-
-        {-# INLINE readVkDomainOrigin #-}
-        readVkDomainOrigin p
-          = peekByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, domainOrigin}
-
-        {-# INLINE writeVkDomainOrigin #-}
-        writeVkDomainOrigin p
-          = pokeByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, domainOrigin}
-
-instance {-# OVERLAPPING #-}
-         HasField "domainOrigin"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        type FieldType "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = VkTessellationDomainOriginKHR
-        type FieldOptional "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             =
-             #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, domainOrigin}
-        type FieldIsArray "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfoKHR, domainOrigin}
-
-instance CanReadField "domainOrigin"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkDomainOrigin
-
-        {-# INLINE readField #-}
-        readField = readVkDomainOrigin
-
-instance CanWriteField "domainOrigin"
-           VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDomainOrigin
-
-instance Show VkPipelineTessellationDomainOriginStateCreateInfoKHR
-         where
-        showsPrec d x
-          = showString
-              "VkPipelineTessellationDomainOriginStateCreateInfoKHR {"
-              .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkDomainOrigin = " .
-                            showsPrec d (vkDomainOrigin x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineTessellationStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
        (VkPipelineTessellationStateCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkPipelineTessellationStateCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineTessellationStateCreateInfo {
@@ -24,7 +24,7 @@
 --   >     uint32_t               patchControlPoints;
 --   > } VkPipelineTessellationStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineTessellationStateCreateInfo.html VkPipelineTessellationStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineTessellationStateCreateInfo.html VkPipelineTessellationStateCreateInfo registry at www.khronos.org>
 data VkPipelineTessellationStateCreateInfo = VkPipelineTessellationStateCreateInfo## Addr##
                                                                                     ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkPipelineTessellationStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineTessellationStateCreateInfo where
-        type VkSTypeMType VkPipelineTessellationStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineTessellationStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineTessellationStateCreateInfo where
         type FieldType "sType" VkPipelineTessellationStateCreateInfo =
              VkStructureType
@@ -120,40 +98,22 @@
         fieldOffset
           = #{offset VkPipelineTessellationStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineTessellationStateCreateInfo where
-        type VkPNextMType VkPipelineTessellationStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineTessellationStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineTessellationStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineTessellationStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineTessellationStateCreateInfo where
@@ -173,41 +133,22 @@
         fieldOffset
           = #{offset VkPipelineTessellationStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineTessellationStateCreateInfo where
-        type VkFlagsMType VkPipelineTessellationStateCreateInfo =
-             VkPipelineTessellationStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineTessellationStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineTessellationStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineTessellationStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineTessellationStateCreateInfo where
@@ -227,42 +168,22 @@
         fieldOffset
           = #{offset VkPipelineTessellationStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags"
-           VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPatchControlPoints VkPipelineTessellationStateCreateInfo where
-        type VkPatchControlPointsMType
-               VkPipelineTessellationStateCreateInfo
-             = Word32
-
-        {-# NOINLINE vkPatchControlPoints #-}
-        vkPatchControlPoints x
+         CanReadField "flags" VkPipelineTessellationStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints})
-
-        {-# INLINE vkPatchControlPointsByteOffset #-}
-        vkPatchControlPointsByteOffset ~_
-          = #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, flags})
 
-        {-# INLINE readVkPatchControlPoints #-}
-        readVkPatchControlPoints p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, flags}
 
-        {-# INLINE writeVkPatchControlPoints #-}
-        writeVkPatchControlPoints p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineTessellationStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "patchControlPoints" VkPipelineTessellationStateCreateInfo
@@ -288,32 +209,38 @@
         fieldOffset
           = #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
 
-instance CanReadField "patchControlPoints"
+instance {-# OVERLAPPING #-}
+         CanReadField "patchControlPoints"
            VkPipelineTessellationStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPatchControlPoints
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints})
 
         {-# INLINE readField #-}
-        readField = readVkPatchControlPoints
+        readField p
+          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
 
-instance CanWriteField "patchControlPoints"
+instance {-# OVERLAPPING #-}
+         CanWriteField "patchControlPoints"
            VkPipelineTessellationStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPatchControlPoints
+        writeField p
+          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
 
 instance Show VkPipelineTessellationStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineTessellationStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkPatchControlPoints = " .
-                                  showsPrec d (vkPatchControlPoints x) . showChar '}'
+                                showString "patchControlPoints = " .
+                                  showsPrec d (getField @"patchControlPoints" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputDivisorStateCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputDivisorStateCreateInfoEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputDivisorStateCreateInfoEXT.hsc
@@ -0,0 +1,292 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkPipelineVertexInputDivisorStateCreateInfoEXT
+       (VkPipelineVertexInputDivisorStateCreateInfoEXT(..)) where
+import           Foreign.Storable
+                                                                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType
+                                                                                         (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo
+                                                                                         (VkPipelineVertexInputStateCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkVertexInputBindingDivisorDescriptionEXT
+                                                                                         (VkVertexInputBindingDivisorDescriptionEXT)
+import           System.IO.Unsafe
+                                                                                         (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html VkPipelineVertexInputDivisorStateCreateInfoEXT registry at www.khronos.org>
+data VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfoEXT## Addr##
+                                                                                                      ByteArray##
+
+instance Eq VkPipelineVertexInputDivisorStateCreateInfoEXT where
+        (VkPipelineVertexInputDivisorStateCreateInfoEXT## a _) ==
+          x@(VkPipelineVertexInputDivisorStateCreateInfoEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkPipelineVertexInputDivisorStateCreateInfoEXT where
+        (VkPipelineVertexInputDivisorStateCreateInfoEXT## a _) `compare`
+          x@(VkPipelineVertexInputDivisorStateCreateInfoEXT## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkPipelineVertexInputDivisorStateCreateInfoEXT
+         where
+        unsafeAddr (VkPipelineVertexInputDivisorStateCreateInfoEXT## a _)
+          = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray
+          (VkPipelineVertexInputDivisorStateCreateInfoEXT## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkPipelineVertexInputDivisorStateCreateInfoEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineVertexInputStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo
        (VkPipelineVertexInputStateCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType                     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription (VkVertexInputAttributeDescription)
 import           Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription   (VkVertexInputBindingDescription)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineVertexInputStateCreateInfo {
@@ -29,7 +29,7 @@
 --   >     const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
 --   > } VkPipelineVertexInputStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html VkPipelineVertexInputStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html VkPipelineVertexInputStateCreateInfo registry at www.khronos.org>
 data VkPipelineVertexInputStateCreateInfo = VkPipelineVertexInputStateCreateInfo## Addr##
                                                                                   ByteArray##
 
@@ -88,28 +88,6 @@
         type StructExtends VkPipelineVertexInputStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineVertexInputStateCreateInfo where
-        type VkSTypeMType VkPipelineVertexInputStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineVertexInputStateCreateInfo where
         type FieldType "sType" VkPipelineVertexInputStateCreateInfo =
              VkStructureType
@@ -127,39 +105,22 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineVertexInputStateCreateInfo where
-        type VkPNextMType VkPipelineVertexInputStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineVertexInputStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineVertexInputStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineVertexInputStateCreateInfo where
@@ -179,40 +140,22 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineVertexInputStateCreateInfo where
-        type VkFlagsMType VkPipelineVertexInputStateCreateInfo =
-             VkPipelineVertexInputStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineVertexInputStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineVertexInputStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineVertexInputStateCreateInfo where
@@ -232,43 +175,22 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkVertexBindingDescriptionCount
-           VkPipelineVertexInputStateCreateInfo
-         where
-        type VkVertexBindingDescriptionCountMType
-               VkPipelineVertexInputStateCreateInfo
-             = Word32
-
-        {-# NOINLINE vkVertexBindingDescriptionCount #-}
-        vkVertexBindingDescriptionCount x
+         CanReadField "flags" VkPipelineVertexInputStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount})
-
-        {-# INLINE vkVertexBindingDescriptionCountByteOffset #-}
-        vkVertexBindingDescriptionCountByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, flags})
 
-        {-# INLINE readVkVertexBindingDescriptionCount #-}
-        readVkVertexBindingDescriptionCount p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, flags}
 
-        {-# INLINE writeVkVertexBindingDescriptionCount #-}
-        writeVkVertexBindingDescriptionCount p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineVertexInputStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "vertexBindingDescriptionCount"
@@ -295,45 +217,26 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
 
-instance CanReadField "vertexBindingDescriptionCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "vertexBindingDescriptionCount"
            VkPipelineVertexInputStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkVertexBindingDescriptionCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount})
 
         {-# INLINE readField #-}
-        readField = readVkVertexBindingDescriptionCount
-
-instance CanWriteField "vertexBindingDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVertexBindingDescriptionCount
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkPVertexBindingDescriptions
+         CanWriteField "vertexBindingDescriptionCount"
            VkPipelineVertexInputStateCreateInfo
          where
-        type VkPVertexBindingDescriptionsMType
-               VkPipelineVertexInputStateCreateInfo
-             = Ptr VkVertexInputBindingDescription
-
-        {-# NOINLINE vkPVertexBindingDescriptions #-}
-        vkPVertexBindingDescriptions x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions})
-
-        {-# INLINE vkPVertexBindingDescriptionsByteOffset #-}
-        vkPVertexBindingDescriptionsByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
-
-        {-# INLINE readVkPVertexBindingDescriptions #-}
-        readVkPVertexBindingDescriptions p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
-
-        {-# INLINE writeVkPVertexBindingDescriptions #-}
-        writeVkPVertexBindingDescriptions p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pVertexBindingDescriptions"
@@ -360,45 +263,26 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
 
-instance CanReadField "pVertexBindingDescriptions"
+instance {-# OVERLAPPING #-}
+         CanReadField "pVertexBindingDescriptions"
            VkPipelineVertexInputStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPVertexBindingDescriptions
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions})
 
         {-# INLINE readField #-}
-        readField = readVkPVertexBindingDescriptions
-
-instance CanWriteField "pVertexBindingDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPVertexBindingDescriptions
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
 
 instance {-# OVERLAPPING #-}
-         HasVkVertexAttributeDescriptionCount
+         CanWriteField "pVertexBindingDescriptions"
            VkPipelineVertexInputStateCreateInfo
          where
-        type VkVertexAttributeDescriptionCountMType
-               VkPipelineVertexInputStateCreateInfo
-             = Word32
-
-        {-# NOINLINE vkVertexAttributeDescriptionCount #-}
-        vkVertexAttributeDescriptionCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount})
-
-        {-# INLINE vkVertexAttributeDescriptionCountByteOffset #-}
-        vkVertexAttributeDescriptionCountByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
-
-        {-# INLINE readVkVertexAttributeDescriptionCount #-}
-        readVkVertexAttributeDescriptionCount p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
-
-        {-# INLINE writeVkVertexAttributeDescriptionCount #-}
-        writeVkVertexAttributeDescriptionCount p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
 
 instance {-# OVERLAPPING #-}
          HasField "vertexAttributeDescriptionCount"
@@ -425,45 +309,26 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
 
-instance CanReadField "vertexAttributeDescriptionCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "vertexAttributeDescriptionCount"
            VkPipelineVertexInputStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkVertexAttributeDescriptionCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount})
 
         {-# INLINE readField #-}
-        readField = readVkVertexAttributeDescriptionCount
-
-instance CanWriteField "vertexAttributeDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkVertexAttributeDescriptionCount
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkPVertexAttributeDescriptions
+         CanWriteField "vertexAttributeDescriptionCount"
            VkPipelineVertexInputStateCreateInfo
          where
-        type VkPVertexAttributeDescriptionsMType
-               VkPipelineVertexInputStateCreateInfo
-             = Ptr VkVertexInputAttributeDescription
-
-        {-# NOINLINE vkPVertexAttributeDescriptions #-}
-        vkPVertexAttributeDescriptions x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions})
-
-        {-# INLINE vkPVertexAttributeDescriptionsByteOffset #-}
-        vkPVertexAttributeDescriptionsByteOffset ~_
-          = #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
-
-        {-# INLINE readVkPVertexAttributeDescriptions #-}
-        readVkPVertexAttributeDescriptions p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
-
-        {-# INLINE writeVkPVertexAttributeDescriptions #-}
-        writeVkPVertexAttributeDescriptions p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pVertexAttributeDescriptions"
@@ -490,42 +355,51 @@
         fieldOffset
           = #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
 
-instance CanReadField "pVertexAttributeDescriptions"
+instance {-# OVERLAPPING #-}
+         CanReadField "pVertexAttributeDescriptions"
            VkPipelineVertexInputStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkPVertexAttributeDescriptions
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions})
 
         {-# INLINE readField #-}
-        readField = readVkPVertexAttributeDescriptions
+        readField p
+          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
 
-instance CanWriteField "pVertexAttributeDescriptions"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pVertexAttributeDescriptions"
            VkPipelineVertexInputStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPVertexAttributeDescriptions
+        writeField p
+          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
 
 instance Show VkPipelineVertexInputStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineVertexInputStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkVertexBindingDescriptionCount = " .
-                                  showsPrec d (vkVertexBindingDescriptionCount x) .
+                                showString "vertexBindingDescriptionCount = " .
+                                  showsPrec d (getField @"vertexBindingDescriptionCount" x) .
                                     showString ", " .
-                                      showString "vkPVertexBindingDescriptions = " .
-                                        showsPrec d (vkPVertexBindingDescriptions x) .
+                                      showString "pVertexBindingDescriptions = " .
+                                        showsPrec d (getField @"pVertexBindingDescriptions" x) .
                                           showString ", " .
-                                            showString "vkVertexAttributeDescriptionCount = " .
-                                              showsPrec d (vkVertexAttributeDescriptionCount x) .
+                                            showString "vertexAttributeDescriptionCount = " .
+                                              showsPrec d
+                                                (getField @"vertexAttributeDescriptionCount" x)
+                                                .
                                                 showString ", " .
-                                                  showString "vkPVertexAttributeDescriptions = " .
-                                                    showsPrec d (vkPVertexAttributeDescriptions x) .
-                                                      showChar '}'
+                                                  showString "pVertexAttributeDescriptions = " .
+                                                    showsPrec d
+                                                      (getField @"pVertexAttributeDescriptions" x)
+                                                      . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportStateCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportStateCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportStateCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportStateCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo
        (VkPipelineViewportStateCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkRect2D      (VkRect2D)
 import           Graphics.Vulkan.Types.Struct.VkViewport    (VkViewport)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineViewportStateCreateInfo {
@@ -29,7 +29,7 @@
 --   >     const VkRect2D*        pScissors;
 --   > } VkPipelineViewportStateCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineViewportStateCreateInfo.html VkPipelineViewportStateCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineViewportStateCreateInfo.html VkPipelineViewportStateCreateInfo registry at www.khronos.org>
 data VkPipelineViewportStateCreateInfo = VkPipelineViewportStateCreateInfo## Addr##
                                                                             ByteArray##
 
@@ -85,28 +85,6 @@
         type StructExtends VkPipelineViewportStateCreateInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineViewportStateCreateInfo where
-        type VkSTypeMType VkPipelineViewportStateCreateInfo =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineViewportStateCreateInfo where
         type FieldType "sType" VkPipelineViewportStateCreateInfo =
              VkStructureType
@@ -124,39 +102,22 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, sType}
 
-instance CanReadField "sType" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineViewportStateCreateInfo where
-        type VkPNextMType VkPipelineViewportStateCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkPipelineViewportStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineViewportStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineViewportStateCreateInfo where
@@ -175,40 +136,22 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, pNext}
 
-instance CanReadField "pNext" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineViewportStateCreateInfo where
-        type VkFlagsMType VkPipelineViewportStateCreateInfo =
-             VkPipelineViewportStateCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkPipelineViewportStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, flags}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineViewportStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineViewportStateCreateInfo where
@@ -228,40 +171,22 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, flags}
 
-instance CanReadField "flags" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkViewportCount VkPipelineViewportStateCreateInfo where
-        type VkViewportCountMType VkPipelineViewportStateCreateInfo =
-             Word32
-
-        {-# NOINLINE vkViewportCount #-}
-        vkViewportCount x
+         CanReadField "flags" VkPipelineViewportStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, viewportCount})
-
-        {-# INLINE vkViewportCountByteOffset #-}
-        vkViewportCountByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, viewportCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, flags})
 
-        {-# INLINE readVkViewportCount #-}
-        readVkViewportCount p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, viewportCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, flags}
 
-        {-# INLINE writeVkViewportCount #-}
-        writeVkViewportCount p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, viewportCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineViewportStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "viewportCount" VkPipelineViewportStateCreateInfo where
@@ -283,42 +208,24 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, viewportCount}
 
-instance CanReadField "viewportCount"
-           VkPipelineViewportStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "viewportCount" VkPipelineViewportStateCreateInfo
          where
-        {-# INLINE getField #-}
-        getField = vkViewportCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, viewportCount})
 
         {-# INLINE readField #-}
-        readField = readVkViewportCount
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, viewportCount}
 
-instance CanWriteField "viewportCount"
-           VkPipelineViewportStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "viewportCount" VkPipelineViewportStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkViewportCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewports VkPipelineViewportStateCreateInfo where
-        type VkPViewportsMType VkPipelineViewportStateCreateInfo =
-             Ptr VkViewport
-
-        {-# NOINLINE vkPViewports #-}
-        vkPViewports x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pViewports})
-
-        {-# INLINE vkPViewportsByteOffset #-}
-        vkPViewportsByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, pViewports}
-
-        {-# INLINE readVkPViewports #-}
-        readVkPViewports p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pViewports}
-
-        {-# INLINE writeVkPViewports #-}
-        writeVkPViewports p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pViewports}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, viewportCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pViewports" VkPipelineViewportStateCreateInfo where
@@ -338,41 +245,22 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, pViewports}
 
-instance CanReadField "pViewports"
-           VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPViewports
-
-        {-# INLINE readField #-}
-        readField = readVkPViewports
-
-instance CanWriteField "pViewports"
-           VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPViewports
-
 instance {-# OVERLAPPING #-}
-         HasVkScissorCount VkPipelineViewportStateCreateInfo where
-        type VkScissorCountMType VkPipelineViewportStateCreateInfo = Word32
-
-        {-# NOINLINE vkScissorCount #-}
-        vkScissorCount x
+         CanReadField "pViewports" VkPipelineViewportStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, scissorCount})
-
-        {-# INLINE vkScissorCountByteOffset #-}
-        vkScissorCountByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, scissorCount}
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pViewports})
 
-        {-# INLINE readVkScissorCount #-}
-        readVkScissorCount p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, scissorCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pViewports}
 
-        {-# INLINE writeVkScissorCount #-}
-        writeVkScissorCount p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, scissorCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pViewports" VkPipelineViewportStateCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pViewports}
 
 instance {-# OVERLAPPING #-}
          HasField "scissorCount" VkPipelineViewportStateCreateInfo where
@@ -392,42 +280,23 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, scissorCount}
 
-instance CanReadField "scissorCount"
-           VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkScissorCount
+instance {-# OVERLAPPING #-}
+         CanReadField "scissorCount" VkPipelineViewportStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, scissorCount})
 
         {-# INLINE readField #-}
-        readField = readVkScissorCount
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, scissorCount}
 
-instance CanWriteField "scissorCount"
-           VkPipelineViewportStateCreateInfo
+instance {-# OVERLAPPING #-}
+         CanWriteField "scissorCount" VkPipelineViewportStateCreateInfo
          where
         {-# INLINE writeField #-}
-        writeField = writeVkScissorCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPScissors VkPipelineViewportStateCreateInfo where
-        type VkPScissorsMType VkPipelineViewportStateCreateInfo =
-             Ptr VkRect2D
-
-        {-# NOINLINE vkPScissors #-}
-        vkPScissors x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pScissors})
-
-        {-# INLINE vkPScissorsByteOffset #-}
-        vkPScissorsByteOffset ~_
-          = #{offset VkPipelineViewportStateCreateInfo, pScissors}
-
-        {-# INLINE readVkPScissors #-}
-        readVkPScissors p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pScissors}
-
-        {-# INLINE writeVkPScissors #-}
-        writeVkPScissors p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pScissors}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, scissorCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pScissors" VkPipelineViewportStateCreateInfo where
@@ -447,40 +316,44 @@
         fieldOffset
           = #{offset VkPipelineViewportStateCreateInfo, pScissors}
 
-instance CanReadField "pScissors" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPScissors
+instance {-# OVERLAPPING #-}
+         CanReadField "pScissors" VkPipelineViewportStateCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pScissors})
 
         {-# INLINE readField #-}
-        readField = readVkPScissors
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pScissors}
 
-instance CanWriteField "pScissors"
-           VkPipelineViewportStateCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pScissors" VkPipelineViewportStateCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPScissors
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pScissors}
 
 instance Show VkPipelineViewportStateCreateInfo where
         showsPrec d x
           = showString "VkPipelineViewportStateCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkViewportCount = " .
-                                  showsPrec d (vkViewportCount x) .
+                                showString "viewportCount = " .
+                                  showsPrec d (getField @"viewportCount" x) .
                                     showString ", " .
-                                      showString "vkPViewports = " .
-                                        showsPrec d (vkPViewports x) .
+                                      showString "pViewports = " .
+                                        showsPrec d (getField @"pViewports" x) .
                                           showString ", " .
-                                            showString "vkScissorCount = " .
-                                              showsPrec d (vkScissorCount x) .
+                                            showString "scissorCount = " .
+                                              showsPrec d (getField @"scissorCount" x) .
                                                 showString ", " .
-                                                  showString "vkPScissors = " .
-                                                    showsPrec d (vkPScissors x) . showChar '}'
+                                                  showString "pScissors = " .
+                                                    showsPrec d (getField @"pScissors" x) .
+                                                      showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportSwizzleStateCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportSwizzleStateCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportSwizzleStateCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportSwizzleStateCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineViewportSwizzleStateCreateInfoNV
        (VkPipelineViewportSwizzleStateCreateInfoNV(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType                     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo (VkPipelineViewportStateCreateInfo)
 import           Graphics.Vulkan.Types.Struct.VkViewportSwizzleNV               (VkViewportSwizzleNV)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
@@ -27,7 +27,7 @@
 --   >     const VkViewportSwizzleNV*      pViewportSwizzles;
 --   > } VkPipelineViewportSwizzleStateCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html VkPipelineViewportSwizzleStateCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html VkPipelineViewportSwizzleStateCreateInfoNV registry at www.khronos.org>
 data VkPipelineViewportSwizzleStateCreateInfoNV = VkPipelineViewportSwizzleStateCreateInfoNV## Addr##
                                                                                               ByteArray##
 
@@ -89,28 +89,6 @@
              '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineViewportSwizzleStateCreateInfoNV where
-        type VkSTypeMType VkPipelineViewportSwizzleStateCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineViewportSwizzleStateCreateInfoNV where
         type FieldType "sType" VkPipelineViewportSwizzleStateCreateInfoNV =
              VkStructureType
@@ -131,42 +109,24 @@
         fieldOffset
           = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkPipelineViewportSwizzleStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineViewportSwizzleStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
 
-instance CanWriteField "sType"
-           VkPipelineViewportSwizzleStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineViewportSwizzleStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineViewportSwizzleStateCreateInfoNV where
-        type VkPNextMType VkPipelineViewportSwizzleStateCreateInfoNV =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV where
@@ -189,42 +149,24 @@
         fieldOffset
           = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineViewportSwizzleStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
 
-instance CanWriteField "pNext"
-           VkPipelineViewportSwizzleStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFlags VkPipelineViewportSwizzleStateCreateInfoNV where
-        type VkFlagsMType VkPipelineViewportSwizzleStateCreateInfoNV =
-             VkPipelineViewportSwizzleStateCreateFlagsNV
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkPipelineViewportSwizzleStateCreateInfoNV where
@@ -247,43 +189,24 @@
         fieldOffset
           = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
 
-instance CanReadField "flags"
-           VkPipelineViewportSwizzleStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkPipelineViewportSwizzleStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
 
-instance CanWriteField "flags"
-           VkPipelineViewportSwizzleStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkPipelineViewportSwizzleStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-}
-         HasVkViewportCount VkPipelineViewportSwizzleStateCreateInfoNV where
-        type VkViewportCountMType
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = Word32
-
-        {-# NOINLINE vkViewportCount #-}
-        vkViewportCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount})
-
-        {-# INLINE vkViewportCountByteOffset #-}
-        vkViewportCountByteOffset ~_
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
-
-        {-# INLINE readVkViewportCount #-}
-        readVkViewportCount p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
-
-        {-# INLINE writeVkViewportCount #-}
-        writeVkViewportCount p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "viewportCount" VkPipelineViewportSwizzleStateCreateInfoNV
@@ -309,44 +232,26 @@
         fieldOffset
           = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
 
-instance CanReadField "viewportCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "viewportCount"
            VkPipelineViewportSwizzleStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkViewportCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount})
 
         {-# INLINE readField #-}
-        readField = readVkViewportCount
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
 
-instance CanWriteField "viewportCount"
+instance {-# OVERLAPPING #-}
+         CanWriteField "viewportCount"
            VkPipelineViewportSwizzleStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkViewportCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewportSwizzles VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        type VkPViewportSwizzlesMType
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = Ptr VkViewportSwizzleNV
-
-        {-# NOINLINE vkPViewportSwizzles #-}
-        vkPViewportSwizzles x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles})
-
-        {-# INLINE vkPViewportSwizzlesByteOffset #-}
-        vkPViewportSwizzlesByteOffset ~_
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
-
-        {-# INLINE readVkPViewportSwizzles #-}
-        readVkPViewportSwizzles p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
-
-        {-# INLINE writeVkPViewportSwizzles #-}
-        writeVkPViewportSwizzles p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pViewportSwizzles"
@@ -373,35 +278,41 @@
         fieldOffset
           = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
 
-instance CanReadField "pViewportSwizzles"
+instance {-# OVERLAPPING #-}
+         CanReadField "pViewportSwizzles"
            VkPipelineViewportSwizzleStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPViewportSwizzles
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles})
 
         {-# INLINE readField #-}
-        readField = readVkPViewportSwizzles
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
 
-instance CanWriteField "pViewportSwizzles"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pViewportSwizzles"
            VkPipelineViewportSwizzleStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPViewportSwizzles
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
 
 instance Show VkPipelineViewportSwizzleStateCreateInfoNV where
         showsPrec d x
           = showString "VkPipelineViewportSwizzleStateCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkViewportCount = " .
-                                  showsPrec d (vkViewportCount x) .
+                                showString "viewportCount = " .
+                                  showsPrec d (getField @"viewportCount" x) .
                                     showString ", " .
-                                      showString "vkPViewportSwizzles = " .
-                                        showsPrec d (vkPViewportSwizzles x) . showChar '}'
+                                      showString "pViewportSwizzles = " .
+                                        showsPrec d (getField @"pViewportSwizzles" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportWScalingStateCreateInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportWScalingStateCreateInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportWScalingStateCreateInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPipelineViewportWScalingStateCreateInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPipelineViewportWScalingStateCreateInfoNV
        (VkPipelineViewportWScalingStateCreateInfoNV(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType                     (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo (VkPipelineViewportStateCreateInfo)
 import           Graphics.Vulkan.Types.Struct.VkViewportWScalingNV              (VkViewportWScalingNV)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
@@ -27,7 +27,7 @@
 --   >     const VkViewportWScalingNV*      pViewportWScalings;
 --   > } VkPipelineViewportWScalingStateCreateInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html VkPipelineViewportWScalingStateCreateInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html VkPipelineViewportWScalingStateCreateInfoNV registry at www.khronos.org>
 data VkPipelineViewportWScalingStateCreateInfoNV = VkPipelineViewportWScalingStateCreateInfoNV## Addr##
                                                                                                 ByteArray##
 
@@ -91,28 +91,6 @@
              '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkPipelineViewportWScalingStateCreateInfoNV where
-        type VkSTypeMType VkPipelineViewportWScalingStateCreateInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkPipelineViewportWScalingStateCreateInfoNV where
         type FieldType "sType" VkPipelineViewportWScalingStateCreateInfoNV
              = VkStructureType
@@ -134,42 +112,24 @@
         fieldOffset
           = #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
 
-instance CanReadField "sType"
-           VkPipelineViewportWScalingStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPipelineViewportWScalingStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
 
-instance CanWriteField "sType"
-           VkPipelineViewportWScalingStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPipelineViewportWScalingStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkPipelineViewportWScalingStateCreateInfoNV where
-        type VkPNextMType VkPipelineViewportWScalingStateCreateInfoNV =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPipelineViewportWScalingStateCreateInfoNV where
@@ -193,45 +153,24 @@
         fieldOffset
           = #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
 
-instance CanReadField "pNext"
-           VkPipelineViewportWScalingStateCreateInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkPipelineViewportWScalingStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkViewportWScalingEnable
-           VkPipelineViewportWScalingStateCreateInfoNV
+         CanWriteField "pNext" VkPipelineViewportWScalingStateCreateInfoNV
          where
-        type VkViewportWScalingEnableMType
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = VkBool32
-
-        {-# NOINLINE vkViewportWScalingEnable #-}
-        vkViewportWScalingEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable})
-
-        {-# INLINE vkViewportWScalingEnableByteOffset #-}
-        vkViewportWScalingEnableByteOffset ~_
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
-
-        {-# INLINE readVkViewportWScalingEnable #-}
-        readVkViewportWScalingEnable p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
-
-        {-# INLINE writeVkViewportWScalingEnable #-}
-        writeVkViewportWScalingEnable p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "viewportWScalingEnable"
@@ -258,44 +197,26 @@
         fieldOffset
           = #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
 
-instance CanReadField "viewportWScalingEnable"
+instance {-# OVERLAPPING #-}
+         CanReadField "viewportWScalingEnable"
            VkPipelineViewportWScalingStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkViewportWScalingEnable
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable})
 
         {-# INLINE readField #-}
-        readField = readVkViewportWScalingEnable
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
 
-instance CanWriteField "viewportWScalingEnable"
+instance {-# OVERLAPPING #-}
+         CanWriteField "viewportWScalingEnable"
            VkPipelineViewportWScalingStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkViewportWScalingEnable
-
-instance {-# OVERLAPPING #-}
-         HasVkViewportCount VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        type VkViewportCountMType
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = Word32
-
-        {-# NOINLINE vkViewportCount #-}
-        vkViewportCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount})
-
-        {-# INLINE vkViewportCountByteOffset #-}
-        vkViewportCountByteOffset ~_
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
-
-        {-# INLINE readVkViewportCount #-}
-        readVkViewportCount p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
-
-        {-# INLINE writeVkViewportCount #-}
-        writeVkViewportCount p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "viewportCount"
@@ -322,44 +243,26 @@
         fieldOffset
           = #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
 
-instance CanReadField "viewportCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "viewportCount"
            VkPipelineViewportWScalingStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkViewportCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount})
 
         {-# INLINE readField #-}
-        readField = readVkViewportCount
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
 
-instance CanWriteField "viewportCount"
+instance {-# OVERLAPPING #-}
+         CanWriteField "viewportCount"
            VkPipelineViewportWScalingStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkViewportCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewportWScalings VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        type VkPViewportWScalingsMType
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = Ptr VkViewportWScalingNV
-
-        {-# NOINLINE vkPViewportWScalings #-}
-        vkPViewportWScalings x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings})
-
-        {-# INLINE vkPViewportWScalingsByteOffset #-}
-        vkPViewportWScalingsByteOffset ~_
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
-
-        {-# INLINE readVkPViewportWScalings #-}
-        readVkPViewportWScalings p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
-
-        {-# INLINE writeVkPViewportWScalings #-}
-        writeVkPViewportWScalings p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pViewportWScalings"
@@ -386,35 +289,42 @@
         fieldOffset
           = #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
 
-instance CanReadField "pViewportWScalings"
+instance {-# OVERLAPPING #-}
+         CanReadField "pViewportWScalings"
            VkPipelineViewportWScalingStateCreateInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPViewportWScalings
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings})
 
         {-# INLINE readField #-}
-        readField = readVkPViewportWScalings
+        readField p
+          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
 
-instance CanWriteField "pViewportWScalings"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pViewportWScalings"
            VkPipelineViewportWScalingStateCreateInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPViewportWScalings
+        writeField p
+          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
 
 instance Show VkPipelineViewportWScalingStateCreateInfoNV where
         showsPrec d x
           = showString "VkPipelineViewportWScalingStateCreateInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkViewportWScalingEnable = " .
-                            showsPrec d (vkViewportWScalingEnable x) .
+                          showString "viewportWScalingEnable = " .
+                            showsPrec d (getField @"viewportWScalingEnable" x) .
                               showString ", " .
-                                showString "vkViewportCount = " .
-                                  showsPrec d (vkViewportCount x) .
+                                showString "viewportCount = " .
+                                  showsPrec d (getField @"viewportCount" x) .
                                     showString ", " .
-                                      showString "vkPViewportWScalings = " .
-                                        showsPrec d (vkPViewportWScalings x) . showChar '}'
+                                      showString "pViewportWScalings = " .
+                                        showsPrec d (getField @"pViewportWScalings" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPresentInfoKHR
        (VkPresentInfoKHR(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkSemaphore,
                                                              VkSwapchainKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPresentInfoKHR {
@@ -30,7 +30,7 @@
 --   >     VkResult* pResults;
 --   > } VkPresentInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPresentInfoKHR.html VkPresentInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentInfoKHR.html VkPresentInfoKHR registry at www.khronos.org>
 data VkPresentInfoKHR = VkPresentInfoKHR## Addr## ByteArray##
 
 instance Eq VkPresentInfoKHR where
@@ -79,26 +79,6 @@
         type ReturnedOnly VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPresentInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkPresentInfoKHR where
-        type VkSTypeMType VkPresentInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPresentInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPresentInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPresentInfoKHR, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkPresentInfoKHR
          where
         type FieldType "sType" VkPresentInfoKHR = VkStructureType
@@ -113,36 +93,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentInfoKHR, sType}
 
-instance CanReadField "sType" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkPresentInfoKHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, sType}
 
-instance CanWriteField "sType" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-} CanWriteField "sType" VkPresentInfoKHR
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkPresentInfoKHR where
-        type VkPNextMType VkPresentInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPresentInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPresentInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkPresentInfoKHR
          where
@@ -158,37 +124,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentInfoKHR, pNext}
 
-instance CanReadField "pNext" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkPresentInfoKHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-} CanWriteField "pNext" VkPresentInfoKHR
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkWaitSemaphoreCount VkPresentInfoKHR where
-        type VkWaitSemaphoreCountMType VkPresentInfoKHR = Word32
-
-        {-# NOINLINE vkWaitSemaphoreCount #-}
-        vkWaitSemaphoreCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, waitSemaphoreCount})
-
-        {-# INLINE vkWaitSemaphoreCountByteOffset #-}
-        vkWaitSemaphoreCountByteOffset ~_
-          = #{offset VkPresentInfoKHR, waitSemaphoreCount}
-
-        {-# INLINE readVkWaitSemaphoreCount #-}
-        readVkWaitSemaphoreCount p
-          = peekByteOff p #{offset VkPresentInfoKHR, waitSemaphoreCount}
-
-        {-# INLINE writeVkWaitSemaphoreCount #-}
-        writeVkWaitSemaphoreCount p
-          = pokeByteOff p #{offset VkPresentInfoKHR, waitSemaphoreCount}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "waitSemaphoreCount" VkPresentInfoKHR where
@@ -205,37 +156,22 @@
         fieldOffset
           = #{offset VkPresentInfoKHR, waitSemaphoreCount}
 
-instance CanReadField "waitSemaphoreCount" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkWaitSemaphoreCount
+instance {-# OVERLAPPING #-}
+         CanReadField "waitSemaphoreCount" VkPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, waitSemaphoreCount})
 
         {-# INLINE readField #-}
-        readField = readVkWaitSemaphoreCount
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, waitSemaphoreCount}
 
-instance CanWriteField "waitSemaphoreCount" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "waitSemaphoreCount" VkPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkWaitSemaphoreCount
-
-instance {-# OVERLAPPING #-} HasVkPWaitSemaphores VkPresentInfoKHR
-         where
-        type VkPWaitSemaphoresMType VkPresentInfoKHR = Ptr VkSemaphore
-
-        {-# NOINLINE vkPWaitSemaphores #-}
-        vkPWaitSemaphores x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pWaitSemaphores})
-
-        {-# INLINE vkPWaitSemaphoresByteOffset #-}
-        vkPWaitSemaphoresByteOffset ~_
-          = #{offset VkPresentInfoKHR, pWaitSemaphores}
-
-        {-# INLINE readVkPWaitSemaphores #-}
-        readVkPWaitSemaphores p
-          = peekByteOff p #{offset VkPresentInfoKHR, pWaitSemaphores}
-
-        {-# INLINE writeVkPWaitSemaphores #-}
-        writeVkPWaitSemaphores p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pWaitSemaphores}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, waitSemaphoreCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pWaitSemaphores" VkPresentInfoKHR where
@@ -252,37 +188,22 @@
         fieldOffset
           = #{offset VkPresentInfoKHR, pWaitSemaphores}
 
-instance CanReadField "pWaitSemaphores" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPWaitSemaphores
+instance {-# OVERLAPPING #-}
+         CanReadField "pWaitSemaphores" VkPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pWaitSemaphores})
 
         {-# INLINE readField #-}
-        readField = readVkPWaitSemaphores
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, pWaitSemaphores}
 
-instance CanWriteField "pWaitSemaphores" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pWaitSemaphores" VkPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPWaitSemaphores
-
-instance {-# OVERLAPPING #-} HasVkSwapchainCount VkPresentInfoKHR
-         where
-        type VkSwapchainCountMType VkPresentInfoKHR = Word32
-
-        {-# NOINLINE vkSwapchainCount #-}
-        vkSwapchainCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, swapchainCount})
-
-        {-# INLINE vkSwapchainCountByteOffset #-}
-        vkSwapchainCountByteOffset ~_
-          = #{offset VkPresentInfoKHR, swapchainCount}
-
-        {-# INLINE readVkSwapchainCount #-}
-        readVkSwapchainCount p
-          = peekByteOff p #{offset VkPresentInfoKHR, swapchainCount}
-
-        {-# INLINE writeVkSwapchainCount #-}
-        writeVkSwapchainCount p
-          = pokeByteOff p #{offset VkPresentInfoKHR, swapchainCount}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, pWaitSemaphores}
 
 instance {-# OVERLAPPING #-}
          HasField "swapchainCount" VkPresentInfoKHR where
@@ -299,37 +220,22 @@
         fieldOffset
           = #{offset VkPresentInfoKHR, swapchainCount}
 
-instance CanReadField "swapchainCount" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSwapchainCount
+instance {-# OVERLAPPING #-}
+         CanReadField "swapchainCount" VkPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, swapchainCount})
 
         {-# INLINE readField #-}
-        readField = readVkSwapchainCount
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, swapchainCount}
 
-instance CanWriteField "swapchainCount" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "swapchainCount" VkPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSwapchainCount
-
-instance {-# OVERLAPPING #-} HasVkPSwapchains VkPresentInfoKHR
-         where
-        type VkPSwapchainsMType VkPresentInfoKHR = Ptr VkSwapchainKHR
-
-        {-# NOINLINE vkPSwapchains #-}
-        vkPSwapchains x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pSwapchains})
-
-        {-# INLINE vkPSwapchainsByteOffset #-}
-        vkPSwapchainsByteOffset ~_
-          = #{offset VkPresentInfoKHR, pSwapchains}
-
-        {-# INLINE readVkPSwapchains #-}
-        readVkPSwapchains p
-          = peekByteOff p #{offset VkPresentInfoKHR, pSwapchains}
-
-        {-# INLINE writeVkPSwapchains #-}
-        writeVkPSwapchains p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pSwapchains}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, swapchainCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSwapchains" VkPresentInfoKHR where
@@ -345,37 +251,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentInfoKHR, pSwapchains}
 
-instance CanReadField "pSwapchains" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPSwapchains
+instance {-# OVERLAPPING #-}
+         CanReadField "pSwapchains" VkPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pSwapchains})
 
         {-# INLINE readField #-}
-        readField = readVkPSwapchains
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, pSwapchains}
 
-instance CanWriteField "pSwapchains" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSwapchains" VkPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPSwapchains
-
-instance {-# OVERLAPPING #-} HasVkPImageIndices VkPresentInfoKHR
-         where
-        type VkPImageIndicesMType VkPresentInfoKHR = Ptr Word32
-
-        {-# NOINLINE vkPImageIndices #-}
-        vkPImageIndices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pImageIndices})
-
-        {-# INLINE vkPImageIndicesByteOffset #-}
-        vkPImageIndicesByteOffset ~_
-          = #{offset VkPresentInfoKHR, pImageIndices}
-
-        {-# INLINE readVkPImageIndices #-}
-        readVkPImageIndices p
-          = peekByteOff p #{offset VkPresentInfoKHR, pImageIndices}
-
-        {-# INLINE writeVkPImageIndices #-}
-        writeVkPImageIndices p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pImageIndices}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, pSwapchains}
 
 instance {-# OVERLAPPING #-}
          HasField "pImageIndices" VkPresentInfoKHR where
@@ -391,36 +282,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentInfoKHR, pImageIndices}
 
-instance CanReadField "pImageIndices" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPImageIndices
+instance {-# OVERLAPPING #-}
+         CanReadField "pImageIndices" VkPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pImageIndices})
 
         {-# INLINE readField #-}
-        readField = readVkPImageIndices
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, pImageIndices}
 
-instance CanWriteField "pImageIndices" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pImageIndices" VkPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPImageIndices
-
-instance {-# OVERLAPPING #-} HasVkPResults VkPresentInfoKHR where
-        type VkPResultsMType VkPresentInfoKHR = Ptr VkResult
-
-        {-# NOINLINE vkPResults #-}
-        vkPResults x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pResults})
-
-        {-# INLINE vkPResultsByteOffset #-}
-        vkPResultsByteOffset ~_
-          = #{offset VkPresentInfoKHR, pResults}
-
-        {-# INLINE readVkPResults #-}
-        readVkPResults p
-          = peekByteOff p #{offset VkPresentInfoKHR, pResults}
-
-        {-# INLINE writeVkPResults #-}
-        writeVkPResults p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pResults}
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, pImageIndices}
 
 instance {-# OVERLAPPING #-} HasField "pResults" VkPresentInfoKHR
          where
@@ -436,40 +313,47 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentInfoKHR, pResults}
 
-instance CanReadField "pResults" VkPresentInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPResults
+instance {-# OVERLAPPING #-}
+         CanReadField "pResults" VkPresentInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pResults})
 
         {-# INLINE readField #-}
-        readField = readVkPResults
+        readField p
+          = peekByteOff p #{offset VkPresentInfoKHR, pResults}
 
-instance CanWriteField "pResults" VkPresentInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pResults" VkPresentInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPResults
+        writeField p
+          = pokeByteOff p #{offset VkPresentInfoKHR, pResults}
 
 instance Show VkPresentInfoKHR where
         showsPrec d x
           = showString "VkPresentInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkWaitSemaphoreCount = " .
-                            showsPrec d (vkWaitSemaphoreCount x) .
+                          showString "waitSemaphoreCount = " .
+                            showsPrec d (getField @"waitSemaphoreCount" x) .
                               showString ", " .
-                                showString "vkPWaitSemaphores = " .
-                                  showsPrec d (vkPWaitSemaphores x) .
+                                showString "pWaitSemaphores = " .
+                                  showsPrec d (getField @"pWaitSemaphores" x) .
                                     showString ", " .
-                                      showString "vkSwapchainCount = " .
-                                        showsPrec d (vkSwapchainCount x) .
+                                      showString "swapchainCount = " .
+                                        showsPrec d (getField @"swapchainCount" x) .
                                           showString ", " .
-                                            showString "vkPSwapchains = " .
-                                              showsPrec d (vkPSwapchains x) .
+                                            showString "pSwapchains = " .
+                                              showsPrec d (getField @"pSwapchains" x) .
                                                 showString ", " .
-                                                  showString "vkPImageIndices = " .
-                                                    showsPrec d (vkPImageIndices x) .
+                                                  showString "pImageIndices = " .
+                                                    showsPrec d (getField @"pImageIndices" x) .
                                                       showString ", " .
-                                                        showString "vkPResults = " .
-                                                          showsPrec d (vkPResults x) . showChar '}'
+                                                        showString "pResults = " .
+                                                          showsPrec d (getField @"pResults" x) .
+                                                            showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPresentRegionKHR
        (VkPresentRegionKHR(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkRectLayerKHR (VkRectLayerKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPresentRegionKHR {
@@ -21,7 +21,7 @@
 --   >     const VkRectLayerKHR*   pRectangles;
 --   > } VkPresentRegionKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPresentRegionKHR.html VkPresentRegionKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentRegionKHR.html VkPresentRegionKHR registry at www.khronos.org>
 data VkPresentRegionKHR = VkPresentRegionKHR## Addr## ByteArray##
 
 instance Eq VkPresentRegionKHR where
@@ -69,27 +69,6 @@
         type ReturnedOnly VkPresentRegionKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPresentRegionKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkRectangleCount VkPresentRegionKHR
-         where
-        type VkRectangleCountMType VkPresentRegionKHR = Word32
-
-        {-# NOINLINE vkRectangleCount #-}
-        vkRectangleCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionKHR, rectangleCount})
-
-        {-# INLINE vkRectangleCountByteOffset #-}
-        vkRectangleCountByteOffset ~_
-          = #{offset VkPresentRegionKHR, rectangleCount}
-
-        {-# INLINE readVkRectangleCount #-}
-        readVkRectangleCount p
-          = peekByteOff p #{offset VkPresentRegionKHR, rectangleCount}
-
-        {-# INLINE writeVkRectangleCount #-}
-        writeVkRectangleCount p
-          = pokeByteOff p #{offset VkPresentRegionKHR, rectangleCount}
-
 instance {-# OVERLAPPING #-}
          HasField "rectangleCount" VkPresentRegionKHR where
         type FieldType "rectangleCount" VkPresentRegionKHR = Word32
@@ -105,37 +84,22 @@
         fieldOffset
           = #{offset VkPresentRegionKHR, rectangleCount}
 
-instance CanReadField "rectangleCount" VkPresentRegionKHR where
-        {-# INLINE getField #-}
-        getField = vkRectangleCount
+instance {-# OVERLAPPING #-}
+         CanReadField "rectangleCount" VkPresentRegionKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentRegionKHR, rectangleCount})
 
         {-# INLINE readField #-}
-        readField = readVkRectangleCount
+        readField p
+          = peekByteOff p #{offset VkPresentRegionKHR, rectangleCount}
 
-instance CanWriteField "rectangleCount" VkPresentRegionKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "rectangleCount" VkPresentRegionKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkRectangleCount
-
-instance {-# OVERLAPPING #-} HasVkPRectangles VkPresentRegionKHR
-         where
-        type VkPRectanglesMType VkPresentRegionKHR = Ptr VkRectLayerKHR
-
-        {-# NOINLINE vkPRectangles #-}
-        vkPRectangles x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionKHR, pRectangles})
-
-        {-# INLINE vkPRectanglesByteOffset #-}
-        vkPRectanglesByteOffset ~_
-          = #{offset VkPresentRegionKHR, pRectangles}
-
-        {-# INLINE readVkPRectangles #-}
-        readVkPRectangles p
-          = peekByteOff p #{offset VkPresentRegionKHR, pRectangles}
-
-        {-# INLINE writeVkPRectangles #-}
-        writeVkPRectangles p
-          = pokeByteOff p #{offset VkPresentRegionKHR, pRectangles}
+        writeField p
+          = pokeByteOff p #{offset VkPresentRegionKHR, rectangleCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pRectangles" VkPresentRegionKHR where
@@ -152,22 +116,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentRegionKHR, pRectangles}
 
-instance CanReadField "pRectangles" VkPresentRegionKHR where
-        {-# INLINE getField #-}
-        getField = vkPRectangles
+instance {-# OVERLAPPING #-}
+         CanReadField "pRectangles" VkPresentRegionKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentRegionKHR, pRectangles})
 
         {-# INLINE readField #-}
-        readField = readVkPRectangles
+        readField p
+          = peekByteOff p #{offset VkPresentRegionKHR, pRectangles}
 
-instance CanWriteField "pRectangles" VkPresentRegionKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pRectangles" VkPresentRegionKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPRectangles
+        writeField p
+          = pokeByteOff p #{offset VkPresentRegionKHR, pRectangles}
 
 instance Show VkPresentRegionKHR where
         showsPrec d x
           = showString "VkPresentRegionKHR {" .
-              showString "vkRectangleCount = " .
-                showsPrec d (vkRectangleCount x) .
+              showString "rectangleCount = " .
+                showsPrec d (getField @"rectangleCount" x) .
                   showString ", " .
-                    showString "vkPRectangles = " .
-                      showsPrec d (vkPRectangles x) . showChar '}'
+                    showString "pRectangles = " .
+                      showsPrec d (getField @"pRectangles" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionsKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionsKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionsKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentRegionsKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPresentRegionsKHR
        (VkPresentRegionsKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR   (VkPresentInfoKHR)
 import           Graphics.Vulkan.Types.Struct.VkPresentRegionKHR (VkPresentRegionKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPresentRegionsKHR {
@@ -25,7 +25,7 @@
 --   >     const VkPresentRegionKHR*   pRegions;
 --   > } VkPresentRegionsKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPresentRegionsKHR.html VkPresentRegionsKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentRegionsKHR.html VkPresentRegionsKHR registry at www.khronos.org>
 data VkPresentRegionsKHR = VkPresentRegionsKHR## Addr## ByteArray##
 
 instance Eq VkPresentRegionsKHR where
@@ -73,26 +73,6 @@
         type ReturnedOnly VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPresentRegionsKHR = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkPresentRegionsKHR where
-        type VkSTypeMType VkPresentRegionsKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPresentRegionsKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPresentRegionsKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkPresentRegionsKHR
          where
         type FieldType "sType" VkPresentRegionsKHR = VkStructureType
@@ -107,36 +87,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentRegionsKHR, sType}
 
-instance CanReadField "sType" VkPresentRegionsKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPresentRegionsKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPresentRegionsKHR, sType}
 
-instance CanWriteField "sType" VkPresentRegionsKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPresentRegionsKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkPresentRegionsKHR where
-        type VkPNextMType VkPresentRegionsKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPresentRegionsKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPresentRegionsKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPresentRegionsKHR, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkPresentRegionsKHR
          where
@@ -152,37 +118,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentRegionsKHR, pNext}
 
-instance CanReadField "pNext" VkPresentRegionsKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPresentRegionsKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSwapchainCount VkPresentRegionsKHR where
-        type VkSwapchainCountMType VkPresentRegionsKHR = Word32
-
-        {-# NOINLINE vkSwapchainCount #-}
-        vkSwapchainCount x
+         CanReadField "pNext" VkPresentRegionsKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, swapchainCount})
-
-        {-# INLINE vkSwapchainCountByteOffset #-}
-        vkSwapchainCountByteOffset ~_
-          = #{offset VkPresentRegionsKHR, swapchainCount}
+              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, pNext})
 
-        {-# INLINE readVkSwapchainCount #-}
-        readVkSwapchainCount p
-          = peekByteOff p #{offset VkPresentRegionsKHR, swapchainCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPresentRegionsKHR, pNext}
 
-        {-# INLINE writeVkSwapchainCount #-}
-        writeVkSwapchainCount p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, swapchainCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPresentRegionsKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPresentRegionsKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "swapchainCount" VkPresentRegionsKHR where
@@ -199,37 +150,22 @@
         fieldOffset
           = #{offset VkPresentRegionsKHR, swapchainCount}
 
-instance CanReadField "swapchainCount" VkPresentRegionsKHR where
-        {-# INLINE getField #-}
-        getField = vkSwapchainCount
+instance {-# OVERLAPPING #-}
+         CanReadField "swapchainCount" VkPresentRegionsKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, swapchainCount})
 
         {-# INLINE readField #-}
-        readField = readVkSwapchainCount
+        readField p
+          = peekByteOff p #{offset VkPresentRegionsKHR, swapchainCount}
 
-instance CanWriteField "swapchainCount" VkPresentRegionsKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "swapchainCount" VkPresentRegionsKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSwapchainCount
-
-instance {-# OVERLAPPING #-} HasVkPRegions VkPresentRegionsKHR
-         where
-        type VkPRegionsMType VkPresentRegionsKHR = Ptr VkPresentRegionKHR
-
-        {-# NOINLINE vkPRegions #-}
-        vkPRegions x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, pRegions})
-
-        {-# INLINE vkPRegionsByteOffset #-}
-        vkPRegionsByteOffset ~_
-          = #{offset VkPresentRegionsKHR, pRegions}
-
-        {-# INLINE readVkPRegions #-}
-        readVkPRegions p
-          = peekByteOff p #{offset VkPresentRegionsKHR, pRegions}
-
-        {-# INLINE writeVkPRegions #-}
-        writeVkPRegions p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, pRegions}
+        writeField p
+          = pokeByteOff p #{offset VkPresentRegionsKHR, swapchainCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pRegions" VkPresentRegionsKHR where
@@ -246,28 +182,34 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentRegionsKHR, pRegions}
 
-instance CanReadField "pRegions" VkPresentRegionsKHR where
-        {-# INLINE getField #-}
-        getField = vkPRegions
+instance {-# OVERLAPPING #-}
+         CanReadField "pRegions" VkPresentRegionsKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, pRegions})
 
         {-# INLINE readField #-}
-        readField = readVkPRegions
+        readField p
+          = peekByteOff p #{offset VkPresentRegionsKHR, pRegions}
 
-instance CanWriteField "pRegions" VkPresentRegionsKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pRegions" VkPresentRegionsKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPRegions
+        writeField p
+          = pokeByteOff p #{offset VkPresentRegionsKHR, pRegions}
 
 instance Show VkPresentRegionsKHR where
         showsPrec d x
           = showString "VkPresentRegionsKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSwapchainCount = " .
-                            showsPrec d (vkSwapchainCount x) .
+                          showString "swapchainCount = " .
+                            showsPrec d (getField @"swapchainCount" x) .
                               showString ", " .
-                                showString "vkPRegions = " .
-                                  showsPrec d (vkPRegions x) . showChar '}'
+                                showString "pRegions = " .
+                                  showsPrec d (getField @"pRegions" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimeGOOGLE.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimeGOOGLE.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimeGOOGLE.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimeGOOGLE.hsc
@@ -5,22 +5,22 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPresentTimeGOOGLE
        (VkPresentTimeGOOGLE(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPresentTimeGOOGLE {
 --   >     uint32_t                         presentID;
 --   >     uint64_t                         desiredPresentTime;
 --   > } VkPresentTimeGOOGLE;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPresentTimeGOOGLE.html VkPresentTimeGOOGLE registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentTimeGOOGLE.html VkPresentTimeGOOGLE registry at www.khronos.org>
 data VkPresentTimeGOOGLE = VkPresentTimeGOOGLE## Addr## ByteArray##
 
 instance Eq VkPresentTimeGOOGLE where
@@ -68,27 +68,6 @@
         type ReturnedOnly VkPresentTimeGOOGLE = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPresentTimeGOOGLE = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkPresentID VkPresentTimeGOOGLE
-         where
-        type VkPresentIDMType VkPresentTimeGOOGLE = Word32
-
-        {-# NOINLINE vkPresentID #-}
-        vkPresentID x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimeGOOGLE, presentID})
-
-        {-# INLINE vkPresentIDByteOffset #-}
-        vkPresentIDByteOffset ~_
-          = #{offset VkPresentTimeGOOGLE, presentID}
-
-        {-# INLINE readVkPresentID #-}
-        readVkPresentID p
-          = peekByteOff p #{offset VkPresentTimeGOOGLE, presentID}
-
-        {-# INLINE writeVkPresentID #-}
-        writeVkPresentID p
-          = pokeByteOff p #{offset VkPresentTimeGOOGLE, presentID}
-
 instance {-# OVERLAPPING #-}
          HasField "presentID" VkPresentTimeGOOGLE where
         type FieldType "presentID" VkPresentTimeGOOGLE = Word32
@@ -103,37 +82,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentTimeGOOGLE, presentID}
 
-instance CanReadField "presentID" VkPresentTimeGOOGLE where
-        {-# INLINE getField #-}
-        getField = vkPresentID
-
-        {-# INLINE readField #-}
-        readField = readVkPresentID
-
-instance CanWriteField "presentID" VkPresentTimeGOOGLE where
-        {-# INLINE writeField #-}
-        writeField = writeVkPresentID
-
 instance {-# OVERLAPPING #-}
-         HasVkDesiredPresentTime VkPresentTimeGOOGLE where
-        type VkDesiredPresentTimeMType VkPresentTimeGOOGLE = Word64
-
-        {-# NOINLINE vkDesiredPresentTime #-}
-        vkDesiredPresentTime x
+         CanReadField "presentID" VkPresentTimeGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimeGOOGLE, desiredPresentTime})
-
-        {-# INLINE vkDesiredPresentTimeByteOffset #-}
-        vkDesiredPresentTimeByteOffset ~_
-          = #{offset VkPresentTimeGOOGLE, desiredPresentTime}
+              (peekByteOff (unsafePtr x) #{offset VkPresentTimeGOOGLE, presentID})
 
-        {-# INLINE readVkDesiredPresentTime #-}
-        readVkDesiredPresentTime p
-          = peekByteOff p #{offset VkPresentTimeGOOGLE, desiredPresentTime}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPresentTimeGOOGLE, presentID}
 
-        {-# INLINE writeVkDesiredPresentTime #-}
-        writeVkDesiredPresentTime p
-          = pokeByteOff p #{offset VkPresentTimeGOOGLE, desiredPresentTime}
+instance {-# OVERLAPPING #-}
+         CanWriteField "presentID" VkPresentTimeGOOGLE where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPresentTimeGOOGLE, presentID}
 
 instance {-# OVERLAPPING #-}
          HasField "desiredPresentTime" VkPresentTimeGOOGLE where
@@ -151,24 +115,28 @@
         fieldOffset
           = #{offset VkPresentTimeGOOGLE, desiredPresentTime}
 
-instance CanReadField "desiredPresentTime" VkPresentTimeGOOGLE
-         where
-        {-# INLINE getField #-}
-        getField = vkDesiredPresentTime
+instance {-# OVERLAPPING #-}
+         CanReadField "desiredPresentTime" VkPresentTimeGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentTimeGOOGLE, desiredPresentTime})
 
         {-# INLINE readField #-}
-        readField = readVkDesiredPresentTime
+        readField p
+          = peekByteOff p #{offset VkPresentTimeGOOGLE, desiredPresentTime}
 
-instance CanWriteField "desiredPresentTime" VkPresentTimeGOOGLE
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "desiredPresentTime" VkPresentTimeGOOGLE where
         {-# INLINE writeField #-}
-        writeField = writeVkDesiredPresentTime
+        writeField p
+          = pokeByteOff p #{offset VkPresentTimeGOOGLE, desiredPresentTime}
 
 instance Show VkPresentTimeGOOGLE where
         showsPrec d x
           = showString "VkPresentTimeGOOGLE {" .
-              showString "vkPresentID = " .
-                showsPrec d (vkPresentID x) .
+              showString "presentID = " .
+                showsPrec d (getField @"presentID" x) .
                   showString ", " .
-                    showString "vkDesiredPresentTime = " .
-                      showsPrec d (vkDesiredPresentTime x) . showChar '}'
+                    showString "desiredPresentTime = " .
+                      showsPrec d (getField @"desiredPresentTime" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimesInfoGOOGLE.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimesInfoGOOGLE.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimesInfoGOOGLE.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPresentTimesInfoGOOGLE.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPresentTimesInfoGOOGLE
        (VkPresentTimesInfoGOOGLE(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType       (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkPresentInfoKHR    (VkPresentInfoKHR)
 import           Graphics.Vulkan.Types.Struct.VkPresentTimeGOOGLE (VkPresentTimeGOOGLE)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPresentTimesInfoGOOGLE {
@@ -25,7 +25,7 @@
 --   >     const VkPresentTimeGOOGLE*   pTimes;
 --   > } VkPresentTimesInfoGOOGLE;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPresentTimesInfoGOOGLE.html VkPresentTimesInfoGOOGLE registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentTimesInfoGOOGLE.html VkPresentTimesInfoGOOGLE registry at www.khronos.org>
 data VkPresentTimesInfoGOOGLE = VkPresentTimesInfoGOOGLE## Addr##
                                                           ByteArray##
 
@@ -75,27 +75,6 @@
         type ReturnedOnly VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPresentTimesInfoGOOGLE = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkPresentTimesInfoGOOGLE
-         where
-        type VkSTypeMType VkPresentTimesInfoGOOGLE = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkPresentTimesInfoGOOGLE, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPresentTimesInfoGOOGLE where
         type FieldType "sType" VkPresentTimesInfoGOOGLE = VkStructureType
@@ -110,37 +89,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentTimesInfoGOOGLE, sType}
 
-instance CanReadField "sType" VkPresentTimesInfoGOOGLE where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkPresentTimesInfoGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, sType}
 
-instance CanWriteField "sType" VkPresentTimesInfoGOOGLE where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkPresentTimesInfoGOOGLE where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkPresentTimesInfoGOOGLE
-         where
-        type VkPNextMType VkPresentTimesInfoGOOGLE = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkPresentTimesInfoGOOGLE, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkPresentTimesInfoGOOGLE where
@@ -156,37 +120,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPresentTimesInfoGOOGLE, pNext}
 
-instance CanReadField "pNext" VkPresentTimesInfoGOOGLE where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkPresentTimesInfoGOOGLE where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSwapchainCount VkPresentTimesInfoGOOGLE where
-        type VkSwapchainCountMType VkPresentTimesInfoGOOGLE = Word32
-
-        {-# NOINLINE vkSwapchainCount #-}
-        vkSwapchainCount x
+         CanReadField "pNext" VkPresentTimesInfoGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, swapchainCount})
-
-        {-# INLINE vkSwapchainCountByteOffset #-}
-        vkSwapchainCountByteOffset ~_
-          = #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
+              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, pNext})
 
-        {-# INLINE readVkSwapchainCount #-}
-        readVkSwapchainCount p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, pNext}
 
-        {-# INLINE writeVkSwapchainCount #-}
-        writeVkSwapchainCount p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkPresentTimesInfoGOOGLE where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "swapchainCount" VkPresentTimesInfoGOOGLE where
@@ -205,40 +154,22 @@
         fieldOffset
           = #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
 
-instance CanReadField "swapchainCount" VkPresentTimesInfoGOOGLE
-         where
-        {-# INLINE getField #-}
-        getField = vkSwapchainCount
+instance {-# OVERLAPPING #-}
+         CanReadField "swapchainCount" VkPresentTimesInfoGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, swapchainCount})
 
         {-# INLINE readField #-}
-        readField = readVkSwapchainCount
+        readField p
+          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
 
-instance CanWriteField "swapchainCount" VkPresentTimesInfoGOOGLE
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "swapchainCount" VkPresentTimesInfoGOOGLE where
         {-# INLINE writeField #-}
-        writeField = writeVkSwapchainCount
-
-instance {-# OVERLAPPING #-} HasVkPTimes VkPresentTimesInfoGOOGLE
-         where
-        type VkPTimesMType VkPresentTimesInfoGOOGLE =
-             Ptr VkPresentTimeGOOGLE
-
-        {-# NOINLINE vkPTimes #-}
-        vkPTimes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, pTimes})
-
-        {-# INLINE vkPTimesByteOffset #-}
-        vkPTimesByteOffset ~_
-          = #{offset VkPresentTimesInfoGOOGLE, pTimes}
-
-        {-# INLINE readVkPTimes #-}
-        readVkPTimes p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, pTimes}
-
-        {-# INLINE writeVkPTimes #-}
-        writeVkPTimes p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, pTimes}
+        writeField p
+          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pTimes" VkPresentTimesInfoGOOGLE where
@@ -256,27 +187,34 @@
         fieldOffset
           = #{offset VkPresentTimesInfoGOOGLE, pTimes}
 
-instance CanReadField "pTimes" VkPresentTimesInfoGOOGLE where
-        {-# INLINE getField #-}
-        getField = vkPTimes
+instance {-# OVERLAPPING #-}
+         CanReadField "pTimes" VkPresentTimesInfoGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, pTimes})
 
         {-# INLINE readField #-}
-        readField = readVkPTimes
+        readField p
+          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, pTimes}
 
-instance CanWriteField "pTimes" VkPresentTimesInfoGOOGLE where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pTimes" VkPresentTimesInfoGOOGLE where
         {-# INLINE writeField #-}
-        writeField = writeVkPTimes
+        writeField p
+          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, pTimes}
 
 instance Show VkPresentTimesInfoGOOGLE where
         showsPrec d x
           = showString "VkPresentTimesInfoGOOGLE {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSwapchainCount = " .
-                            showsPrec d (vkSwapchainCount x) .
+                          showString "swapchainCount = " .
+                            showsPrec d (getField @"swapchainCount" x) .
                               showString ", " .
-                                showString "vkPTimes = " . showsPrec d (vkPTimes x) . showChar '}'
+                                showString "pTimes = " .
+                                  showsPrec d (getField @"pTimes" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkProtectedSubmitInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkProtectedSubmitInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkProtectedSubmitInfo.hsc
@@ -0,0 +1,180 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkProtectedSubmitInfo
+       (VkProtectedSubmitInfo(..)) where
+import           Foreign.Storable                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes            (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkSubmitInfo  (VkSubmitInfo)
+import           System.IO.Unsafe                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkProtectedSubmitInfo {
+--   >     VkStructureType sType;
+--   >     const void*                     pNext;
+--   >     VkBool32                        protectedSubmit;
+--   > } VkProtectedSubmitInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkProtectedSubmitInfo.html VkProtectedSubmitInfo registry at www.khronos.org>
+data VkProtectedSubmitInfo = VkProtectedSubmitInfo## Addr##
+                                                    ByteArray##
+
+instance Eq VkProtectedSubmitInfo where
+        (VkProtectedSubmitInfo## a _) == x@(VkProtectedSubmitInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkProtectedSubmitInfo where
+        (VkProtectedSubmitInfo## a _) `compare`
+          x@(VkProtectedSubmitInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkProtectedSubmitInfo where
+        unsafeAddr (VkProtectedSubmitInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkProtectedSubmitInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkProtectedSubmitInfo## (plusAddr## (byteArrayContents## b) off) b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkPushConstantRange.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkPushConstantRange.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkPushConstantRange.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkPushConstantRange.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkPushConstantRange
        (VkPushConstantRange(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags (VkShaderStageFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPushConstantRange {
@@ -22,7 +22,7 @@
 --   >     uint32_t               size;
 --   > } VkPushConstantRange;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkPushConstantRange.html VkPushConstantRange registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPushConstantRange.html VkPushConstantRange registry at www.khronos.org>
 data VkPushConstantRange = VkPushConstantRange## Addr## ByteArray##
 
 instance Eq VkPushConstantRange where
@@ -70,27 +70,6 @@
         type ReturnedOnly VkPushConstantRange = 'False -- ' closing tick for hsc2hs
         type StructExtends VkPushConstantRange = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkStageFlags VkPushConstantRange
-         where
-        type VkStageFlagsMType VkPushConstantRange = VkShaderStageFlags
-
-        {-# NOINLINE vkStageFlags #-}
-        vkStageFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, stageFlags})
-
-        {-# INLINE vkStageFlagsByteOffset #-}
-        vkStageFlagsByteOffset ~_
-          = #{offset VkPushConstantRange, stageFlags}
-
-        {-# INLINE readVkStageFlags #-}
-        readVkStageFlags p
-          = peekByteOff p #{offset VkPushConstantRange, stageFlags}
-
-        {-# INLINE writeVkStageFlags #-}
-        writeVkStageFlags p
-          = pokeByteOff p #{offset VkPushConstantRange, stageFlags}
-
 instance {-# OVERLAPPING #-}
          HasField "stageFlags" VkPushConstantRange where
         type FieldType "stageFlags" VkPushConstantRange =
@@ -106,36 +85,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPushConstantRange, stageFlags}
 
-instance CanReadField "stageFlags" VkPushConstantRange where
-        {-# INLINE getField #-}
-        getField = vkStageFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "stageFlags" VkPushConstantRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, stageFlags})
 
         {-# INLINE readField #-}
-        readField = readVkStageFlags
+        readField p
+          = peekByteOff p #{offset VkPushConstantRange, stageFlags}
 
-instance CanWriteField "stageFlags" VkPushConstantRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "stageFlags" VkPushConstantRange where
         {-# INLINE writeField #-}
-        writeField = writeVkStageFlags
-
-instance {-# OVERLAPPING #-} HasVkOffset VkPushConstantRange where
-        type VkOffsetMType VkPushConstantRange = Word32
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkPushConstantRange, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkPushConstantRange, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkPushConstantRange, offset}
+        writeField p
+          = pokeByteOff p #{offset VkPushConstantRange, stageFlags}
 
 instance {-# OVERLAPPING #-} HasField "offset" VkPushConstantRange
          where
@@ -151,36 +116,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPushConstantRange, offset}
 
-instance CanReadField "offset" VkPushConstantRange where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkPushConstantRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkPushConstantRange, offset}
 
-instance CanWriteField "offset" VkPushConstantRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkPushConstantRange where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkPushConstantRange where
-        type VkSizeMType VkPushConstantRange = Word32
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkPushConstantRange, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkPushConstantRange, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkPushConstantRange, size}
+        writeField p
+          = pokeByteOff p #{offset VkPushConstantRange, offset}
 
 instance {-# OVERLAPPING #-} HasField "size" VkPushConstantRange
          where
@@ -196,24 +147,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkPushConstantRange, size}
 
-instance CanReadField "size" VkPushConstantRange where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-}
+         CanReadField "size" VkPushConstantRange where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkPushConstantRange, size}
 
-instance CanWriteField "size" VkPushConstantRange where
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkPushConstantRange where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
+        writeField p
+          = pokeByteOff p #{offset VkPushConstantRange, size}
 
 instance Show VkPushConstantRange where
         showsPrec d x
           = showString "VkPushConstantRange {" .
-              showString "vkStageFlags = " .
-                showsPrec d (vkStageFlags x) .
+              showString "stageFlags = " .
+                showsPrec d (getField @"stageFlags" x) .
                   showString ", " .
-                    showString "vkOffset = " .
-                      showsPrec d (vkOffset x) .
+                    showString "offset = " .
+                      showsPrec d (getField @"offset" x) .
                         showString ", " .
-                          showString "vkSize = " . showsPrec d (vkSize x) . showChar '}'
+                          showString "size = " .
+                            showsPrec d (getField @"size" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkQueryPoolCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkQueryPoolCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkQueryPoolCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkQueryPoolCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkQueryPoolCreateInfo
        (VkQueryPoolCreateInfo(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkQueryPipelineStatisticFlags (VkQueryPipelineStatisticFlags)
 import           Graphics.Vulkan.Types.Enum.VkQueryType                   (VkQueryType)
 import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkQueryPoolCreateInfo {
@@ -28,7 +28,7 @@
 --   >     VkQueryPipelineStatisticFlags pipelineStatistics;
 --   > } VkQueryPoolCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkQueryPoolCreateInfo.html VkQueryPoolCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkQueryPoolCreateInfo.html VkQueryPoolCreateInfo registry at www.khronos.org>
 data VkQueryPoolCreateInfo = VkQueryPoolCreateInfo## Addr##
                                                     ByteArray##
 
@@ -78,26 +78,6 @@
         type ReturnedOnly VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkQueryPoolCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkQueryPoolCreateInfo where
-        type VkSTypeMType VkQueryPoolCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkQueryPoolCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkQueryPoolCreateInfo
          where
         type FieldType "sType" VkQueryPoolCreateInfo = VkStructureType
@@ -112,36 +92,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkQueryPoolCreateInfo, sType}
 
-instance CanReadField "sType" VkQueryPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkQueryPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkQueryPoolCreateInfo, sType}
 
-instance CanWriteField "sType" VkQueryPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkQueryPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkQueryPoolCreateInfo where
-        type VkPNextMType VkQueryPoolCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkQueryPoolCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkQueryPoolCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkQueryPoolCreateInfo
          where
@@ -157,36 +123,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkQueryPoolCreateInfo, pNext}
 
-instance CanReadField "pNext" VkQueryPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkQueryPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkQueryPoolCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkQueryPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkQueryPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkQueryPoolCreateInfo where
-        type VkFlagsMType VkQueryPoolCreateInfo = VkQueryPoolCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkQueryPoolCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkQueryPoolCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkQueryPoolCreateInfo
          where
@@ -203,37 +155,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkQueryPoolCreateInfo, flags}
 
-instance CanReadField "flags" VkQueryPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkQueryPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkQueryPoolCreateInfo, flags}
 
-instance CanWriteField "flags" VkQueryPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkQueryPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkQueryType VkQueryPoolCreateInfo
-         where
-        type VkQueryTypeMType VkQueryPoolCreateInfo = VkQueryType
-
-        {-# NOINLINE vkQueryType #-}
-        vkQueryType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, queryType})
-
-        {-# INLINE vkQueryTypeByteOffset #-}
-        vkQueryTypeByteOffset ~_
-          = #{offset VkQueryPoolCreateInfo, queryType}
-
-        {-# INLINE readVkQueryType #-}
-        readVkQueryType p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, queryType}
-
-        {-# INLINE writeVkQueryType #-}
-        writeVkQueryType p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, queryType}
+        writeField p
+          = pokeByteOff p #{offset VkQueryPoolCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "queryType" VkQueryPoolCreateInfo where
@@ -250,37 +187,22 @@
         fieldOffset
           = #{offset VkQueryPoolCreateInfo, queryType}
 
-instance CanReadField "queryType" VkQueryPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkQueryType
+instance {-# OVERLAPPING #-}
+         CanReadField "queryType" VkQueryPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, queryType})
 
         {-# INLINE readField #-}
-        readField = readVkQueryType
+        readField p
+          = peekByteOff p #{offset VkQueryPoolCreateInfo, queryType}
 
-instance CanWriteField "queryType" VkQueryPoolCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "queryType" VkQueryPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkQueryType
-
-instance {-# OVERLAPPING #-} HasVkQueryCount VkQueryPoolCreateInfo
-         where
-        type VkQueryCountMType VkQueryPoolCreateInfo = Word32
-
-        {-# NOINLINE vkQueryCount #-}
-        vkQueryCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, queryCount})
-
-        {-# INLINE vkQueryCountByteOffset #-}
-        vkQueryCountByteOffset ~_
-          = #{offset VkQueryPoolCreateInfo, queryCount}
-
-        {-# INLINE readVkQueryCount #-}
-        readVkQueryCount p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, queryCount}
-
-        {-# INLINE writeVkQueryCount #-}
-        writeVkQueryCount p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, queryCount}
+        writeField p
+          = pokeByteOff p #{offset VkQueryPoolCreateInfo, queryType}
 
 instance {-# OVERLAPPING #-}
          HasField "queryCount" VkQueryPoolCreateInfo where
@@ -297,38 +219,22 @@
         fieldOffset
           = #{offset VkQueryPoolCreateInfo, queryCount}
 
-instance CanReadField "queryCount" VkQueryPoolCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkQueryCount
-
-        {-# INLINE readField #-}
-        readField = readVkQueryCount
-
-instance CanWriteField "queryCount" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkQueryCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPipelineStatistics VkQueryPoolCreateInfo where
-        type VkPipelineStatisticsMType VkQueryPoolCreateInfo =
-             VkQueryPipelineStatisticFlags
-
-        {-# NOINLINE vkPipelineStatistics #-}
-        vkPipelineStatistics x
+         CanReadField "queryCount" VkQueryPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, pipelineStatistics})
-
-        {-# INLINE vkPipelineStatisticsByteOffset #-}
-        vkPipelineStatisticsByteOffset ~_
-          = #{offset VkQueryPoolCreateInfo, pipelineStatistics}
+              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, queryCount})
 
-        {-# INLINE readVkPipelineStatistics #-}
-        readVkPipelineStatistics p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, pipelineStatistics}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkQueryPoolCreateInfo, queryCount}
 
-        {-# INLINE writeVkPipelineStatistics #-}
-        writeVkPipelineStatistics p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, pipelineStatistics}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queryCount" VkQueryPoolCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkQueryPoolCreateInfo, queryCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineStatistics" VkQueryPoolCreateInfo where
@@ -348,36 +254,41 @@
         fieldOffset
           = #{offset VkQueryPoolCreateInfo, pipelineStatistics}
 
-instance CanReadField "pipelineStatistics" VkQueryPoolCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPipelineStatistics
+instance {-# OVERLAPPING #-}
+         CanReadField "pipelineStatistics" VkQueryPoolCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, pipelineStatistics})
 
         {-# INLINE readField #-}
-        readField = readVkPipelineStatistics
+        readField p
+          = peekByteOff p #{offset VkQueryPoolCreateInfo, pipelineStatistics}
 
-instance CanWriteField "pipelineStatistics" VkQueryPoolCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipelineStatistics" VkQueryPoolCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPipelineStatistics
+        writeField p
+          = pokeByteOff p #{offset VkQueryPoolCreateInfo, pipelineStatistics}
 
 instance Show VkQueryPoolCreateInfo where
         showsPrec d x
           = showString "VkQueryPoolCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkQueryType = " .
-                                  showsPrec d (vkQueryType x) .
+                                showString "queryType = " .
+                                  showsPrec d (getField @"queryType" x) .
                                     showString ", " .
-                                      showString "vkQueryCount = " .
-                                        showsPrec d (vkQueryCount x) .
+                                      showString "queryCount = " .
+                                        showsPrec d (getField @"queryCount" x) .
                                           showString ", " .
-                                            showString "vkPipelineStatistics = " .
-                                              showsPrec d (vkPipelineStatistics x) . showChar '}'
+                                            showString "pipelineStatistics = " .
+                                              showsPrec d (getField @"pipelineStatistics" x) .
+                                                showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties
        (VkQueueFamilyProperties(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkQueueFlags (VkQueueFlags)
 import           Graphics.Vulkan.Types.Struct.VkExtent3D (VkExtent3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkQueueFamilyProperties {
@@ -24,7 +24,7 @@
 --   >     VkExtent3D             minImageTransferGranularity;
 --   > } VkQueueFamilyProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkQueueFamilyProperties.html VkQueueFamilyProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkQueueFamilyProperties.html VkQueueFamilyProperties registry at www.khronos.org>
 data VkQueueFamilyProperties = VkQueueFamilyProperties## Addr##
                                                         ByteArray##
 
@@ -75,27 +75,6 @@
         type StructExtends VkQueueFamilyProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkQueueFlags VkQueueFamilyProperties where
-        type VkQueueFlagsMType VkQueueFamilyProperties = VkQueueFlags
-
-        {-# NOINLINE vkQueueFlags #-}
-        vkQueueFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, queueFlags})
-
-        {-# INLINE vkQueueFlagsByteOffset #-}
-        vkQueueFlagsByteOffset ~_
-          = #{offset VkQueueFamilyProperties, queueFlags}
-
-        {-# INLINE readVkQueueFlags #-}
-        readVkQueueFlags p
-          = peekByteOff p #{offset VkQueueFamilyProperties, queueFlags}
-
-        {-# INLINE writeVkQueueFlags #-}
-        writeVkQueueFlags p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, queueFlags}
-
-instance {-# OVERLAPPING #-}
          HasField "queueFlags" VkQueueFamilyProperties where
         type FieldType "queueFlags" VkQueueFamilyProperties = VkQueueFlags
         type FieldOptional "queueFlags" VkQueueFamilyProperties = 'True -- ' closing tick for hsc2hs
@@ -110,33 +89,22 @@
         fieldOffset
           = #{offset VkQueueFamilyProperties, queueFlags}
 
-instance CanReadField "queueFlags" VkQueueFamilyProperties where
-        {-# INLINE getField #-}
-        getField = vkQueueFlags
-
-        {-# INLINE readField #-}
-        readField = readVkQueueFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueCount VkQueueFamilyProperties where
-        type VkQueueCountMType VkQueueFamilyProperties = Word32
-
-        {-# NOINLINE vkQueueCount #-}
-        vkQueueCount x
+         CanReadField "queueFlags" VkQueueFamilyProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, queueCount})
-
-        {-# INLINE vkQueueCountByteOffset #-}
-        vkQueueCountByteOffset ~_
-          = #{offset VkQueueFamilyProperties, queueCount}
+              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, queueFlags})
 
-        {-# INLINE readVkQueueCount #-}
-        readVkQueueCount p
-          = peekByteOff p #{offset VkQueueFamilyProperties, queueCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkQueueFamilyProperties, queueFlags}
 
-        {-# INLINE writeVkQueueCount #-}
-        writeVkQueueCount p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, queueCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueFlags" VkQueueFamilyProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkQueueFamilyProperties, queueFlags}
 
 instance {-# OVERLAPPING #-}
          HasField "queueCount" VkQueueFamilyProperties where
@@ -153,33 +121,22 @@
         fieldOffset
           = #{offset VkQueueFamilyProperties, queueCount}
 
-instance CanReadField "queueCount" VkQueueFamilyProperties where
-        {-# INLINE getField #-}
-        getField = vkQueueCount
-
-        {-# INLINE readField #-}
-        readField = readVkQueueCount
-
 instance {-# OVERLAPPING #-}
-         HasVkTimestampValidBits VkQueueFamilyProperties where
-        type VkTimestampValidBitsMType VkQueueFamilyProperties = Word32
-
-        {-# NOINLINE vkTimestampValidBits #-}
-        vkTimestampValidBits x
+         CanReadField "queueCount" VkQueueFamilyProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, timestampValidBits})
-
-        {-# INLINE vkTimestampValidBitsByteOffset #-}
-        vkTimestampValidBitsByteOffset ~_
-          = #{offset VkQueueFamilyProperties, timestampValidBits}
+              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, queueCount})
 
-        {-# INLINE readVkTimestampValidBits #-}
-        readVkTimestampValidBits p
-          = peekByteOff p #{offset VkQueueFamilyProperties, timestampValidBits}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkQueueFamilyProperties, queueCount}
 
-        {-# INLINE writeVkTimestampValidBits #-}
-        writeVkTimestampValidBits p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, timestampValidBits}
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueCount" VkQueueFamilyProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkQueueFamilyProperties, queueCount}
 
 instance {-# OVERLAPPING #-}
          HasField "timestampValidBits" VkQueueFamilyProperties where
@@ -199,35 +156,22 @@
         fieldOffset
           = #{offset VkQueueFamilyProperties, timestampValidBits}
 
-instance CanReadField "timestampValidBits" VkQueueFamilyProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkTimestampValidBits
-
-        {-# INLINE readField #-}
-        readField = readVkTimestampValidBits
-
 instance {-# OVERLAPPING #-}
-         HasVkMinImageTransferGranularity VkQueueFamilyProperties where
-        type VkMinImageTransferGranularityMType VkQueueFamilyProperties =
-             VkExtent3D
-
-        {-# NOINLINE vkMinImageTransferGranularity #-}
-        vkMinImageTransferGranularity x
+         CanReadField "timestampValidBits" VkQueueFamilyProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, minImageTransferGranularity})
-
-        {-# INLINE vkMinImageTransferGranularityByteOffset #-}
-        vkMinImageTransferGranularityByteOffset ~_
-          = #{offset VkQueueFamilyProperties, minImageTransferGranularity}
+              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, timestampValidBits})
 
-        {-# INLINE readVkMinImageTransferGranularity #-}
-        readVkMinImageTransferGranularity p
-          = peekByteOff p #{offset VkQueueFamilyProperties, minImageTransferGranularity}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkQueueFamilyProperties, timestampValidBits}
 
-        {-# INLINE writeVkMinImageTransferGranularity #-}
-        writeVkMinImageTransferGranularity p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, minImageTransferGranularity}
+instance {-# OVERLAPPING #-}
+         CanWriteField "timestampValidBits" VkQueueFamilyProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkQueueFamilyProperties, timestampValidBits}
 
 instance {-# OVERLAPPING #-}
          HasField "minImageTransferGranularity" VkQueueFamilyProperties
@@ -253,26 +197,37 @@
         fieldOffset
           = #{offset VkQueueFamilyProperties, minImageTransferGranularity}
 
-instance CanReadField "minImageTransferGranularity"
-           VkQueueFamilyProperties
+instance {-# OVERLAPPING #-}
+         CanReadField "minImageTransferGranularity" VkQueueFamilyProperties
          where
-        {-# INLINE getField #-}
-        getField = vkMinImageTransferGranularity
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, minImageTransferGranularity})
 
         {-# INLINE readField #-}
-        readField = readVkMinImageTransferGranularity
+        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 "vkQueueFlags = " .
-                showsPrec d (vkQueueFlags x) .
+              showString "queueFlags = " .
+                showsPrec d (getField @"queueFlags" x) .
                   showString ", " .
-                    showString "vkQueueCount = " .
-                      showsPrec d (vkQueueCount x) .
+                    showString "queueCount = " .
+                      showsPrec d (getField @"queueCount" x) .
                         showString ", " .
-                          showString "vkTimestampValidBits = " .
-                            showsPrec d (vkTimestampValidBits x) .
+                          showString "timestampValidBits = " .
+                            showsPrec d (getField @"timestampValidBits" x) .
                               showString ", " .
-                                showString "vkMinImageTransferGranularity = " .
-                                  showsPrec d (vkMinImageTransferGranularity x) . showChar '}'
+                                showString "minImageTransferGranularity = " .
+                                  showsPrec d (getField @"minImageTransferGranularity" x) .
+                                    showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2.hsc
@@ -0,0 +1,184 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2
+       (VkQueueFamilyProperties2(..)) where
+import           Foreign.Storable                                     (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties (VkQueueFamilyProperties)
+import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
+
+-- | > typedef struct VkQueueFamilyProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkQueueFamilyProperties          queueFamilyProperties;
+--   > } VkQueueFamilyProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkQueueFamilyProperties2.html VkQueueFamilyProperties2 registry at www.khronos.org>
+data VkQueueFamilyProperties2 = VkQueueFamilyProperties2## Addr##
+                                                          ByteArray##
+
+instance Eq VkQueueFamilyProperties2 where
+        (VkQueueFamilyProperties2## a _) ==
+          x@(VkQueueFamilyProperties2## b _) = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkQueueFamilyProperties2 where
+        (VkQueueFamilyProperties2## a _) `compare`
+          x@(VkQueueFamilyProperties2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkQueueFamilyProperties2 where
+        unsafeAddr (VkQueueFamilyProperties2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkQueueFamilyProperties2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkQueueFamilyProperties2## (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2KHR.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2KHR
+       (VkQueueFamilyProperties2(..), VkQueueFamilyProperties2KHR) where
+import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2 (VkQueueFamilyProperties2 (..))
+
+-- | Alias for `VkQueueFamilyProperties2`
+type VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkQueueFamilyProperties2KHR.hsc
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2KHR
-       (VkQueueFamilyProperties2KHR(..)) where
-import           Foreign.Storable                                     (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties (VkQueueFamilyProperties)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
-
--- | > typedef struct VkQueueFamilyProperties2KHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkQueueFamilyProperties          queueFamilyProperties;
---   > } VkQueueFamilyProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkQueueFamilyProperties2KHR.html VkQueueFamilyProperties2KHR registry at www.khronos.org>
-data VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2KHR## Addr##
-                                                                ByteArray##
-
-instance Eq VkQueueFamilyProperties2KHR where
-        (VkQueueFamilyProperties2KHR## a _) ==
-          x@(VkQueueFamilyProperties2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkQueueFamilyProperties2KHR where
-        (VkQueueFamilyProperties2KHR## a _) `compare`
-          x@(VkQueueFamilyProperties2KHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkQueueFamilyProperties2KHR where
-        sizeOf ~_ = #{size VkQueueFamilyProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkQueueFamilyProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkQueueFamilyProperties2KHR where
-        unsafeAddr (VkQueueFamilyProperties2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkQueueFamilyProperties2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkQueueFamilyProperties2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkQueueFamilyProperties2KHR where
-        type StructFields VkQueueFamilyProperties2KHR =
-             '["sType", "pNext", "queueFamilyProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkQueueFamilyProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkQueueFamilyProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkQueueFamilyProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasVkSType VkQueueFamilyProperties2KHR
-         where
-        type VkSTypeMType VkQueueFamilyProperties2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkQueueFamilyProperties2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkQueueFamilyProperties2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkQueueFamilyProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkQueueFamilyProperties2KHR where
-        type FieldType "sType" VkQueueFamilyProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkQueueFamilyProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkQueueFamilyProperties2KHR =
-             #{offset VkQueueFamilyProperties2KHR, sType}
-        type FieldIsArray "sType" VkQueueFamilyProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties2KHR, sType}
-
-instance CanReadField "sType" VkQueueFamilyProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkQueueFamilyProperties2KHR
-         where
-        type VkPNextMType VkQueueFamilyProperties2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkQueueFamilyProperties2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkQueueFamilyProperties2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkQueueFamilyProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkQueueFamilyProperties2KHR where
-        type FieldType "pNext" VkQueueFamilyProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkQueueFamilyProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkQueueFamilyProperties2KHR =
-             #{offset VkQueueFamilyProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkQueueFamilyProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties2KHR, pNext}
-
-instance CanReadField "pNext" VkQueueFamilyProperties2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkQueueFamilyProperties VkQueueFamilyProperties2KHR where
-        type VkQueueFamilyPropertiesMType VkQueueFamilyProperties2KHR =
-             VkQueueFamilyProperties
-
-        {-# NOINLINE vkQueueFamilyProperties #-}
-        vkQueueFamilyProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties2KHR, queueFamilyProperties})
-
-        {-# INLINE vkQueueFamilyPropertiesByteOffset #-}
-        vkQueueFamilyPropertiesByteOffset ~_
-          = #{offset VkQueueFamilyProperties2KHR, queueFamilyProperties}
-
-        {-# INLINE readVkQueueFamilyProperties #-}
-        readVkQueueFamilyProperties p
-          = peekByteOff p #{offset VkQueueFamilyProperties2KHR, queueFamilyProperties}
-
-        {-# INLINE writeVkQueueFamilyProperties #-}
-        writeVkQueueFamilyProperties p
-          = pokeByteOff p #{offset VkQueueFamilyProperties2KHR, queueFamilyProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyProperties" VkQueueFamilyProperties2KHR where
-        type FieldType "queueFamilyProperties" VkQueueFamilyProperties2KHR
-             = VkQueueFamilyProperties
-        type FieldOptional "queueFamilyProperties"
-               VkQueueFamilyProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyProperties"
-               VkQueueFamilyProperties2KHR
-             =
-             #{offset VkQueueFamilyProperties2KHR, queueFamilyProperties}
-        type FieldIsArray "queueFamilyProperties"
-               VkQueueFamilyProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties2KHR, queueFamilyProperties}
-
-instance CanReadField "queueFamilyProperties"
-           VkQueueFamilyProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueFamilyProperties
-
-        {-# INLINE readField #-}
-        readField = readVkQueueFamilyProperties
-
-instance Show VkQueueFamilyProperties2KHR where
-        showsPrec d x
-          = showString "VkQueueFamilyProperties2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkQueueFamilyProperties = " .
-                            showsPrec d (vkQueueFamilyProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRect2D.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRect2D.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRect2D.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRect2D.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkRect2D (VkRect2D(..)) where
 import           Foreign.Storable                        (Storable (..))
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkExtent2D (VkExtent2D)
 import           Graphics.Vulkan.Types.Struct.VkOffset2D (VkOffset2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRect2D {
@@ -21,7 +21,7 @@
 --   >     VkExtent2D     extent;
 --   > } VkRect2D;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRect2D.html VkRect2D registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRect2D.html VkRect2D registry at www.khronos.org>
 data VkRect2D = VkRect2D## Addr## ByteArray##
 
 instance Eq VkRect2D where
@@ -68,25 +68,6 @@
         type ReturnedOnly VkRect2D = 'False -- ' closing tick for hsc2hs
         type StructExtends VkRect2D = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkOffset VkRect2D where
-        type VkOffsetMType VkRect2D = VkOffset2D
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRect2D, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_ = #{offset VkRect2D, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkRect2D, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkRect2D, offset}
-
 instance {-# OVERLAPPING #-} HasField "offset" VkRect2D where
         type FieldType "offset" VkRect2D = VkOffset2D
         type FieldOptional "offset" VkRect2D = 'False -- ' closing tick for hsc2hs
@@ -100,35 +81,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRect2D, offset}
 
-instance CanReadField "offset" VkRect2D where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-} CanReadField "offset" VkRect2D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRect2D, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p = peekByteOff p #{offset VkRect2D, offset}
 
-instance CanWriteField "offset" VkRect2D where
+instance {-# OVERLAPPING #-} CanWriteField "offset" VkRect2D where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkExtent VkRect2D where
-        type VkExtentMType VkRect2D = VkExtent2D
-
-        {-# NOINLINE vkExtent #-}
-        vkExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRect2D, extent})
-
-        {-# INLINE vkExtentByteOffset #-}
-        vkExtentByteOffset ~_ = #{offset VkRect2D, extent}
-
-        {-# INLINE readVkExtent #-}
-        readVkExtent p
-          = peekByteOff p #{offset VkRect2D, extent}
-
-        {-# INLINE writeVkExtent #-}
-        writeVkExtent p
-          = pokeByteOff p #{offset VkRect2D, extent}
+        writeField p = pokeByteOff p #{offset VkRect2D, offset}
 
 instance {-# OVERLAPPING #-} HasField "extent" VkRect2D where
         type FieldType "extent" VkRect2D = VkExtent2D
@@ -143,21 +107,24 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRect2D, extent}
 
-instance CanReadField "extent" VkRect2D where
-        {-# INLINE getField #-}
-        getField = vkExtent
+instance {-# OVERLAPPING #-} CanReadField "extent" VkRect2D where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRect2D, extent})
 
         {-# INLINE readField #-}
-        readField = readVkExtent
+        readField p = peekByteOff p #{offset VkRect2D, extent}
 
-instance CanWriteField "extent" VkRect2D where
+instance {-# OVERLAPPING #-} CanWriteField "extent" VkRect2D where
         {-# INLINE writeField #-}
-        writeField = writeVkExtent
+        writeField p = pokeByteOff p #{offset VkRect2D, extent}
 
 instance Show VkRect2D where
         showsPrec d x
           = showString "VkRect2D {" .
-              showString "vkOffset = " .
-                showsPrec d (vkOffset x) .
+              showString "offset = " .
+                showsPrec d (getField @"offset" x) .
                   showString ", " .
-                    showString "vkExtent = " . showsPrec d (vkExtent x) . showChar '}'
+                    showString "extent = " .
+                      showsPrec d (getField @"extent" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRectLayerKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRectLayerKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRectLayerKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRectLayerKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkRectLayerKHR
        (VkRectLayerKHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkExtent2D (VkExtent2D)
 import           Graphics.Vulkan.Types.Struct.VkOffset2D (VkOffset2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                        (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRectLayerKHR {
@@ -23,7 +23,7 @@
 --   >     uint32_t                         layer;
 --   > } VkRectLayerKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRectLayerKHR.html VkRectLayerKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRectLayerKHR.html VkRectLayerKHR registry at www.khronos.org>
 data VkRectLayerKHR = VkRectLayerKHR## Addr## ByteArray##
 
 instance Eq VkRectLayerKHR where
@@ -70,26 +70,6 @@
         type ReturnedOnly VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkRectLayerKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkOffset VkRectLayerKHR where
-        type VkOffsetMType VkRectLayerKHR = VkOffset2D
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkRectLayerKHR, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkRectLayerKHR, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkRectLayerKHR, offset}
-
 instance {-# OVERLAPPING #-} HasField "offset" VkRectLayerKHR where
         type FieldType "offset" VkRectLayerKHR = VkOffset2D
         type FieldOptional "offset" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
@@ -103,36 +83,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRectLayerKHR, offset}
 
-instance CanReadField "offset" VkRectLayerKHR where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-} CanReadField "offset" VkRectLayerKHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkRectLayerKHR, offset}
 
-instance CanWriteField "offset" VkRectLayerKHR where
+instance {-# OVERLAPPING #-} CanWriteField "offset" VkRectLayerKHR
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkExtent VkRectLayerKHR where
-        type VkExtentMType VkRectLayerKHR = VkExtent2D
-
-        {-# NOINLINE vkExtent #-}
-        vkExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, extent})
-
-        {-# INLINE vkExtentByteOffset #-}
-        vkExtentByteOffset ~_
-          = #{offset VkRectLayerKHR, extent}
-
-        {-# INLINE readVkExtent #-}
-        readVkExtent p
-          = peekByteOff p #{offset VkRectLayerKHR, extent}
-
-        {-# INLINE writeVkExtent #-}
-        writeVkExtent p
-          = pokeByteOff p #{offset VkRectLayerKHR, extent}
+        writeField p
+          = pokeByteOff p #{offset VkRectLayerKHR, offset}
 
 instance {-# OVERLAPPING #-} HasField "extent" VkRectLayerKHR where
         type FieldType "extent" VkRectLayerKHR = VkExtent2D
@@ -147,35 +113,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRectLayerKHR, extent}
 
-instance CanReadField "extent" VkRectLayerKHR where
-        {-# INLINE getField #-}
-        getField = vkExtent
+instance {-# OVERLAPPING #-} CanReadField "extent" VkRectLayerKHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, extent})
 
         {-# INLINE readField #-}
-        readField = readVkExtent
+        readField p
+          = peekByteOff p #{offset VkRectLayerKHR, extent}
 
-instance CanWriteField "extent" VkRectLayerKHR where
+instance {-# OVERLAPPING #-} CanWriteField "extent" VkRectLayerKHR
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkExtent
-
-instance {-# OVERLAPPING #-} HasVkLayer VkRectLayerKHR where
-        type VkLayerMType VkRectLayerKHR = Word32
-
-        {-# NOINLINE vkLayer #-}
-        vkLayer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, layer})
-
-        {-# INLINE vkLayerByteOffset #-}
-        vkLayerByteOffset ~_ = #{offset VkRectLayerKHR, layer}
-
-        {-# INLINE readVkLayer #-}
-        readVkLayer p
-          = peekByteOff p #{offset VkRectLayerKHR, layer}
-
-        {-# INLINE writeVkLayer #-}
-        writeVkLayer p
-          = pokeByteOff p #{offset VkRectLayerKHR, layer}
+        writeField p
+          = pokeByteOff p #{offset VkRectLayerKHR, extent}
 
 instance {-# OVERLAPPING #-} HasField "layer" VkRectLayerKHR where
         type FieldType "layer" VkRectLayerKHR = Word32
@@ -190,24 +143,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRectLayerKHR, layer}
 
-instance CanReadField "layer" VkRectLayerKHR where
-        {-# INLINE getField #-}
-        getField = vkLayer
+instance {-# OVERLAPPING #-} CanReadField "layer" VkRectLayerKHR
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, layer})
 
         {-# INLINE readField #-}
-        readField = readVkLayer
+        readField p
+          = peekByteOff p #{offset VkRectLayerKHR, layer}
 
-instance CanWriteField "layer" VkRectLayerKHR where
+instance {-# OVERLAPPING #-} CanWriteField "layer" VkRectLayerKHR
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkLayer
+        writeField p
+          = pokeByteOff p #{offset VkRectLayerKHR, layer}
 
 instance Show VkRectLayerKHR where
         showsPrec d x
           = showString "VkRectLayerKHR {" .
-              showString "vkOffset = " .
-                showsPrec d (vkOffset x) .
+              showString "offset = " .
+                showsPrec d (getField @"offset" x) .
                   showString ", " .
-                    showString "vkExtent = " .
-                      showsPrec d (vkExtent x) .
+                    showString "extent = " .
+                      showsPrec d (getField @"extent" x) .
                         showString ", " .
-                          showString "vkLayer = " . showsPrec d (vkLayer x) . showChar '}'
+                          showString "layer = " .
+                            showsPrec d (getField @"layer" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRefreshCycleDurationGOOGLE.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRefreshCycleDurationGOOGLE.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRefreshCycleDurationGOOGLE.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRefreshCycleDurationGOOGLE.hsc
@@ -5,21 +5,21 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkRefreshCycleDurationGOOGLE
        (VkRefreshCycleDurationGOOGLE(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRefreshCycleDurationGOOGLE {
 --   >     uint64_t                         refreshDuration;
 --   > } VkRefreshCycleDurationGOOGLE;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRefreshCycleDurationGOOGLE.html VkRefreshCycleDurationGOOGLE registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRefreshCycleDurationGOOGLE.html VkRefreshCycleDurationGOOGLE registry at www.khronos.org>
 data VkRefreshCycleDurationGOOGLE = VkRefreshCycleDurationGOOGLE## Addr##
                                                                   ByteArray##
 
@@ -73,27 +73,6 @@
         type StructExtends VkRefreshCycleDurationGOOGLE = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkRefreshDuration VkRefreshCycleDurationGOOGLE where
-        type VkRefreshDurationMType VkRefreshCycleDurationGOOGLE = Word64
-
-        {-# NOINLINE vkRefreshDuration #-}
-        vkRefreshDuration x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRefreshCycleDurationGOOGLE, refreshDuration})
-
-        {-# INLINE vkRefreshDurationByteOffset #-}
-        vkRefreshDurationByteOffset ~_
-          = #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-
-        {-# INLINE readVkRefreshDuration #-}
-        readVkRefreshDuration p
-          = peekByteOff p #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-
-        {-# INLINE writeVkRefreshDuration #-}
-        writeVkRefreshDuration p
-          = pokeByteOff p #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-
-instance {-# OVERLAPPING #-}
          HasField "refreshDuration" VkRefreshCycleDurationGOOGLE where
         type FieldType "refreshDuration" VkRefreshCycleDurationGOOGLE =
              Word64
@@ -111,23 +90,25 @@
         fieldOffset
           = #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
 
-instance CanReadField "refreshDuration"
-           VkRefreshCycleDurationGOOGLE
-         where
-        {-# INLINE getField #-}
-        getField = vkRefreshDuration
+instance {-# OVERLAPPING #-}
+         CanReadField "refreshDuration" VkRefreshCycleDurationGOOGLE where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRefreshCycleDurationGOOGLE, refreshDuration})
 
         {-# INLINE readField #-}
-        readField = readVkRefreshDuration
+        readField p
+          = peekByteOff p #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
 
-instance CanWriteField "refreshDuration"
-           VkRefreshCycleDurationGOOGLE
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "refreshDuration" VkRefreshCycleDurationGOOGLE where
         {-# INLINE writeField #-}
-        writeField = writeVkRefreshDuration
+        writeField p
+          = pokeByteOff p #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
 
 instance Show VkRefreshCycleDurationGOOGLE where
         showsPrec d x
           = showString "VkRefreshCycleDurationGOOGLE {" .
-              showString "vkRefreshDuration = " .
-                showsPrec d (vkRefreshDuration x) . showChar '}'
+              showString "refreshDuration = " .
+                showsPrec d (getField @"refreshDuration" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassBeginInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassBeginInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassBeginInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassBeginInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo
        (VkRenderPassBeginInfo(..)) where
@@ -17,7 +18,6 @@
                                                              VkRenderPass)
 import           Graphics.Vulkan.Types.Struct.VkClearValue  (VkClearValue)
 import           Graphics.Vulkan.Types.Struct.VkRect2D      (VkRect2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRenderPassBeginInfo {
@@ -30,7 +30,7 @@
 --   >     const VkClearValue*    pClearValues;
 --   > } VkRenderPassBeginInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRenderPassBeginInfo.html VkRenderPassBeginInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRenderPassBeginInfo.html VkRenderPassBeginInfo registry at www.khronos.org>
 data VkRenderPassBeginInfo = VkRenderPassBeginInfo## Addr##
                                                     ByteArray##
 
@@ -80,26 +80,6 @@
         type ReturnedOnly VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkRenderPassBeginInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkRenderPassBeginInfo where
-        type VkSTypeMType VkRenderPassBeginInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkRenderPassBeginInfo
          where
         type FieldType "sType" VkRenderPassBeginInfo = VkStructureType
@@ -114,36 +94,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRenderPassBeginInfo, sType}
 
-instance CanReadField "sType" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, sType}
 
-instance CanWriteField "sType" VkRenderPassBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkRenderPassBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkRenderPassBeginInfo where
-        type VkPNextMType VkRenderPassBeginInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkRenderPassBeginInfo
          where
@@ -159,37 +125,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRenderPassBeginInfo, pNext}
 
-instance CanReadField "pNext" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, pNext}
 
-instance CanWriteField "pNext" VkRenderPassBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkRenderPassBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkRenderPass VkRenderPassBeginInfo
-         where
-        type VkRenderPassMType VkRenderPassBeginInfo = VkRenderPass
-
-        {-# NOINLINE vkRenderPass #-}
-        vkRenderPass x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, renderPass})
-
-        {-# INLINE vkRenderPassByteOffset #-}
-        vkRenderPassByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, renderPass}
-
-        {-# INLINE readVkRenderPass #-}
-        readVkRenderPass p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, renderPass}
-
-        {-# INLINE writeVkRenderPass #-}
-        writeVkRenderPass p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, renderPass}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "renderPass" VkRenderPassBeginInfo where
@@ -206,37 +157,22 @@
         fieldOffset
           = #{offset VkRenderPassBeginInfo, renderPass}
 
-instance CanReadField "renderPass" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkRenderPass
+instance {-# OVERLAPPING #-}
+         CanReadField "renderPass" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, renderPass})
 
         {-# INLINE readField #-}
-        readField = readVkRenderPass
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, renderPass}
 
-instance CanWriteField "renderPass" VkRenderPassBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "renderPass" VkRenderPassBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkRenderPass
-
-instance {-# OVERLAPPING #-} HasVkFramebuffer VkRenderPassBeginInfo
-         where
-        type VkFramebufferMType VkRenderPassBeginInfo = VkFramebuffer
-
-        {-# NOINLINE vkFramebuffer #-}
-        vkFramebuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, framebuffer})
-
-        {-# INLINE vkFramebufferByteOffset #-}
-        vkFramebufferByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, framebuffer}
-
-        {-# INLINE readVkFramebuffer #-}
-        readVkFramebuffer p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, framebuffer}
-
-        {-# INLINE writeVkFramebuffer #-}
-        writeVkFramebuffer p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, framebuffer}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, renderPass}
 
 instance {-# OVERLAPPING #-}
          HasField "framebuffer" VkRenderPassBeginInfo where
@@ -253,37 +189,22 @@
         fieldOffset
           = #{offset VkRenderPassBeginInfo, framebuffer}
 
-instance CanReadField "framebuffer" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkFramebuffer
+instance {-# OVERLAPPING #-}
+         CanReadField "framebuffer" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, framebuffer})
 
         {-# INLINE readField #-}
-        readField = readVkFramebuffer
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, framebuffer}
 
-instance CanWriteField "framebuffer" VkRenderPassBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "framebuffer" VkRenderPassBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFramebuffer
-
-instance {-# OVERLAPPING #-} HasVkRenderArea VkRenderPassBeginInfo
-         where
-        type VkRenderAreaMType VkRenderPassBeginInfo = VkRect2D
-
-        {-# NOINLINE vkRenderArea #-}
-        vkRenderArea x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, renderArea})
-
-        {-# INLINE vkRenderAreaByteOffset #-}
-        vkRenderAreaByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, renderArea}
-
-        {-# INLINE readVkRenderArea #-}
-        readVkRenderArea p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, renderArea}
-
-        {-# INLINE writeVkRenderArea #-}
-        writeVkRenderArea p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, renderArea}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, framebuffer}
 
 instance {-# OVERLAPPING #-}
          HasField "renderArea" VkRenderPassBeginInfo where
@@ -300,37 +221,22 @@
         fieldOffset
           = #{offset VkRenderPassBeginInfo, renderArea}
 
-instance CanReadField "renderArea" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkRenderArea
-
-        {-# INLINE readField #-}
-        readField = readVkRenderArea
-
-instance CanWriteField "renderArea" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkRenderArea
-
 instance {-# OVERLAPPING #-}
-         HasVkClearValueCount VkRenderPassBeginInfo where
-        type VkClearValueCountMType VkRenderPassBeginInfo = Word32
-
-        {-# NOINLINE vkClearValueCount #-}
-        vkClearValueCount x
+         CanReadField "renderArea" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, clearValueCount})
-
-        {-# INLINE vkClearValueCountByteOffset #-}
-        vkClearValueCountByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, clearValueCount}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, renderArea})
 
-        {-# INLINE readVkClearValueCount #-}
-        readVkClearValueCount p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, clearValueCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, renderArea}
 
-        {-# INLINE writeVkClearValueCount #-}
-        writeVkClearValueCount p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, clearValueCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "renderArea" VkRenderPassBeginInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, renderArea}
 
 instance {-# OVERLAPPING #-}
          HasField "clearValueCount" VkRenderPassBeginInfo where
@@ -347,38 +253,22 @@
         fieldOffset
           = #{offset VkRenderPassBeginInfo, clearValueCount}
 
-instance CanReadField "clearValueCount" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkClearValueCount
-
-        {-# INLINE readField #-}
-        readField = readVkClearValueCount
-
-instance CanWriteField "clearValueCount" VkRenderPassBeginInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkClearValueCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPClearValues VkRenderPassBeginInfo where
-        type VkPClearValuesMType VkRenderPassBeginInfo = Ptr VkClearValue
-
-        {-# NOINLINE vkPClearValues #-}
-        vkPClearValues x
+         CanReadField "clearValueCount" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, pClearValues})
-
-        {-# INLINE vkPClearValuesByteOffset #-}
-        vkPClearValuesByteOffset ~_
-          = #{offset VkRenderPassBeginInfo, pClearValues}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, clearValueCount})
 
-        {-# INLINE readVkPClearValues #-}
-        readVkPClearValues p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, pClearValues}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, clearValueCount}
 
-        {-# INLINE writeVkPClearValues #-}
-        writeVkPClearValues p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, pClearValues}
+instance {-# OVERLAPPING #-}
+         CanWriteField "clearValueCount" VkRenderPassBeginInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, clearValueCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pClearValues" VkRenderPassBeginInfo where
@@ -396,37 +286,44 @@
         fieldOffset
           = #{offset VkRenderPassBeginInfo, pClearValues}
 
-instance CanReadField "pClearValues" VkRenderPassBeginInfo where
-        {-# INLINE getField #-}
-        getField = vkPClearValues
+instance {-# OVERLAPPING #-}
+         CanReadField "pClearValues" VkRenderPassBeginInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, pClearValues})
 
         {-# INLINE readField #-}
-        readField = readVkPClearValues
+        readField p
+          = peekByteOff p #{offset VkRenderPassBeginInfo, pClearValues}
 
-instance CanWriteField "pClearValues" VkRenderPassBeginInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pClearValues" VkRenderPassBeginInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPClearValues
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassBeginInfo, pClearValues}
 
 instance Show VkRenderPassBeginInfo where
         showsPrec d x
           = showString "VkRenderPassBeginInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkRenderPass = " .
-                            showsPrec d (vkRenderPass x) .
+                          showString "renderPass = " .
+                            showsPrec d (getField @"renderPass" x) .
                               showString ", " .
-                                showString "vkFramebuffer = " .
-                                  showsPrec d (vkFramebuffer x) .
+                                showString "framebuffer = " .
+                                  showsPrec d (getField @"framebuffer" x) .
                                     showString ", " .
-                                      showString "vkRenderArea = " .
-                                        showsPrec d (vkRenderArea x) .
+                                      showString "renderArea = " .
+                                        showsPrec d (getField @"renderArea" x) .
                                           showString ", " .
-                                            showString "vkClearValueCount = " .
-                                              showsPrec d (vkClearValueCount x) .
+                                            showString "clearValueCount = " .
+                                              showsPrec d (getField @"clearValueCount" x) .
                                                 showString ", " .
-                                                  showString "vkPClearValues = " .
-                                                    showsPrec d (vkPClearValues x) . showChar '}'
+                                                  showString "pClearValues = " .
+                                                    showsPrec d (getField @"pClearValues" x) .
+                                                      showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
        (VkRenderPassCreateInfo(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Struct.VkAttachmentDescription (VkAttachmentDescription)
 import           Graphics.Vulkan.Types.Struct.VkSubpassDependency     (VkSubpassDependency)
 import           Graphics.Vulkan.Types.Struct.VkSubpassDescription    (VkSubpassDescription)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRenderPassCreateInfo {
@@ -32,7 +32,7 @@
 --   >     const VkSubpassDependency* pDependencies;
 --   > } VkRenderPassCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRenderPassCreateInfo.html VkRenderPassCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRenderPassCreateInfo.html VkRenderPassCreateInfo registry at www.khronos.org>
 data VkRenderPassCreateInfo = VkRenderPassCreateInfo## Addr##
                                                       ByteArray##
 
@@ -82,27 +82,6 @@
         type ReturnedOnly VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkRenderPassCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkRenderPassCreateInfo
-         where
-        type VkSTypeMType VkRenderPassCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkRenderPassCreateInfo where
         type FieldType "sType" VkRenderPassCreateInfo = VkStructureType
@@ -117,37 +96,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRenderPassCreateInfo, sType}
 
-instance CanReadField "sType" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, sType}
 
-instance CanWriteField "sType" VkRenderPassCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkRenderPassCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkRenderPassCreateInfo
-         where
-        type VkPNextMType VkRenderPassCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkRenderPassCreateInfo where
@@ -163,37 +127,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRenderPassCreateInfo, pNext}
 
-instance CanReadField "pNext" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkRenderPassCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkRenderPassCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkRenderPassCreateInfo
-         where
-        type VkFlagsMType VkRenderPassCreateInfo = VkRenderPassCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkRenderPassCreateInfo where
@@ -210,37 +159,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkRenderPassCreateInfo, flags}
 
-instance CanReadField "flags" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkAttachmentCount VkRenderPassCreateInfo where
-        type VkAttachmentCountMType VkRenderPassCreateInfo = Word32
-
-        {-# NOINLINE vkAttachmentCount #-}
-        vkAttachmentCount x
+         CanReadField "flags" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, attachmentCount})
-
-        {-# INLINE vkAttachmentCountByteOffset #-}
-        vkAttachmentCountByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, attachmentCount}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, flags})
 
-        {-# INLINE readVkAttachmentCount #-}
-        readVkAttachmentCount p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, attachmentCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, flags}
 
-        {-# INLINE writeVkAttachmentCount #-}
-        writeVkAttachmentCount p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, attachmentCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkRenderPassCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "attachmentCount" VkRenderPassCreateInfo where
@@ -257,40 +191,22 @@
         fieldOffset
           = #{offset VkRenderPassCreateInfo, attachmentCount}
 
-instance CanReadField "attachmentCount" VkRenderPassCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkAttachmentCount
-
-        {-# INLINE readField #-}
-        readField = readVkAttachmentCount
-
-instance CanWriteField "attachmentCount" VkRenderPassCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkAttachmentCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPAttachments VkRenderPassCreateInfo where
-        type VkPAttachmentsMType VkRenderPassCreateInfo =
-             Ptr VkAttachmentDescription
-
-        {-# NOINLINE vkPAttachments #-}
-        vkPAttachments x
+         CanReadField "attachmentCount" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pAttachments})
-
-        {-# INLINE vkPAttachmentsByteOffset #-}
-        vkPAttachmentsByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, pAttachments}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, attachmentCount})
 
-        {-# INLINE readVkPAttachments #-}
-        readVkPAttachments p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pAttachments}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, attachmentCount}
 
-        {-# INLINE writeVkPAttachments #-}
-        writeVkPAttachments p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pAttachments}
+instance {-# OVERLAPPING #-}
+         CanWriteField "attachmentCount" VkRenderPassCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, attachmentCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttachments" VkRenderPassCreateInfo where
@@ -308,37 +224,22 @@
         fieldOffset
           = #{offset VkRenderPassCreateInfo, pAttachments}
 
-instance CanReadField "pAttachments" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkPAttachments
-
-instance CanWriteField "pAttachments" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAttachments
-
 instance {-# OVERLAPPING #-}
-         HasVkSubpassCount VkRenderPassCreateInfo where
-        type VkSubpassCountMType VkRenderPassCreateInfo = Word32
-
-        {-# NOINLINE vkSubpassCount #-}
-        vkSubpassCount x
+         CanReadField "pAttachments" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, subpassCount})
-
-        {-# INLINE vkSubpassCountByteOffset #-}
-        vkSubpassCountByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, subpassCount}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pAttachments})
 
-        {-# INLINE readVkSubpassCount #-}
-        readVkSubpassCount p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, subpassCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, pAttachments}
 
-        {-# INLINE writeVkSubpassCount #-}
-        writeVkSubpassCount p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, subpassCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAttachments" VkRenderPassCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, pAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "subpassCount" VkRenderPassCreateInfo where
@@ -355,38 +256,22 @@
         fieldOffset
           = #{offset VkRenderPassCreateInfo, subpassCount}
 
-instance CanReadField "subpassCount" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSubpassCount
+instance {-# OVERLAPPING #-}
+         CanReadField "subpassCount" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, subpassCount})
 
         {-# INLINE readField #-}
-        readField = readVkSubpassCount
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, subpassCount}
 
-instance CanWriteField "subpassCount" VkRenderPassCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "subpassCount" VkRenderPassCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSubpassCount
-
-instance {-# OVERLAPPING #-} HasVkPSubpasses VkRenderPassCreateInfo
-         where
-        type VkPSubpassesMType VkRenderPassCreateInfo =
-             Ptr VkSubpassDescription
-
-        {-# NOINLINE vkPSubpasses #-}
-        vkPSubpasses x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pSubpasses})
-
-        {-# INLINE vkPSubpassesByteOffset #-}
-        vkPSubpassesByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, pSubpasses}
-
-        {-# INLINE readVkPSubpasses #-}
-        readVkPSubpasses p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pSubpasses}
-
-        {-# INLINE writeVkPSubpasses #-}
-        writeVkPSubpasses p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pSubpasses}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, subpassCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSubpasses" VkRenderPassCreateInfo where
@@ -404,37 +289,22 @@
         fieldOffset
           = #{offset VkRenderPassCreateInfo, pSubpasses}
 
-instance CanReadField "pSubpasses" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPSubpasses
-
-        {-# INLINE readField #-}
-        readField = readVkPSubpasses
-
-instance CanWriteField "pSubpasses" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPSubpasses
-
 instance {-# OVERLAPPING #-}
-         HasVkDependencyCount VkRenderPassCreateInfo where
-        type VkDependencyCountMType VkRenderPassCreateInfo = Word32
-
-        {-# NOINLINE vkDependencyCount #-}
-        vkDependencyCount x
+         CanReadField "pSubpasses" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, dependencyCount})
-
-        {-# INLINE vkDependencyCountByteOffset #-}
-        vkDependencyCountByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, dependencyCount}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pSubpasses})
 
-        {-# INLINE readVkDependencyCount #-}
-        readVkDependencyCount p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, dependencyCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, pSubpasses}
 
-        {-# INLINE writeVkDependencyCount #-}
-        writeVkDependencyCount p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, dependencyCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSubpasses" VkRenderPassCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, pSubpasses}
 
 instance {-# OVERLAPPING #-}
          HasField "dependencyCount" VkRenderPassCreateInfo where
@@ -451,40 +321,22 @@
         fieldOffset
           = #{offset VkRenderPassCreateInfo, dependencyCount}
 
-instance CanReadField "dependencyCount" VkRenderPassCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkDependencyCount
-
-        {-# INLINE readField #-}
-        readField = readVkDependencyCount
-
-instance CanWriteField "dependencyCount" VkRenderPassCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDependencyCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPDependencies VkRenderPassCreateInfo where
-        type VkPDependenciesMType VkRenderPassCreateInfo =
-             Ptr VkSubpassDependency
-
-        {-# NOINLINE vkPDependencies #-}
-        vkPDependencies x
+         CanReadField "dependencyCount" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pDependencies})
-
-        {-# INLINE vkPDependenciesByteOffset #-}
-        vkPDependenciesByteOffset ~_
-          = #{offset VkRenderPassCreateInfo, pDependencies}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, dependencyCount})
 
-        {-# INLINE readVkPDependencies #-}
-        readVkPDependencies p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pDependencies}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, dependencyCount}
 
-        {-# INLINE writeVkPDependencies #-}
-        writeVkPDependencies p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pDependencies}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dependencyCount" VkRenderPassCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, dependencyCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pDependencies" VkRenderPassCreateInfo where
@@ -502,44 +354,53 @@
         fieldOffset
           = #{offset VkRenderPassCreateInfo, pDependencies}
 
-instance CanReadField "pDependencies" VkRenderPassCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPDependencies
+instance {-# OVERLAPPING #-}
+         CanReadField "pDependencies" VkRenderPassCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pDependencies})
 
         {-# INLINE readField #-}
-        readField = readVkPDependencies
+        readField p
+          = peekByteOff p #{offset VkRenderPassCreateInfo, pDependencies}
 
-instance CanWriteField "pDependencies" VkRenderPassCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDependencies" VkRenderPassCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPDependencies
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassCreateInfo, pDependencies}
 
 instance Show VkRenderPassCreateInfo where
         showsPrec d x
           = showString "VkRenderPassCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkAttachmentCount = " .
-                                  showsPrec d (vkAttachmentCount x) .
+                                showString "attachmentCount = " .
+                                  showsPrec d (getField @"attachmentCount" x) .
                                     showString ", " .
-                                      showString "vkPAttachments = " .
-                                        showsPrec d (vkPAttachments x) .
+                                      showString "pAttachments = " .
+                                        showsPrec d (getField @"pAttachments" x) .
                                           showString ", " .
-                                            showString "vkSubpassCount = " .
-                                              showsPrec d (vkSubpassCount x) .
+                                            showString "subpassCount = " .
+                                              showsPrec d (getField @"subpassCount" x) .
                                                 showString ", " .
-                                                  showString "vkPSubpasses = " .
-                                                    showsPrec d (vkPSubpasses x) .
+                                                  showString "pSubpasses = " .
+                                                    showsPrec d (getField @"pSubpasses" x) .
                                                       showString ", " .
-                                                        showString "vkDependencyCount = " .
-                                                          showsPrec d (vkDependencyCount x) .
+                                                        showString "dependencyCount = " .
+                                                          showsPrec d
+                                                            (getField @"dependencyCount" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkPDependencies = " .
-                                                                showsPrec d (vkPDependencies x) .
-                                                                  showChar '}'
+                                                              showString "pDependencies = " .
+                                                                showsPrec d
+                                                                  (getField @"pDependencies" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfo.hsc
@@ -0,0 +1,277 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfo
+       (VkRenderPassInputAttachmentAspectCreateInfo(..)) where
+import           Foreign.Storable                                              (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReference (VkInputAttachmentAspectReference)
+import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo           (VkRenderPassCreateInfo)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html VkRenderPassInputAttachmentAspectCreateInfo registry at www.khronos.org>
+data VkRenderPassInputAttachmentAspectCreateInfo = VkRenderPassInputAttachmentAspectCreateInfo## Addr##
+                                                                                                ByteArray##
+
+instance Eq VkRenderPassInputAttachmentAspectCreateInfo where
+        (VkRenderPassInputAttachmentAspectCreateInfo## a _) ==
+          x@(VkRenderPassInputAttachmentAspectCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkRenderPassInputAttachmentAspectCreateInfo where
+        (VkRenderPassInputAttachmentAspectCreateInfo## a _) `compare`
+          x@(VkRenderPassInputAttachmentAspectCreateInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkRenderPassInputAttachmentAspectCreateInfo
+         where
+        unsafeAddr (VkRenderPassInputAttachmentAspectCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkRenderPassInputAttachmentAspectCreateInfo## _ b)
+          = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkRenderPassInputAttachmentAspectCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfoKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfoKHR
+       (VkRenderPassInputAttachmentAspectCreateInfo(..),
+        VkRenderPassInputAttachmentAspectCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfo
+                                                                                           (VkRenderPassInputAttachmentAspectCreateInfo (..))
+
+-- | Alias for `VkRenderPassInputAttachmentAspectCreateInfo`
+type VkRenderPassInputAttachmentAspectCreateInfoKHR =
+     VkRenderPassInputAttachmentAspectCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassInputAttachmentAspectCreateInfoKHR.hsc
+++ /dev/null
@@ -1,363 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfoKHR
-       (VkRenderPassInputAttachmentAspectCreateInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReferenceKHR
-                                                                                   (VkInputAttachmentAspectReferenceKHR)
-import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
-                                                                                   (VkRenderPassCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkRenderPassInputAttachmentAspectCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                     pNext;
---   >     uint32_t                        aspectReferenceCount;
---   >     const VkInputAttachmentAspectReferenceKHR* pAspectReferences;
---   > } VkRenderPassInputAttachmentAspectCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html VkRenderPassInputAttachmentAspectCreateInfoKHR registry at www.khronos.org>
-data VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfoKHR## Addr##
-                                                                                                      ByteArray##
-
-instance Eq VkRenderPassInputAttachmentAspectCreateInfoKHR where
-        (VkRenderPassInputAttachmentAspectCreateInfoKHR## a _) ==
-          x@(VkRenderPassInputAttachmentAspectCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassInputAttachmentAspectCreateInfoKHR where
-        (VkRenderPassInputAttachmentAspectCreateInfoKHR## a _) `compare`
-          x@(VkRenderPassInputAttachmentAspectCreateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        sizeOf ~_
-          = #{size VkRenderPassInputAttachmentAspectCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkRenderPassInputAttachmentAspectCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        unsafeAddr (VkRenderPassInputAttachmentAspectCreateInfoKHR## a _)
-          = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray
-          (VkRenderPassInputAttachmentAspectCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkRenderPassInputAttachmentAspectCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type StructFields VkRenderPassInputAttachmentAspectCreateInfoKHR =
-             '["sType", "pNext", "aspectReferenceCount", "pAspectReferences"] -- ' closing tick for hsc2hs
-        type CUnionType VkRenderPassInputAttachmentAspectCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassInputAttachmentAspectCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassInputAttachmentAspectCreateInfoKHR =
-             '[VkRenderPassCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkRenderPassInputAttachmentAspectCreateInfoKHR where
-        type VkSTypeMType VkRenderPassInputAttachmentAspectCreateInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type FieldType "sType"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = VkStructureType
-        type FieldOptional "sType"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, sType}
-        type FieldIsArray "sType"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, sType}
-
-instance CanReadField "sType"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkRenderPassInputAttachmentAspectCreateInfoKHR where
-        type VkPNextMType VkRenderPassInputAttachmentAspectCreateInfoKHR =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type FieldType "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pNext}
-        type FieldIsArray "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pNext}
-
-instance CanReadField "pNext"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkAspectReferenceCount
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type VkAspectReferenceCountMType
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = Word32
-
-        {-# NOINLINE vkAspectReferenceCount #-}
-        vkAspectReferenceCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, aspectReferenceCount})
-
-        {-# INLINE vkAspectReferenceCountByteOffset #-}
-        vkAspectReferenceCountByteOffset ~_
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, aspectReferenceCount}
-
-        {-# INLINE readVkAspectReferenceCount #-}
-        readVkAspectReferenceCount p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, aspectReferenceCount}
-
-        {-# INLINE writeVkAspectReferenceCount #-}
-        writeVkAspectReferenceCount p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, aspectReferenceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectReferenceCount"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type FieldType "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = Word32
-        type FieldOptional "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, aspectReferenceCount}
-        type FieldIsArray "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, aspectReferenceCount}
-
-instance CanReadField "aspectReferenceCount"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkAspectReferenceCount
-
-        {-# INLINE readField #-}
-        readField = readVkAspectReferenceCount
-
-instance CanWriteField "aspectReferenceCount"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkAspectReferenceCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPAspectReferences
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type VkPAspectReferencesMType
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = Ptr VkInputAttachmentAspectReferenceKHR
-
-        {-# NOINLINE vkPAspectReferences #-}
-        vkPAspectReferences x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pAspectReferences})
-
-        {-# INLINE vkPAspectReferencesByteOffset #-}
-        vkPAspectReferencesByteOffset ~_
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pAspectReferences}
-
-        {-# INLINE readVkPAspectReferences #-}
-        readVkPAspectReferences p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pAspectReferences}
-
-        {-# INLINE writeVkPAspectReferences #-}
-        writeVkPAspectReferences p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pAspectReferences}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAspectReferences"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        type FieldType "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = Ptr VkInputAttachmentAspectReferenceKHR
-        type FieldOptional "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pAspectReferences}
-        type FieldIsArray "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfoKHR, pAspectReferences}
-
-instance CanReadField "pAspectReferences"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPAspectReferences
-
-        {-# INLINE readField #-}
-        readField = readVkPAspectReferences
-
-instance CanWriteField "pAspectReferences"
-           VkRenderPassInputAttachmentAspectCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAspectReferences
-
-instance Show VkRenderPassInputAttachmentAspectCreateInfoKHR where
-        showsPrec d x
-          = showString "VkRenderPassInputAttachmentAspectCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkAspectReferenceCount = " .
-                            showsPrec d (vkAspectReferenceCount x) .
-                              showString ", " .
-                                showString "vkPAspectReferences = " .
-                                  showsPrec d (vkPAspectReferences x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfo.hsc
@@ -0,0 +1,409 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfo
+       (VkRenderPassMultiviewCreateInfo(..)) where
+import           Foreign.Storable                                    (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo (VkRenderPassCreateInfo)
+import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkRenderPassMultiviewCreateInfo.html VkRenderPassMultiviewCreateInfo registry at www.khronos.org>
+data VkRenderPassMultiviewCreateInfo = VkRenderPassMultiviewCreateInfo## Addr##
+                                                                        ByteArray##
+
+instance Eq VkRenderPassMultiviewCreateInfo where
+        (VkRenderPassMultiviewCreateInfo## a _) ==
+          x@(VkRenderPassMultiviewCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkRenderPassMultiviewCreateInfo where
+        (VkRenderPassMultiviewCreateInfo## a _) `compare`
+          x@(VkRenderPassMultiviewCreateInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkRenderPassMultiviewCreateInfo where
+        unsafeAddr (VkRenderPassMultiviewCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkRenderPassMultiviewCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkRenderPassMultiviewCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHR
+       (VkRenderPassMultiviewCreateInfo(..),
+        VkRenderPassMultiviewCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfo (VkRenderPassMultiviewCreateInfo (..))
+
+-- | Alias for `VkRenderPassMultiviewCreateInfo`
+type VkRenderPassMultiviewCreateInfoKHR =
+     VkRenderPassMultiviewCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfoKHX.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfoKHX.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassMultiviewCreateInfoKHX.hsc
+++ /dev/null
@@ -1,569 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHX
-       (VkRenderPassMultiviewCreateInfoKHX(..)) where
-import           Foreign.Storable                                    (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType          (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo (VkRenderPassCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
-
--- | > typedef struct VkRenderPassMultiviewCreateInfoKHX {
---   >     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;
---   > } VkRenderPassMultiviewCreateInfoKHX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRenderPassMultiviewCreateInfoKHX.html VkRenderPassMultiviewCreateInfoKHX registry at www.khronos.org>
-data VkRenderPassMultiviewCreateInfoKHX = VkRenderPassMultiviewCreateInfoKHX## Addr##
-                                                                              ByteArray##
-
-instance Eq VkRenderPassMultiviewCreateInfoKHX where
-        (VkRenderPassMultiviewCreateInfoKHX## a _) ==
-          x@(VkRenderPassMultiviewCreateInfoKHX## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassMultiviewCreateInfoKHX where
-        (VkRenderPassMultiviewCreateInfoKHX## a _) `compare`
-          x@(VkRenderPassMultiviewCreateInfoKHX## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassMultiviewCreateInfoKHX where
-        sizeOf ~_ = #{size VkRenderPassMultiviewCreateInfoKHX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkRenderPassMultiviewCreateInfoKHX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkRenderPassMultiviewCreateInfoKHX where
-        unsafeAddr (VkRenderPassMultiviewCreateInfoKHX## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkRenderPassMultiviewCreateInfoKHX## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkRenderPassMultiviewCreateInfoKHX##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkRenderPassMultiviewCreateInfoKHX where
-        type StructFields VkRenderPassMultiviewCreateInfoKHX =
-             '["sType", "pNext", "subpassCount", "pViewMasks", -- ' closing tick for hsc2hs
-               "dependencyCount", "pViewOffsets", "correlationMaskCount",
-               "pCorrelationMasks"]
-        type CUnionType VkRenderPassMultiviewCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassMultiviewCreateInfoKHX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassMultiviewCreateInfoKHX =
-             '[VkRenderPassCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkRenderPassMultiviewCreateInfoKHX where
-        type VkSTypeMType VkRenderPassMultiviewCreateInfoKHX =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkRenderPassMultiviewCreateInfoKHX where
-        type FieldType "sType" VkRenderPassMultiviewCreateInfoKHX =
-             VkStructureType
-        type FieldOptional "sType" VkRenderPassMultiviewCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkRenderPassMultiviewCreateInfoKHX =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, sType}
-        type FieldIsArray "sType" VkRenderPassMultiviewCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, sType}
-
-instance CanReadField "sType" VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkRenderPassMultiviewCreateInfoKHX where
-        type VkPNextMType VkRenderPassMultiviewCreateInfoKHX = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkRenderPassMultiviewCreateInfoKHX where
-        type FieldType "pNext" VkRenderPassMultiviewCreateInfoKHX =
-             Ptr Void
-        type FieldOptional "pNext" VkRenderPassMultiviewCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkRenderPassMultiviewCreateInfoKHX =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, pNext}
-        type FieldIsArray "pNext" VkRenderPassMultiviewCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pNext}
-
-instance CanReadField "pNext" VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkSubpassCount VkRenderPassMultiviewCreateInfoKHX where
-        type VkSubpassCountMType VkRenderPassMultiviewCreateInfoKHX =
-             Word32
-
-        {-# NOINLINE vkSubpassCount #-}
-        vkSubpassCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, subpassCount})
-
-        {-# INLINE vkSubpassCountByteOffset #-}
-        vkSubpassCountByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, subpassCount}
-
-        {-# INLINE readVkSubpassCount #-}
-        readVkSubpassCount p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, subpassCount}
-
-        {-# INLINE writeVkSubpassCount #-}
-        writeVkSubpassCount p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "subpassCount" VkRenderPassMultiviewCreateInfoKHX where
-        type FieldType "subpassCount" VkRenderPassMultiviewCreateInfoKHX =
-             Word32
-        type FieldOptional "subpassCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "subpassCount" VkRenderPassMultiviewCreateInfoKHX
-             =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, subpassCount}
-        type FieldIsArray "subpassCount" VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, subpassCount}
-
-instance CanReadField "subpassCount"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkSubpassCount
-
-        {-# INLINE readField #-}
-        readField = readVkSubpassCount
-
-instance CanWriteField "subpassCount"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSubpassCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewMasks VkRenderPassMultiviewCreateInfoKHX where
-        type VkPViewMasksMType VkRenderPassMultiviewCreateInfoKHX =
-             Ptr Word32
-
-        {-# NOINLINE vkPViewMasks #-}
-        vkPViewMasks x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, pViewMasks})
-
-        {-# INLINE vkPViewMasksByteOffset #-}
-        vkPViewMasksByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pViewMasks}
-
-        {-# INLINE readVkPViewMasks #-}
-        readVkPViewMasks p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pViewMasks}
-
-        {-# INLINE writeVkPViewMasks #-}
-        writeVkPViewMasks p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pViewMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewMasks" VkRenderPassMultiviewCreateInfoKHX where
-        type FieldType "pViewMasks" VkRenderPassMultiviewCreateInfoKHX =
-             Ptr Word32
-        type FieldOptional "pViewMasks" VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pViewMasks" VkRenderPassMultiviewCreateInfoKHX =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, pViewMasks}
-        type FieldIsArray "pViewMasks" VkRenderPassMultiviewCreateInfoKHX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pViewMasks}
-
-instance CanReadField "pViewMasks"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPViewMasks
-
-        {-# INLINE readField #-}
-        readField = readVkPViewMasks
-
-instance CanWriteField "pViewMasks"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPViewMasks
-
-instance {-# OVERLAPPING #-}
-         HasVkDependencyCount VkRenderPassMultiviewCreateInfoKHX where
-        type VkDependencyCountMType VkRenderPassMultiviewCreateInfoKHX =
-             Word32
-
-        {-# NOINLINE vkDependencyCount #-}
-        vkDependencyCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, dependencyCount})
-
-        {-# INLINE vkDependencyCountByteOffset #-}
-        vkDependencyCountByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, dependencyCount}
-
-        {-# INLINE readVkDependencyCount #-}
-        readVkDependencyCount p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, dependencyCount}
-
-        {-# INLINE writeVkDependencyCount #-}
-        writeVkDependencyCount p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "dependencyCount" VkRenderPassMultiviewCreateInfoKHX where
-        type FieldType "dependencyCount" VkRenderPassMultiviewCreateInfoKHX
-             = Word32
-        type FieldOptional "dependencyCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dependencyCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, dependencyCount}
-        type FieldIsArray "dependencyCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, dependencyCount}
-
-instance CanReadField "dependencyCount"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkDependencyCount
-
-        {-# INLINE readField #-}
-        readField = readVkDependencyCount
-
-instance CanWriteField "dependencyCount"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDependencyCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPViewOffsets VkRenderPassMultiviewCreateInfoKHX where
-        type VkPViewOffsetsMType VkRenderPassMultiviewCreateInfoKHX =
-             Ptr Int32
-
-        {-# NOINLINE vkPViewOffsets #-}
-        vkPViewOffsets x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, pViewOffsets})
-
-        {-# INLINE vkPViewOffsetsByteOffset #-}
-        vkPViewOffsetsByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pViewOffsets}
-
-        {-# INLINE readVkPViewOffsets #-}
-        readVkPViewOffsets p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pViewOffsets}
-
-        {-# INLINE writeVkPViewOffsets #-}
-        writeVkPViewOffsets p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pViewOffsets}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewOffsets" VkRenderPassMultiviewCreateInfoKHX where
-        type FieldType "pViewOffsets" VkRenderPassMultiviewCreateInfoKHX =
-             Ptr Int32
-        type FieldOptional "pViewOffsets"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pViewOffsets" VkRenderPassMultiviewCreateInfoKHX
-             =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, pViewOffsets}
-        type FieldIsArray "pViewOffsets" VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pViewOffsets}
-
-instance CanReadField "pViewOffsets"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPViewOffsets
-
-        {-# INLINE readField #-}
-        readField = readVkPViewOffsets
-
-instance CanWriteField "pViewOffsets"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPViewOffsets
-
-instance {-# OVERLAPPING #-}
-         HasVkCorrelationMaskCount VkRenderPassMultiviewCreateInfoKHX where
-        type VkCorrelationMaskCountMType VkRenderPassMultiviewCreateInfoKHX
-             = Word32
-
-        {-# NOINLINE vkCorrelationMaskCount #-}
-        vkCorrelationMaskCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, correlationMaskCount})
-
-        {-# INLINE vkCorrelationMaskCountByteOffset #-}
-        vkCorrelationMaskCountByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, correlationMaskCount}
-
-        {-# INLINE readVkCorrelationMaskCount #-}
-        readVkCorrelationMaskCount p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, correlationMaskCount}
-
-        {-# INLINE writeVkCorrelationMaskCount #-}
-        writeVkCorrelationMaskCount p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, correlationMaskCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "correlationMaskCount" VkRenderPassMultiviewCreateInfoKHX
-         where
-        type FieldType "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             = Word32
-        type FieldOptional "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, correlationMaskCount}
-        type FieldIsArray "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, correlationMaskCount}
-
-instance CanReadField "correlationMaskCount"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkCorrelationMaskCount
-
-        {-# INLINE readField #-}
-        readField = readVkCorrelationMaskCount
-
-instance CanWriteField "correlationMaskCount"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCorrelationMaskCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPCorrelationMasks VkRenderPassMultiviewCreateInfoKHX where
-        type VkPCorrelationMasksMType VkRenderPassMultiviewCreateInfoKHX =
-             Ptr Word32
-
-        {-# NOINLINE vkPCorrelationMasks #-}
-        vkPCorrelationMasks x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfoKHX, pCorrelationMasks})
-
-        {-# INLINE vkPCorrelationMasksByteOffset #-}
-        vkPCorrelationMasksByteOffset ~_
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pCorrelationMasks}
-
-        {-# INLINE readVkPCorrelationMasks #-}
-        readVkPCorrelationMasks p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pCorrelationMasks}
-
-        {-# INLINE writeVkPCorrelationMasks #-}
-        writeVkPCorrelationMasks p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfoKHX, pCorrelationMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCorrelationMasks" VkRenderPassMultiviewCreateInfoKHX
-         where
-        type FieldType "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfoKHX
-             = Ptr Word32
-        type FieldOptional "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfoKHX
-             =
-             #{offset VkRenderPassMultiviewCreateInfoKHX, pCorrelationMasks}
-        type FieldIsArray "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfoKHX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfoKHX, pCorrelationMasks}
-
-instance CanReadField "pCorrelationMasks"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE getField #-}
-        getField = vkPCorrelationMasks
-
-        {-# INLINE readField #-}
-        readField = readVkPCorrelationMasks
-
-instance CanWriteField "pCorrelationMasks"
-           VkRenderPassMultiviewCreateInfoKHX
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPCorrelationMasks
-
-instance Show VkRenderPassMultiviewCreateInfoKHX where
-        showsPrec d x
-          = showString "VkRenderPassMultiviewCreateInfoKHX {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkSubpassCount = " .
-                            showsPrec d (vkSubpassCount x) .
-                              showString ", " .
-                                showString "vkPViewMasks = " .
-                                  showsPrec d (vkPViewMasks x) .
-                                    showString ", " .
-                                      showString "vkDependencyCount = " .
-                                        showsPrec d (vkDependencyCount x) .
-                                          showString ", " .
-                                            showString "vkPViewOffsets = " .
-                                              showsPrec d (vkPViewOffsets x) .
-                                                showString ", " .
-                                                  showString "vkCorrelationMaskCount = " .
-                                                    showsPrec d (vkCorrelationMaskCount x) .
-                                                      showString ", " .
-                                                        showString "vkPCorrelationMasks = " .
-                                                          showsPrec d (vkPCorrelationMasks x) .
-                                                            showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassSampleLocationsBeginInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassSampleLocationsBeginInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassSampleLocationsBeginInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkRenderPassSampleLocationsBeginInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkRenderPassSampleLocationsBeginInfoEXT
        (VkRenderPassSampleLocationsBeginInfoEXT(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Struct.VkAttachmentSampleLocationsEXT (VkAttachmentSampleLocationsEXT)
 import           Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo          (VkRenderPassBeginInfo)
 import           Graphics.Vulkan.Types.Struct.VkSubpassSampleLocationsEXT    (VkSubpassSampleLocationsEXT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
@@ -28,7 +28,7 @@
 --   >     const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
 --   > } VkRenderPassSampleLocationsBeginInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html VkRenderPassSampleLocationsBeginInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html VkRenderPassSampleLocationsBeginInfoEXT registry at www.khronos.org>
 data VkRenderPassSampleLocationsBeginInfoEXT = VkRenderPassSampleLocationsBeginInfoEXT## Addr##
                                                                                         ByteArray##
 
@@ -89,28 +89,6 @@
              '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkRenderPassSampleLocationsBeginInfoEXT where
-        type VkSTypeMType VkRenderPassSampleLocationsBeginInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkRenderPassSampleLocationsBeginInfoEXT where
         type FieldType "sType" VkRenderPassSampleLocationsBeginInfoEXT =
              VkStructureType
@@ -128,42 +106,22 @@
         fieldOffset
           = #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
 
-instance CanReadField "sType"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkRenderPassSampleLocationsBeginInfoEXT where
-        type VkPNextMType VkRenderPassSampleLocationsBeginInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkRenderPassSampleLocationsBeginInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkRenderPassSampleLocationsBeginInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkRenderPassSampleLocationsBeginInfoEXT where
@@ -183,45 +141,22 @@
         fieldOffset
           = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
 
-instance CanReadField "pNext"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkAttachmentInitialSampleLocationsCount
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        type VkAttachmentInitialSampleLocationsCountMType
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Word32
-
-        {-# NOINLINE vkAttachmentInitialSampleLocationsCount #-}
-        vkAttachmentInitialSampleLocationsCount x
+         CanReadField "pNext" VkRenderPassSampleLocationsBeginInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount})
-
-        {-# INLINE vkAttachmentInitialSampleLocationsCountByteOffset #-}
-        vkAttachmentInitialSampleLocationsCountByteOffset ~_
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext})
 
-        {-# INLINE readVkAttachmentInitialSampleLocationsCount #-}
-        readVkAttachmentInitialSampleLocationsCount p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
 
-        {-# INLINE writeVkAttachmentInitialSampleLocationsCount #-}
-        writeVkAttachmentInitialSampleLocationsCount p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkRenderPassSampleLocationsBeginInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "attachmentInitialSampleLocationsCount"
@@ -248,45 +183,26 @@
         fieldOffset
           = #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
 
-instance CanReadField "attachmentInitialSampleLocationsCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "attachmentInitialSampleLocationsCount"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkAttachmentInitialSampleLocationsCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount})
 
         {-# INLINE readField #-}
-        readField = readVkAttachmentInitialSampleLocationsCount
-
-instance CanWriteField "attachmentInitialSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkAttachmentInitialSampleLocationsCount
+        readField p
+          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkPAttachmentInitialSampleLocations
+         CanWriteField "attachmentInitialSampleLocationsCount"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        type VkPAttachmentInitialSampleLocationsMType
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Ptr VkAttachmentSampleLocationsEXT
-
-        {-# NOINLINE vkPAttachmentInitialSampleLocations #-}
-        vkPAttachmentInitialSampleLocations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations})
-
-        {-# INLINE vkPAttachmentInitialSampleLocationsByteOffset #-}
-        vkPAttachmentInitialSampleLocationsByteOffset ~_
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
-
-        {-# INLINE readVkPAttachmentInitialSampleLocations #-}
-        readVkPAttachmentInitialSampleLocations p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
-
-        {-# INLINE writeVkPAttachmentInitialSampleLocations #-}
-        writeVkPAttachmentInitialSampleLocations p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pAttachmentInitialSampleLocations"
@@ -313,45 +229,26 @@
         fieldOffset
           = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
 
-instance CanReadField "pAttachmentInitialSampleLocations"
+instance {-# OVERLAPPING #-}
+         CanReadField "pAttachmentInitialSampleLocations"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPAttachmentInitialSampleLocations
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations})
 
         {-# INLINE readField #-}
-        readField = readVkPAttachmentInitialSampleLocations
-
-instance CanWriteField "pAttachmentInitialSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAttachmentInitialSampleLocations
+        readField p
+          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
 
 instance {-# OVERLAPPING #-}
-         HasVkPostSubpassSampleLocationsCount
+         CanWriteField "pAttachmentInitialSampleLocations"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        type VkPostSubpassSampleLocationsCountMType
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Word32
-
-        {-# NOINLINE vkPostSubpassSampleLocationsCount #-}
-        vkPostSubpassSampleLocationsCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount})
-
-        {-# INLINE vkPostSubpassSampleLocationsCountByteOffset #-}
-        vkPostSubpassSampleLocationsCountByteOffset ~_
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
-
-        {-# INLINE readVkPostSubpassSampleLocationsCount #-}
-        readVkPostSubpassSampleLocationsCount p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
-
-        {-# INLINE writeVkPostSubpassSampleLocationsCount #-}
-        writeVkPostSubpassSampleLocationsCount p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
 
 instance {-# OVERLAPPING #-}
          HasField "postSubpassSampleLocationsCount"
@@ -378,45 +275,26 @@
         fieldOffset
           = #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
 
-instance CanReadField "postSubpassSampleLocationsCount"
+instance {-# OVERLAPPING #-}
+         CanReadField "postSubpassSampleLocationsCount"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPostSubpassSampleLocationsCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount})
 
         {-# INLINE readField #-}
-        readField = readVkPostSubpassSampleLocationsCount
-
-instance CanWriteField "postSubpassSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPostSubpassSampleLocationsCount
+        readField p
+          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
 
 instance {-# OVERLAPPING #-}
-         HasVkPPostSubpassSampleLocations
+         CanWriteField "postSubpassSampleLocationsCount"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        type VkPPostSubpassSampleLocationsMType
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Ptr VkSubpassSampleLocationsEXT
-
-        {-# NOINLINE vkPPostSubpassSampleLocations #-}
-        vkPPostSubpassSampleLocations x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations})
-
-        {-# INLINE vkPPostSubpassSampleLocationsByteOffset #-}
-        vkPPostSubpassSampleLocationsByteOffset ~_
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
-
-        {-# INLINE readVkPPostSubpassSampleLocations #-}
-        readVkPPostSubpassSampleLocations p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
-
-        {-# INLINE writeVkPPostSubpassSampleLocations #-}
-        writeVkPPostSubpassSampleLocations p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pPostSubpassSampleLocations"
@@ -443,39 +321,47 @@
         fieldOffset
           = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
 
-instance CanReadField "pPostSubpassSampleLocations"
+instance {-# OVERLAPPING #-}
+         CanReadField "pPostSubpassSampleLocations"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPPostSubpassSampleLocations
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations})
 
         {-# INLINE readField #-}
-        readField = readVkPPostSubpassSampleLocations
+        readField p
+          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
 
-instance CanWriteField "pPostSubpassSampleLocations"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pPostSubpassSampleLocations"
            VkRenderPassSampleLocationsBeginInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPPostSubpassSampleLocations
+        writeField p
+          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
 
 instance Show VkRenderPassSampleLocationsBeginInfoEXT where
         showsPrec d x
           = showString "VkRenderPassSampleLocationsBeginInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkAttachmentInitialSampleLocationsCount = " .
-                            showsPrec d (vkAttachmentInitialSampleLocationsCount x) .
+                          showString "attachmentInitialSampleLocationsCount = " .
+                            showsPrec d (getField @"attachmentInitialSampleLocationsCount" x) .
                               showString ", " .
-                                showString "vkPAttachmentInitialSampleLocations = " .
-                                  showsPrec d (vkPAttachmentInitialSampleLocations x) .
+                                showString "pAttachmentInitialSampleLocations = " .
+                                  showsPrec d (getField @"pAttachmentInitialSampleLocations" x) .
                                     showString ", " .
-                                      showString "vkPostSubpassSampleLocationsCount = " .
-                                        showsPrec d (vkPostSubpassSampleLocationsCount x) .
+                                      showString "postSubpassSampleLocationsCount = " .
+                                        showsPrec d (getField @"postSubpassSampleLocationsCount" x)
+                                          .
                                           showString ", " .
-                                            showString "vkPPostSubpassSampleLocations = " .
-                                              showsPrec d (vkPPostSubpassSampleLocations x) .
-                                                showChar '}'
+                                            showString "pPostSubpassSampleLocations = " .
+                                              showsPrec d
+                                                (getField @"pPostSubpassSampleLocations" x)
+                                                . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationEXT.hsc
@@ -5,22 +5,22 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSampleLocationEXT
        (VkSampleLocationEXT(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSampleLocationEXT {
 --   >     float                            x;
 --   >     float                            y;
 --   > } VkSampleLocationEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSampleLocationEXT.html VkSampleLocationEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSampleLocationEXT.html VkSampleLocationEXT registry at www.khronos.org>
 data VkSampleLocationEXT = VkSampleLocationEXT## Addr## ByteArray##
 
 instance Eq VkSampleLocationEXT where
@@ -67,25 +67,6 @@
         type ReturnedOnly VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSampleLocationEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkSampleLocationEXT where
-        type VkXMType VkSampleLocationEXT = #{type float}
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationEXT, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_ = #{offset VkSampleLocationEXT, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p
-          = peekByteOff p #{offset VkSampleLocationEXT, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p
-          = pokeByteOff p #{offset VkSampleLocationEXT, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkSampleLocationEXT where
         type FieldType "x" VkSampleLocationEXT = #{type float}
         type FieldOptional "x" VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
@@ -99,35 +80,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSampleLocationEXT, x}
 
-instance CanReadField "x" VkSampleLocationEXT where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-} CanReadField "x" VkSampleLocationEXT
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationEXT, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p
+          = peekByteOff p #{offset VkSampleLocationEXT, x}
 
-instance CanWriteField "x" VkSampleLocationEXT where
+instance {-# OVERLAPPING #-} CanWriteField "x" VkSampleLocationEXT
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkSampleLocationEXT where
-        type VkYMType VkSampleLocationEXT = #{type float}
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationEXT, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_ = #{offset VkSampleLocationEXT, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p
-          = peekByteOff p #{offset VkSampleLocationEXT, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p
-          = pokeByteOff p #{offset VkSampleLocationEXT, y}
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationEXT, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkSampleLocationEXT where
         type FieldType "y" VkSampleLocationEXT = #{type float}
@@ -142,21 +110,27 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSampleLocationEXT, y}
 
-instance CanReadField "y" VkSampleLocationEXT where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-} CanReadField "y" VkSampleLocationEXT
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationEXT, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p
+          = peekByteOff p #{offset VkSampleLocationEXT, y}
 
-instance CanWriteField "y" VkSampleLocationEXT where
+instance {-# OVERLAPPING #-} CanWriteField "y" VkSampleLocationEXT
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkY
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationEXT, y}
 
 instance Show VkSampleLocationEXT where
         showsPrec d x
           = showString "VkSampleLocationEXT {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " . showsPrec d (vkY x) . showChar '}'
+                    showString "y = " . showsPrec d (getField @"y" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationsInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationsInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationsInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSampleLocationsInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSampleLocationsInfoEXT
        (VkSampleLocationsInfoEXT(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Struct.VkExtent2D           (VkExtent2D)
 import           Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier (VkImageMemoryBarrier)
 import           Graphics.Vulkan.Types.Struct.VkSampleLocationEXT  (VkSampleLocationEXT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSampleLocationsInfoEXT {
@@ -29,7 +29,7 @@
 --   >     const VkSampleLocationEXT* pSampleLocations;
 --   > } VkSampleLocationsInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSampleLocationsInfoEXT.html VkSampleLocationsInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSampleLocationsInfoEXT.html VkSampleLocationsInfoEXT registry at www.khronos.org>
 data VkSampleLocationsInfoEXT = VkSampleLocationsInfoEXT## Addr##
                                                           ByteArray##
 
@@ -82,27 +82,6 @@
         type StructExtends VkSampleLocationsInfoEXT =
              '[VkImageMemoryBarrier] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSampleLocationsInfoEXT
-         where
-        type VkSTypeMType VkSampleLocationsInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSampleLocationsInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkSampleLocationsInfoEXT where
         type FieldType "sType" VkSampleLocationsInfoEXT = VkStructureType
@@ -117,37 +96,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSampleLocationsInfoEXT, sType}
 
-instance CanReadField "sType" VkSampleLocationsInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSampleLocationsInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sType}
 
-instance CanWriteField "sType" VkSampleLocationsInfoEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSampleLocationsInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSampleLocationsInfoEXT
-         where
-        type VkPNextMType VkSampleLocationsInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSampleLocationsInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSampleLocationsInfoEXT where
@@ -163,38 +127,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSampleLocationsInfoEXT, pNext}
 
-instance CanReadField "pNext" VkSampleLocationsInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkSampleLocationsInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationsPerPixel VkSampleLocationsInfoEXT where
-        type VkSampleLocationsPerPixelMType VkSampleLocationsInfoEXT =
-             VkSampleCountFlagBits
-
-        {-# NOINLINE vkSampleLocationsPerPixel #-}
-        vkSampleLocationsPerPixel x
+         CanReadField "pNext" VkSampleLocationsInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel})
-
-        {-# INLINE vkSampleLocationsPerPixelByteOffset #-}
-        vkSampleLocationsPerPixelByteOffset ~_
-          = #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, pNext})
 
-        {-# INLINE readVkSampleLocationsPerPixel #-}
-        readVkSampleLocationsPerPixel p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSampleLocationsInfoEXT, pNext}
 
-        {-# INLINE writeVkSampleLocationsPerPixel #-}
-        writeVkSampleLocationsPerPixel p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSampleLocationsInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationsPerPixel" VkSampleLocationsInfoEXT where
@@ -217,42 +165,24 @@
         fieldOffset
           = #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
 
-instance CanReadField "sampleLocationsPerPixel"
-           VkSampleLocationsInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationsPerPixel" VkSampleLocationsInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationsPerPixel
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationsPerPixel
+        readField p
+          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
 
-instance CanWriteField "sampleLocationsPerPixel"
-           VkSampleLocationsInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleLocationsPerPixel" VkSampleLocationsInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationsPerPixel
-
-instance {-# OVERLAPPING #-}
-         HasVkSampleLocationGridSize VkSampleLocationsInfoEXT where
-        type VkSampleLocationGridSizeMType VkSampleLocationsInfoEXT =
-             VkExtent2D
-
-        {-# NOINLINE vkSampleLocationGridSize #-}
-        vkSampleLocationGridSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize})
-
-        {-# INLINE vkSampleLocationGridSizeByteOffset #-}
-        vkSampleLocationGridSizeByteOffset ~_
-          = #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
-
-        {-# INLINE readVkSampleLocationGridSize #-}
-        readVkSampleLocationGridSize p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
-
-        {-# INLINE writeVkSampleLocationGridSize #-}
-        writeVkSampleLocationGridSize p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationGridSize" VkSampleLocationsInfoEXT where
@@ -274,41 +204,24 @@
         fieldOffset
           = #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
 
-instance CanReadField "sampleLocationGridSize"
-           VkSampleLocationsInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationGridSize" VkSampleLocationsInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationGridSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationGridSize
+        readField p
+          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
 
-instance CanWriteField "sampleLocationGridSize"
-           VkSampleLocationsInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleLocationGridSize" VkSampleLocationsInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationGridSize
-
-instance {-# OVERLAPPING #-}
-         HasVkSampleLocationsCount VkSampleLocationsInfoEXT where
-        type VkSampleLocationsCountMType VkSampleLocationsInfoEXT = Word32
-
-        {-# NOINLINE vkSampleLocationsCount #-}
-        vkSampleLocationsCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationsCount})
-
-        {-# INLINE vkSampleLocationsCountByteOffset #-}
-        vkSampleLocationsCountByteOffset ~_
-          = #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
-
-        {-# INLINE readVkSampleLocationsCount #-}
-        readVkSampleLocationsCount p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
-
-        {-# INLINE writeVkSampleLocationsCount #-}
-        writeVkSampleLocationsCount p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationsCount" VkSampleLocationsInfoEXT where
@@ -328,42 +241,22 @@
         fieldOffset
           = #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
 
-instance CanReadField "sampleLocationsCount"
-           VkSampleLocationsInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationsCount
-
-        {-# INLINE readField #-}
-        readField = readVkSampleLocationsCount
-
-instance CanWriteField "sampleLocationsCount"
-           VkSampleLocationsInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationsCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPSampleLocations VkSampleLocationsInfoEXT where
-        type VkPSampleLocationsMType VkSampleLocationsInfoEXT =
-             Ptr VkSampleLocationEXT
-
-        {-# NOINLINE vkPSampleLocations #-}
-        vkPSampleLocations x
+         CanReadField "sampleLocationsCount" VkSampleLocationsInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, pSampleLocations})
-
-        {-# INLINE vkPSampleLocationsByteOffset #-}
-        vkPSampleLocationsByteOffset ~_
-          = #{offset VkSampleLocationsInfoEXT, pSampleLocations}
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationsCount})
 
-        {-# INLINE readVkPSampleLocations #-}
-        readVkPSampleLocations p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, pSampleLocations}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
 
-        {-# INLINE writeVkPSampleLocations #-}
-        writeVkPSampleLocations p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, pSampleLocations}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleLocationsCount" VkSampleLocationsInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSampleLocations" VkSampleLocationsInfoEXT where
@@ -383,36 +276,41 @@
         fieldOffset
           = #{offset VkSampleLocationsInfoEXT, pSampleLocations}
 
-instance CanReadField "pSampleLocations" VkSampleLocationsInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPSampleLocations
+instance {-# OVERLAPPING #-}
+         CanReadField "pSampleLocations" VkSampleLocationsInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, pSampleLocations})
 
         {-# INLINE readField #-}
-        readField = readVkPSampleLocations
+        readField p
+          = peekByteOff p #{offset VkSampleLocationsInfoEXT, pSampleLocations}
 
-instance CanWriteField "pSampleLocations" VkSampleLocationsInfoEXT
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSampleLocations" VkSampleLocationsInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPSampleLocations
+        writeField p
+          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, pSampleLocations}
 
 instance Show VkSampleLocationsInfoEXT where
         showsPrec d x
           = showString "VkSampleLocationsInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSampleLocationsPerPixel = " .
-                            showsPrec d (vkSampleLocationsPerPixel x) .
+                          showString "sampleLocationsPerPixel = " .
+                            showsPrec d (getField @"sampleLocationsPerPixel" x) .
                               showString ", " .
-                                showString "vkSampleLocationGridSize = " .
-                                  showsPrec d (vkSampleLocationGridSize x) .
+                                showString "sampleLocationGridSize = " .
+                                  showsPrec d (getField @"sampleLocationGridSize" x) .
                                     showString ", " .
-                                      showString "vkSampleLocationsCount = " .
-                                        showsPrec d (vkSampleLocationsCount x) .
+                                      showString "sampleLocationsCount = " .
+                                        showsPrec d (getField @"sampleLocationsCount" x) .
                                           showString ", " .
-                                            showString "vkPSampleLocations = " .
-                                              showsPrec d (vkPSampleLocations x) . showChar '}'
+                                            showString "pSampleLocations = " .
+                                              showsPrec d (getField @"pSampleLocations" x) .
+                                                showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
        (VkSamplerCreateInfo(..)) where
@@ -20,7 +21,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSamplerAddressMode (VkSamplerAddressMode)
 import           Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode  (VkSamplerMipmapMode)
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSamplerCreateInfo {
@@ -44,7 +44,7 @@
 --   >     VkBool32               unnormalizedCoordinates;
 --   > } VkSamplerCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerCreateInfo.html VkSamplerCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerCreateInfo.html VkSamplerCreateInfo registry at www.khronos.org>
 data VkSamplerCreateInfo = VkSamplerCreateInfo## Addr## ByteArray##
 
 instance Eq VkSamplerCreateInfo where
@@ -96,26 +96,6 @@
         type ReturnedOnly VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSamplerCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSamplerCreateInfo where
-        type VkSTypeMType VkSamplerCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSamplerCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSamplerCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkSamplerCreateInfo
          where
         type FieldType "sType" VkSamplerCreateInfo = VkStructureType
@@ -130,36 +110,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, sType}
 
-instance CanReadField "sType" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, sType}
 
-instance CanWriteField "sType" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSamplerCreateInfo where
-        type VkPNextMType VkSamplerCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSamplerCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSamplerCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkSamplerCreateInfo
          where
@@ -175,36 +141,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, pNext}
 
-instance CanReadField "pNext" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkSamplerCreateInfo where
-        type VkFlagsMType VkSamplerCreateInfo = VkSamplerCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSamplerCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSamplerCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkSamplerCreateInfo
          where
@@ -220,37 +172,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, flags}
 
-instance CanReadField "flags" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, flags}
 
-instance CanWriteField "flags" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkMagFilter VkSamplerCreateInfo
-         where
-        type VkMagFilterMType VkSamplerCreateInfo = VkFilter
-
-        {-# NOINLINE vkMagFilter #-}
-        vkMagFilter x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, magFilter})
-
-        {-# INLINE vkMagFilterByteOffset #-}
-        vkMagFilterByteOffset ~_
-          = #{offset VkSamplerCreateInfo, magFilter}
-
-        {-# INLINE readVkMagFilter #-}
-        readVkMagFilter p
-          = peekByteOff p #{offset VkSamplerCreateInfo, magFilter}
-
-        {-# INLINE writeVkMagFilter #-}
-        writeVkMagFilter p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, magFilter}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "magFilter" VkSamplerCreateInfo where
@@ -266,37 +203,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, magFilter}
 
-instance CanReadField "magFilter" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMagFilter
+instance {-# OVERLAPPING #-}
+         CanReadField "magFilter" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, magFilter})
 
         {-# INLINE readField #-}
-        readField = readVkMagFilter
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, magFilter}
 
-instance CanWriteField "magFilter" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "magFilter" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMagFilter
-
-instance {-# OVERLAPPING #-} HasVkMinFilter VkSamplerCreateInfo
-         where
-        type VkMinFilterMType VkSamplerCreateInfo = VkFilter
-
-        {-# NOINLINE vkMinFilter #-}
-        vkMinFilter x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, minFilter})
-
-        {-# INLINE vkMinFilterByteOffset #-}
-        vkMinFilterByteOffset ~_
-          = #{offset VkSamplerCreateInfo, minFilter}
-
-        {-# INLINE readVkMinFilter #-}
-        readVkMinFilter p
-          = peekByteOff p #{offset VkSamplerCreateInfo, minFilter}
-
-        {-# INLINE writeVkMinFilter #-}
-        writeVkMinFilter p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, minFilter}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, magFilter}
 
 instance {-# OVERLAPPING #-}
          HasField "minFilter" VkSamplerCreateInfo where
@@ -312,37 +234,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, minFilter}
 
-instance CanReadField "minFilter" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMinFilter
+instance {-# OVERLAPPING #-}
+         CanReadField "minFilter" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, minFilter})
 
         {-# INLINE readField #-}
-        readField = readVkMinFilter
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, minFilter}
 
-instance CanWriteField "minFilter" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "minFilter" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMinFilter
-
-instance {-# OVERLAPPING #-} HasVkMipmapMode VkSamplerCreateInfo
-         where
-        type VkMipmapModeMType VkSamplerCreateInfo = VkSamplerMipmapMode
-
-        {-# NOINLINE vkMipmapMode #-}
-        vkMipmapMode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, mipmapMode})
-
-        {-# INLINE vkMipmapModeByteOffset #-}
-        vkMipmapModeByteOffset ~_
-          = #{offset VkSamplerCreateInfo, mipmapMode}
-
-        {-# INLINE readVkMipmapMode #-}
-        readVkMipmapMode p
-          = peekByteOff p #{offset VkSamplerCreateInfo, mipmapMode}
-
-        {-# INLINE writeVkMipmapMode #-}
-        writeVkMipmapMode p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, mipmapMode}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, minFilter}
 
 instance {-# OVERLAPPING #-}
          HasField "mipmapMode" VkSamplerCreateInfo where
@@ -359,37 +266,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, mipmapMode}
 
-instance CanReadField "mipmapMode" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMipmapMode
+instance {-# OVERLAPPING #-}
+         CanReadField "mipmapMode" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, mipmapMode})
 
         {-# INLINE readField #-}
-        readField = readVkMipmapMode
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, mipmapMode}
 
-instance CanWriteField "mipmapMode" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "mipmapMode" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMipmapMode
-
-instance {-# OVERLAPPING #-} HasVkAddressModeU VkSamplerCreateInfo
-         where
-        type VkAddressModeUMType VkSamplerCreateInfo = VkSamplerAddressMode
-
-        {-# NOINLINE vkAddressModeU #-}
-        vkAddressModeU x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeU})
-
-        {-# INLINE vkAddressModeUByteOffset #-}
-        vkAddressModeUByteOffset ~_
-          = #{offset VkSamplerCreateInfo, addressModeU}
-
-        {-# INLINE readVkAddressModeU #-}
-        readVkAddressModeU p
-          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeU}
-
-        {-# INLINE writeVkAddressModeU #-}
-        writeVkAddressModeU p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeU}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, mipmapMode}
 
 instance {-# OVERLAPPING #-}
          HasField "addressModeU" VkSamplerCreateInfo where
@@ -407,37 +299,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, addressModeU}
 
-instance CanReadField "addressModeU" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkAddressModeU
+instance {-# OVERLAPPING #-}
+         CanReadField "addressModeU" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeU})
 
         {-# INLINE readField #-}
-        readField = readVkAddressModeU
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeU}
 
-instance CanWriteField "addressModeU" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "addressModeU" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkAddressModeU
-
-instance {-# OVERLAPPING #-} HasVkAddressModeV VkSamplerCreateInfo
-         where
-        type VkAddressModeVMType VkSamplerCreateInfo = VkSamplerAddressMode
-
-        {-# NOINLINE vkAddressModeV #-}
-        vkAddressModeV x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeV})
-
-        {-# INLINE vkAddressModeVByteOffset #-}
-        vkAddressModeVByteOffset ~_
-          = #{offset VkSamplerCreateInfo, addressModeV}
-
-        {-# INLINE readVkAddressModeV #-}
-        readVkAddressModeV p
-          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeV}
-
-        {-# INLINE writeVkAddressModeV #-}
-        writeVkAddressModeV p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeV}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeU}
 
 instance {-# OVERLAPPING #-}
          HasField "addressModeV" VkSamplerCreateInfo where
@@ -455,37 +332,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, addressModeV}
 
-instance CanReadField "addressModeV" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkAddressModeV
+instance {-# OVERLAPPING #-}
+         CanReadField "addressModeV" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeV})
 
         {-# INLINE readField #-}
-        readField = readVkAddressModeV
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeV}
 
-instance CanWriteField "addressModeV" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "addressModeV" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkAddressModeV
-
-instance {-# OVERLAPPING #-} HasVkAddressModeW VkSamplerCreateInfo
-         where
-        type VkAddressModeWMType VkSamplerCreateInfo = VkSamplerAddressMode
-
-        {-# NOINLINE vkAddressModeW #-}
-        vkAddressModeW x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeW})
-
-        {-# INLINE vkAddressModeWByteOffset #-}
-        vkAddressModeWByteOffset ~_
-          = #{offset VkSamplerCreateInfo, addressModeW}
-
-        {-# INLINE readVkAddressModeW #-}
-        readVkAddressModeW p
-          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeW}
-
-        {-# INLINE writeVkAddressModeW #-}
-        writeVkAddressModeW p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeW}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeV}
 
 instance {-# OVERLAPPING #-}
          HasField "addressModeW" VkSamplerCreateInfo where
@@ -503,38 +365,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, addressModeW}
 
-instance CanReadField "addressModeW" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkAddressModeW
+instance {-# OVERLAPPING #-}
+         CanReadField "addressModeW" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeW})
 
         {-# INLINE readField #-}
-        readField = readVkAddressModeW
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeW}
 
-instance CanWriteField "addressModeW" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "addressModeW" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkAddressModeW
-
-instance {-# OVERLAPPING #-} HasVkMipLodBias VkSamplerCreateInfo
-         where
-        type VkMipLodBiasMType VkSamplerCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkMipLodBias #-}
-        vkMipLodBias x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, mipLodBias})
-
-        {-# INLINE vkMipLodBiasByteOffset #-}
-        vkMipLodBiasByteOffset ~_
-          = #{offset VkSamplerCreateInfo, mipLodBias}
-
-        {-# INLINE readVkMipLodBias #-}
-        readVkMipLodBias p
-          = peekByteOff p #{offset VkSamplerCreateInfo, mipLodBias}
-
-        {-# INLINE writeVkMipLodBias #-}
-        writeVkMipLodBias p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, mipLodBias}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeW}
 
 instance {-# OVERLAPPING #-}
          HasField "mipLodBias" VkSamplerCreateInfo where
@@ -551,37 +397,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, mipLodBias}
 
-instance CanReadField "mipLodBias" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMipLodBias
-
-        {-# INLINE readField #-}
-        readField = readVkMipLodBias
-
-instance CanWriteField "mipLodBias" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkMipLodBias
-
 instance {-# OVERLAPPING #-}
-         HasVkAnisotropyEnable VkSamplerCreateInfo where
-        type VkAnisotropyEnableMType VkSamplerCreateInfo = VkBool32
-
-        {-# NOINLINE vkAnisotropyEnable #-}
-        vkAnisotropyEnable x
+         CanReadField "mipLodBias" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, anisotropyEnable})
-
-        {-# INLINE vkAnisotropyEnableByteOffset #-}
-        vkAnisotropyEnableByteOffset ~_
-          = #{offset VkSamplerCreateInfo, anisotropyEnable}
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, mipLodBias})
 
-        {-# INLINE readVkAnisotropyEnable #-}
-        readVkAnisotropyEnable p
-          = peekByteOff p #{offset VkSamplerCreateInfo, anisotropyEnable}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, mipLodBias}
 
-        {-# INLINE writeVkAnisotropyEnable #-}
-        writeVkAnisotropyEnable p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, anisotropyEnable}
+instance {-# OVERLAPPING #-}
+         CanWriteField "mipLodBias" VkSamplerCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, mipLodBias}
 
 instance {-# OVERLAPPING #-}
          HasField "anisotropyEnable" VkSamplerCreateInfo where
@@ -598,38 +429,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, anisotropyEnable}
 
-instance CanReadField "anisotropyEnable" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkAnisotropyEnable
+instance {-# OVERLAPPING #-}
+         CanReadField "anisotropyEnable" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, anisotropyEnable})
 
         {-# INLINE readField #-}
-        readField = readVkAnisotropyEnable
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, anisotropyEnable}
 
-instance CanWriteField "anisotropyEnable" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "anisotropyEnable" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkAnisotropyEnable
-
-instance {-# OVERLAPPING #-} HasVkMaxAnisotropy VkSamplerCreateInfo
-         where
-        type VkMaxAnisotropyMType VkSamplerCreateInfo =
-             #{type float}
-
-        {-# NOINLINE vkMaxAnisotropy #-}
-        vkMaxAnisotropy x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, maxAnisotropy})
-
-        {-# INLINE vkMaxAnisotropyByteOffset #-}
-        vkMaxAnisotropyByteOffset ~_
-          = #{offset VkSamplerCreateInfo, maxAnisotropy}
-
-        {-# INLINE readVkMaxAnisotropy #-}
-        readVkMaxAnisotropy p
-          = peekByteOff p #{offset VkSamplerCreateInfo, maxAnisotropy}
-
-        {-# INLINE writeVkMaxAnisotropy #-}
-        writeVkMaxAnisotropy p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, maxAnisotropy}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, anisotropyEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "maxAnisotropy" VkSamplerCreateInfo where
@@ -647,37 +462,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, maxAnisotropy}
 
-instance CanReadField "maxAnisotropy" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMaxAnisotropy
+instance {-# OVERLAPPING #-}
+         CanReadField "maxAnisotropy" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, maxAnisotropy})
 
         {-# INLINE readField #-}
-        readField = readVkMaxAnisotropy
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, maxAnisotropy}
 
-instance CanWriteField "maxAnisotropy" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxAnisotropy" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxAnisotropy
-
-instance {-# OVERLAPPING #-} HasVkCompareEnable VkSamplerCreateInfo
-         where
-        type VkCompareEnableMType VkSamplerCreateInfo = VkBool32
-
-        {-# NOINLINE vkCompareEnable #-}
-        vkCompareEnable x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, compareEnable})
-
-        {-# INLINE vkCompareEnableByteOffset #-}
-        vkCompareEnableByteOffset ~_
-          = #{offset VkSamplerCreateInfo, compareEnable}
-
-        {-# INLINE readVkCompareEnable #-}
-        readVkCompareEnable p
-          = peekByteOff p #{offset VkSamplerCreateInfo, compareEnable}
-
-        {-# INLINE writeVkCompareEnable #-}
-        writeVkCompareEnable p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, compareEnable}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, maxAnisotropy}
 
 instance {-# OVERLAPPING #-}
          HasField "compareEnable" VkSamplerCreateInfo where
@@ -694,37 +494,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, compareEnable}
 
-instance CanReadField "compareEnable" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkCompareEnable
+instance {-# OVERLAPPING #-}
+         CanReadField "compareEnable" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, compareEnable})
 
         {-# INLINE readField #-}
-        readField = readVkCompareEnable
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, compareEnable}
 
-instance CanWriteField "compareEnable" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "compareEnable" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkCompareEnable
-
-instance {-# OVERLAPPING #-} HasVkCompareOp VkSamplerCreateInfo
-         where
-        type VkCompareOpMType VkSamplerCreateInfo = VkCompareOp
-
-        {-# NOINLINE vkCompareOp #-}
-        vkCompareOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, compareOp})
-
-        {-# INLINE vkCompareOpByteOffset #-}
-        vkCompareOpByteOffset ~_
-          = #{offset VkSamplerCreateInfo, compareOp}
-
-        {-# INLINE readVkCompareOp #-}
-        readVkCompareOp p
-          = peekByteOff p #{offset VkSamplerCreateInfo, compareOp}
-
-        {-# INLINE writeVkCompareOp #-}
-        writeVkCompareOp p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, compareOp}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, compareEnable}
 
 instance {-# OVERLAPPING #-}
          HasField "compareOp" VkSamplerCreateInfo where
@@ -740,36 +525,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, compareOp}
 
-instance CanReadField "compareOp" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkCompareOp
+instance {-# OVERLAPPING #-}
+         CanReadField "compareOp" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, compareOp})
 
         {-# INLINE readField #-}
-        readField = readVkCompareOp
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, compareOp}
 
-instance CanWriteField "compareOp" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "compareOp" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkCompareOp
-
-instance {-# OVERLAPPING #-} HasVkMinLod VkSamplerCreateInfo where
-        type VkMinLodMType VkSamplerCreateInfo = #{type float}
-
-        {-# NOINLINE vkMinLod #-}
-        vkMinLod x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, minLod})
-
-        {-# INLINE vkMinLodByteOffset #-}
-        vkMinLodByteOffset ~_
-          = #{offset VkSamplerCreateInfo, minLod}
-
-        {-# INLINE readVkMinLod #-}
-        readVkMinLod p
-          = peekByteOff p #{offset VkSamplerCreateInfo, minLod}
-
-        {-# INLINE writeVkMinLod #-}
-        writeVkMinLod p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, minLod}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, compareOp}
 
 instance {-# OVERLAPPING #-} HasField "minLod" VkSamplerCreateInfo
          where
@@ -786,36 +557,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, minLod}
 
-instance CanReadField "minLod" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMinLod
+instance {-# OVERLAPPING #-}
+         CanReadField "minLod" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, minLod})
 
         {-# INLINE readField #-}
-        readField = readVkMinLod
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, minLod}
 
-instance CanWriteField "minLod" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "minLod" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMinLod
-
-instance {-# OVERLAPPING #-} HasVkMaxLod VkSamplerCreateInfo where
-        type VkMaxLodMType VkSamplerCreateInfo = #{type float}
-
-        {-# NOINLINE vkMaxLod #-}
-        vkMaxLod x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, maxLod})
-
-        {-# INLINE vkMaxLodByteOffset #-}
-        vkMaxLodByteOffset ~_
-          = #{offset VkSamplerCreateInfo, maxLod}
-
-        {-# INLINE readVkMaxLod #-}
-        readVkMaxLod p
-          = peekByteOff p #{offset VkSamplerCreateInfo, maxLod}
-
-        {-# INLINE writeVkMaxLod #-}
-        writeVkMaxLod p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, maxLod}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, minLod}
 
 instance {-# OVERLAPPING #-} HasField "maxLod" VkSamplerCreateInfo
          where
@@ -832,37 +589,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSamplerCreateInfo, maxLod}
 
-instance CanReadField "maxLod" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkMaxLod
+instance {-# OVERLAPPING #-}
+         CanReadField "maxLod" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, maxLod})
 
         {-# INLINE readField #-}
-        readField = readVkMaxLod
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, maxLod}
 
-instance CanWriteField "maxLod" VkSamplerCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxLod" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxLod
-
-instance {-# OVERLAPPING #-} HasVkBorderColor VkSamplerCreateInfo
-         where
-        type VkBorderColorMType VkSamplerCreateInfo = VkBorderColor
-
-        {-# NOINLINE vkBorderColor #-}
-        vkBorderColor x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, borderColor})
-
-        {-# INLINE vkBorderColorByteOffset #-}
-        vkBorderColorByteOffset ~_
-          = #{offset VkSamplerCreateInfo, borderColor}
-
-        {-# INLINE readVkBorderColor #-}
-        readVkBorderColor p
-          = peekByteOff p #{offset VkSamplerCreateInfo, borderColor}
-
-        {-# INLINE writeVkBorderColor #-}
-        writeVkBorderColor p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, borderColor}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, maxLod}
 
 instance {-# OVERLAPPING #-}
          HasField "borderColor" VkSamplerCreateInfo where
@@ -879,37 +621,22 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, borderColor}
 
-instance CanReadField "borderColor" VkSamplerCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkBorderColor
-
-        {-# INLINE readField #-}
-        readField = readVkBorderColor
-
-instance CanWriteField "borderColor" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkBorderColor
-
 instance {-# OVERLAPPING #-}
-         HasVkUnnormalizedCoordinates VkSamplerCreateInfo where
-        type VkUnnormalizedCoordinatesMType VkSamplerCreateInfo = VkBool32
-
-        {-# NOINLINE vkUnnormalizedCoordinates #-}
-        vkUnnormalizedCoordinates x
+         CanReadField "borderColor" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, unnormalizedCoordinates})
-
-        {-# INLINE vkUnnormalizedCoordinatesByteOffset #-}
-        vkUnnormalizedCoordinatesByteOffset ~_
-          = #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, borderColor})
 
-        {-# INLINE readVkUnnormalizedCoordinates #-}
-        readVkUnnormalizedCoordinates p
-          = peekByteOff p #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, borderColor}
 
-        {-# INLINE writeVkUnnormalizedCoordinates #-}
-        writeVkUnnormalizedCoordinates p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
+instance {-# OVERLAPPING #-}
+         CanWriteField "borderColor" VkSamplerCreateInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, borderColor}
 
 instance {-# OVERLAPPING #-}
          HasField "unnormalizedCoordinates" VkSamplerCreateInfo where
@@ -929,129 +656,145 @@
         fieldOffset
           = #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
 
-instance CanReadField "unnormalizedCoordinates" VkSamplerCreateInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkUnnormalizedCoordinates
+instance {-# OVERLAPPING #-}
+         CanReadField "unnormalizedCoordinates" VkSamplerCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, unnormalizedCoordinates})
 
         {-# INLINE readField #-}
-        readField = readVkUnnormalizedCoordinates
+        readField p
+          = peekByteOff p #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
 
-instance CanWriteField "unnormalizedCoordinates"
-           VkSamplerCreateInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "unnormalizedCoordinates" VkSamplerCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkUnnormalizedCoordinates
+        writeField p
+          = pokeByteOff p #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
 
 instance Show VkSamplerCreateInfo where
         showsPrec d x
           = showString "VkSamplerCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkMagFilter = " .
-                                  showsPrec d (vkMagFilter x) .
+                                showString "magFilter = " .
+                                  showsPrec d (getField @"magFilter" x) .
                                     showString ", " .
-                                      showString "vkMinFilter = " .
-                                        showsPrec d (vkMinFilter x) .
+                                      showString "minFilter = " .
+                                        showsPrec d (getField @"minFilter" x) .
                                           showString ", " .
-                                            showString "vkMipmapMode = " .
-                                              showsPrec d (vkMipmapMode x) .
+                                            showString "mipmapMode = " .
+                                              showsPrec d (getField @"mipmapMode" x) .
                                                 showString ", " .
-                                                  showString "vkAddressModeU = " .
-                                                    showsPrec d (vkAddressModeU x) .
+                                                  showString "addressModeU = " .
+                                                    showsPrec d (getField @"addressModeU" x) .
                                                       showString ", " .
-                                                        showString "vkAddressModeV = " .
-                                                          showsPrec d (vkAddressModeV x) .
+                                                        showString "addressModeV = " .
+                                                          showsPrec d (getField @"addressModeV" x) .
                                                             showString ", " .
-                                                              showString "vkAddressModeW = " .
-                                                                showsPrec d (vkAddressModeW x) .
+                                                              showString "addressModeW = " .
+                                                                showsPrec d
+                                                                  (getField @"addressModeW" x)
+                                                                  .
                                                                   showString ", " .
-                                                                    showString "vkMipLodBias = " .
-                                                                      showsPrec d (vkMipLodBias x) .
+                                                                    showString "mipLodBias = " .
+                                                                      showsPrec d
+                                                                        (getField @"mipLodBias" x)
+                                                                        .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkAnisotropyEnable = "
+                                                                            "anisotropyEnable = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkAnisotropyEnable x)
+                                                                              (getField
+                                                                                 @"anisotropyEnable"
+                                                                                 x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkMaxAnisotropy = "
+                                                                                  "maxAnisotropy = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkMaxAnisotropy
+                                                                                    (getField
+                                                                                       @"maxAnisotropy"
                                                                                        x)
                                                                                     .
                                                                                     showString ", "
                                                                                       .
                                                                                       showString
-                                                                                        "vkCompareEnable = "
+                                                                                        "compareEnable = "
                                                                                         .
                                                                                         showsPrec d
-                                                                                          (vkCompareEnable
+                                                                                          (getField
+                                                                                             @"compareEnable"
                                                                                              x)
                                                                                           .
                                                                                           showString
                                                                                             ", "
                                                                                             .
                                                                                             showString
-                                                                                              "vkCompareOp = "
+                                                                                              "compareOp = "
                                                                                               .
                                                                                               showsPrec
                                                                                                 d
-                                                                                                (vkCompareOp
+                                                                                                (getField
+                                                                                                   @"compareOp"
                                                                                                    x)
                                                                                                 .
                                                                                                 showString
                                                                                                   ", "
                                                                                                   .
                                                                                                   showString
-                                                                                                    "vkMinLod = "
+                                                                                                    "minLod = "
                                                                                                     .
                                                                                                     showsPrec
                                                                                                       d
-                                                                                                      (vkMinLod
+                                                                                                      (getField
+                                                                                                         @"minLod"
                                                                                                          x)
                                                                                                       .
                                                                                                       showString
                                                                                                         ", "
                                                                                                         .
                                                                                                         showString
-                                                                                                          "vkMaxLod = "
+                                                                                                          "maxLod = "
                                                                                                           .
                                                                                                           showsPrec
                                                                                                             d
-                                                                                                            (vkMaxLod
+                                                                                                            (getField
+                                                                                                               @"maxLod"
                                                                                                                x)
                                                                                                             .
                                                                                                             showString
                                                                                                               ", "
                                                                                                               .
                                                                                                               showString
-                                                                                                                "vkBorderColor = "
+                                                                                                                "borderColor = "
                                                                                                                 .
                                                                                                                 showsPrec
                                                                                                                   d
-                                                                                                                  (vkBorderColor
+                                                                                                                  (getField
+                                                                                                                     @"borderColor"
                                                                                                                      x)
                                                                                                                   .
                                                                                                                   showString
                                                                                                                     ", "
                                                                                                                     .
                                                                                                                     showString
-                                                                                                                      "vkUnnormalizedCoordinates = "
+                                                                                                                      "unnormalizedCoordinates = "
                                                                                                                       .
                                                                                                                       showsPrec
                                                                                                                         d
-                                                                                                                        (vkUnnormalizedCoordinates
+                                                                                                                        (getField
+                                                                                                                           @"unnormalizedCoordinates"
                                                                                                                            x)
                                                                                                                         .
                                                                                                                         showChar
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerReductionModeCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerReductionModeCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerReductionModeCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerReductionModeCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSamplerReductionModeCreateInfoEXT
        (VkSamplerReductionModeCreateInfoEXT(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSamplerReductionModeEXT (VkSamplerReductionModeEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType           (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo     (VkSamplerCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSamplerReductionModeCreateInfoEXT {
@@ -24,7 +24,7 @@
 --   >     VkSamplerReductionModeEXT reductionMode;
 --   > } VkSamplerReductionModeCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerReductionModeCreateInfoEXT.html VkSamplerReductionModeCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerReductionModeCreateInfoEXT.html VkSamplerReductionModeCreateInfoEXT registry at www.khronos.org>
 data VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfoEXT## Addr##
                                                                                 ByteArray##
 
@@ -81,28 +81,6 @@
              '[VkSamplerCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkSamplerReductionModeCreateInfoEXT where
-        type VkSTypeMType VkSamplerReductionModeCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkSamplerReductionModeCreateInfoEXT where
         type FieldType "sType" VkSamplerReductionModeCreateInfoEXT =
              VkStructureType
@@ -120,39 +98,22 @@
         fieldOffset
           = #{offset VkSamplerReductionModeCreateInfoEXT, sType}
 
-instance CanReadField "sType" VkSamplerReductionModeCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkSamplerReductionModeCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkSamplerReductionModeCreateInfoEXT where
-        type VkPNextMType VkSamplerReductionModeCreateInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkSamplerReductionModeCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSamplerReductionModeCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSamplerReductionModeCreateInfoEXT where
@@ -172,40 +133,22 @@
         fieldOffset
           = #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
 
-instance CanReadField "pNext" VkSamplerReductionModeCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkSamplerReductionModeCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkReductionMode VkSamplerReductionModeCreateInfoEXT where
-        type VkReductionModeMType VkSamplerReductionModeCreateInfoEXT =
-             VkSamplerReductionModeEXT
-
-        {-# NOINLINE vkReductionMode #-}
-        vkReductionMode x
+         CanReadField "pNext" VkSamplerReductionModeCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode})
-
-        {-# INLINE vkReductionModeByteOffset #-}
-        vkReductionModeByteOffset ~_
-          = #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
+              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, pNext})
 
-        {-# INLINE readVkReductionMode #-}
-        readVkReductionMode p
-          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
 
-        {-# INLINE writeVkReductionMode #-}
-        writeVkReductionMode p
-          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSamplerReductionModeCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "reductionMode" VkSamplerReductionModeCreateInfoEXT where
@@ -229,29 +172,33 @@
         fieldOffset
           = #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
 
-instance CanReadField "reductionMode"
-           VkSamplerReductionModeCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "reductionMode" VkSamplerReductionModeCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkReductionMode
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode})
 
         {-# INLINE readField #-}
-        readField = readVkReductionMode
+        readField p
+          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
 
-instance CanWriteField "reductionMode"
-           VkSamplerReductionModeCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "reductionMode" VkSamplerReductionModeCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkReductionMode
+        writeField p
+          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
 
 instance Show VkSamplerReductionModeCreateInfoEXT where
         showsPrec d x
           = showString "VkSamplerReductionModeCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkReductionMode = " .
-                            showsPrec d (vkReductionMode x) . showChar '}'
+                          showString "reductionMode = " .
+                            showsPrec d (getField @"reductionMode" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfo.hsc
@@ -0,0 +1,510 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo
+       (VkSamplerYcbcrConversionCreateInfo(..)) where
+import           Foreign.Storable                                         (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkChromaLocation              (VkChromaLocation)
+import           Graphics.Vulkan.Types.Enum.VkFilter                      (VkFilter)
+import           Graphics.Vulkan.Types.Enum.VkFormat                      (VkFormat)
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion (VkSamplerYcbcrModelConversion)
+import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange           (VkSamplerYcbcrRange)
+import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkComponentMapping          (VkComponentMapping)
+import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+
+-- | > 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/man/html/VkSamplerYcbcrConversionCreateInfo.html VkSamplerYcbcrConversionCreateInfo registry at www.khronos.org>
+data VkSamplerYcbcrConversionCreateInfo = VkSamplerYcbcrConversionCreateInfo## Addr##
+                                                                              ByteArray##
+
+instance Eq VkSamplerYcbcrConversionCreateInfo where
+        (VkSamplerYcbcrConversionCreateInfo## a _) ==
+          x@(VkSamplerYcbcrConversionCreateInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkSamplerYcbcrConversionCreateInfo where
+        (VkSamplerYcbcrConversionCreateInfo## a _) `compare`
+          x@(VkSamplerYcbcrConversionCreateInfo## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkSamplerYcbcrConversionCreateInfo where
+        unsafeAddr (VkSamplerYcbcrConversionCreateInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkSamplerYcbcrConversionCreateInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkSamplerYcbcrConversionCreateInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfoKHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfoKHR
+       (VkSamplerYcbcrConversionCreateInfo(..),
+        VkSamplerYcbcrConversionCreateInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo (VkSamplerYcbcrConversionCreateInfo (..))
+
+-- | Alias for `VkSamplerYcbcrConversionCreateInfo`
+type VkSamplerYcbcrConversionCreateInfoKHR =
+     VkSamplerYcbcrConversionCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionCreateInfoKHR.hsc
+++ /dev/null
@@ -1,714 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfoKHR
-       (VkSamplerYcbcrConversionCreateInfoKHR(..)) where
-import           Foreign.Storable                                            (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkChromaLocationKHR              (VkChromaLocationKHR)
-import           Graphics.Vulkan.Types.Enum.VkFilter                         (VkFilter)
-import           Graphics.Vulkan.Types.Enum.VkFormat                         (VkFormat)
-import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversionKHR (VkSamplerYcbcrModelConversionKHR)
-import           Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRangeKHR           (VkSamplerYcbcrRangeKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType                  (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkComponentMapping             (VkComponentMapping)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkSamplerYcbcrConversionCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkFormat                         format;
---   >     VkSamplerYcbcrModelConversionKHR ycbcrModel;
---   >     VkSamplerYcbcrRangeKHR           ycbcrRange;
---   >     VkComponentMapping               components;
---   >     VkChromaLocationKHR              xChromaOffset;
---   >     VkChromaLocationKHR              yChromaOffset;
---   >     VkFilter                         chromaFilter;
---   >     VkBool32                         forceExplicitReconstruction;
---   > } VkSamplerYcbcrConversionCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html VkSamplerYcbcrConversionCreateInfoKHR registry at www.khronos.org>
-data VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfoKHR## Addr##
-                                                                                    ByteArray##
-
-instance Eq VkSamplerYcbcrConversionCreateInfoKHR where
-        (VkSamplerYcbcrConversionCreateInfoKHR## a _) ==
-          x@(VkSamplerYcbcrConversionCreateInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerYcbcrConversionCreateInfoKHR where
-        (VkSamplerYcbcrConversionCreateInfoKHR## a _) `compare`
-          x@(VkSamplerYcbcrConversionCreateInfoKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerYcbcrConversionCreateInfoKHR where
-        sizeOf ~_
-          = #{size VkSamplerYcbcrConversionCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerYcbcrConversionCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        unsafeAddr (VkSamplerYcbcrConversionCreateInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkSamplerYcbcrConversionCreateInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkSamplerYcbcrConversionCreateInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkSamplerYcbcrConversionCreateInfoKHR where
-        type StructFields VkSamplerYcbcrConversionCreateInfoKHR =
-             '["sType", "pNext", "format", "ycbcrModel", "ycbcrRange", -- ' closing tick for hsc2hs
-               "components", "xChromaOffset", "yChromaOffset", "chromaFilter",
-               "forceExplicitReconstruction"]
-        type CUnionType VkSamplerYcbcrConversionCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerYcbcrConversionCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerYcbcrConversionCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkSTypeMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "sType" VkSamplerYcbcrConversionCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkSamplerYcbcrConversionCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSamplerYcbcrConversionCreateInfoKHR =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkSamplerYcbcrConversionCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, sType}
-
-instance CanReadField "sType" VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkPNextMType VkSamplerYcbcrConversionCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "pNext" VkSamplerYcbcrConversionCreateInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkSamplerYcbcrConversionCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSamplerYcbcrConversionCreateInfoKHR =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkSamplerYcbcrConversionCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, pNext}
-
-instance CanReadField "pNext" VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkFormat VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkFormatMType VkSamplerYcbcrConversionCreateInfoKHR = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "format" VkSamplerYcbcrConversionCreateInfoKHR =
-             VkFormat
-        type FieldOptional "format" VkSamplerYcbcrConversionCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkSamplerYcbcrConversionCreateInfoKHR =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, format}
-        type FieldIsArray "format" VkSamplerYcbcrConversionCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, format}
-
-instance CanReadField "format"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkFormat
-
-        {-# INLINE readField #-}
-        readField = readVkFormat
-
-instance CanWriteField "format"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
-instance {-# OVERLAPPING #-}
-         HasVkYcbcrModel VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkYcbcrModelMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkSamplerYcbcrModelConversionKHR
-
-        {-# NOINLINE vkYcbcrModel #-}
-        vkYcbcrModel x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrModel})
-
-        {-# INLINE vkYcbcrModelByteOffset #-}
-        vkYcbcrModelByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrModel}
-
-        {-# INLINE readVkYcbcrModel #-}
-        readVkYcbcrModel p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrModel}
-
-        {-# INLINE writeVkYcbcrModel #-}
-        writeVkYcbcrModel p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrModel}
-
-instance {-# OVERLAPPING #-}
-         HasField "ycbcrModel" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "ycbcrModel" VkSamplerYcbcrConversionCreateInfoKHR =
-             VkSamplerYcbcrModelConversionKHR
-        type FieldOptional "ycbcrModel"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "ycbcrModel" VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrModel}
-        type FieldIsArray "ycbcrModel"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrModel}
-
-instance CanReadField "ycbcrModel"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkYcbcrModel
-
-        {-# INLINE readField #-}
-        readField = readVkYcbcrModel
-
-instance CanWriteField "ycbcrModel"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkYcbcrModel
-
-instance {-# OVERLAPPING #-}
-         HasVkYcbcrRange VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkYcbcrRangeMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkSamplerYcbcrRangeKHR
-
-        {-# NOINLINE vkYcbcrRange #-}
-        vkYcbcrRange x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrRange})
-
-        {-# INLINE vkYcbcrRangeByteOffset #-}
-        vkYcbcrRangeByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrRange}
-
-        {-# INLINE readVkYcbcrRange #-}
-        readVkYcbcrRange p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrRange}
-
-        {-# INLINE writeVkYcbcrRange #-}
-        writeVkYcbcrRange p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrRange}
-
-instance {-# OVERLAPPING #-}
-         HasField "ycbcrRange" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "ycbcrRange" VkSamplerYcbcrConversionCreateInfoKHR =
-             VkSamplerYcbcrRangeKHR
-        type FieldOptional "ycbcrRange"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "ycbcrRange" VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrRange}
-        type FieldIsArray "ycbcrRange"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, ycbcrRange}
-
-instance CanReadField "ycbcrRange"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkYcbcrRange
-
-        {-# INLINE readField #-}
-        readField = readVkYcbcrRange
-
-instance CanWriteField "ycbcrRange"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkYcbcrRange
-
-instance {-# OVERLAPPING #-}
-         HasVkComponents VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkComponentsMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkComponentMapping
-
-        {-# NOINLINE vkComponents #-}
-        vkComponents x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, components})
-
-        {-# INLINE vkComponentsByteOffset #-}
-        vkComponentsByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, components}
-
-        {-# INLINE readVkComponents #-}
-        readVkComponents p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, components}
-
-        {-# INLINE writeVkComponents #-}
-        writeVkComponents p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, components}
-
-instance {-# OVERLAPPING #-}
-         HasField "components" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "components" VkSamplerYcbcrConversionCreateInfoKHR =
-             VkComponentMapping
-        type FieldOptional "components"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "components" VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, components}
-        type FieldIsArray "components"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, components}
-
-instance CanReadField "components"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkComponents
-
-        {-# INLINE readField #-}
-        readField = readVkComponents
-
-instance CanWriteField "components"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkComponents
-
-instance {-# OVERLAPPING #-}
-         HasVkXChromaOffset VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkXChromaOffsetMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkChromaLocationKHR
-
-        {-# NOINLINE vkXChromaOffset #-}
-        vkXChromaOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, xChromaOffset})
-
-        {-# INLINE vkXChromaOffsetByteOffset #-}
-        vkXChromaOffsetByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, xChromaOffset}
-
-        {-# INLINE readVkXChromaOffset #-}
-        readVkXChromaOffset p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, xChromaOffset}
-
-        {-# INLINE writeVkXChromaOffset #-}
-        writeVkXChromaOffset p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, xChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "xChromaOffset" VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        type FieldType "xChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = VkChromaLocationKHR
-        type FieldOptional "xChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "xChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, xChromaOffset}
-        type FieldIsArray "xChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, xChromaOffset}
-
-instance CanReadField "xChromaOffset"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkXChromaOffset
-
-        {-# INLINE readField #-}
-        readField = readVkXChromaOffset
-
-instance CanWriteField "xChromaOffset"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkXChromaOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkYChromaOffset VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkYChromaOffsetMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkChromaLocationKHR
-
-        {-# NOINLINE vkYChromaOffset #-}
-        vkYChromaOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, yChromaOffset})
-
-        {-# INLINE vkYChromaOffsetByteOffset #-}
-        vkYChromaOffsetByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, yChromaOffset}
-
-        {-# INLINE readVkYChromaOffset #-}
-        readVkYChromaOffset p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, yChromaOffset}
-
-        {-# INLINE writeVkYChromaOffset #-}
-        writeVkYChromaOffset p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, yChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "yChromaOffset" VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        type FieldType "yChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = VkChromaLocationKHR
-        type FieldOptional "yChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "yChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, yChromaOffset}
-        type FieldIsArray "yChromaOffset"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, yChromaOffset}
-
-instance CanReadField "yChromaOffset"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkYChromaOffset
-
-        {-# INLINE readField #-}
-        readField = readVkYChromaOffset
-
-instance CanWriteField "yChromaOffset"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkYChromaOffset
-
-instance {-# OVERLAPPING #-}
-         HasVkChromaFilter VkSamplerYcbcrConversionCreateInfoKHR where
-        type VkChromaFilterMType VkSamplerYcbcrConversionCreateInfoKHR =
-             VkFilter
-
-        {-# NOINLINE vkChromaFilter #-}
-        vkChromaFilter x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, chromaFilter})
-
-        {-# INLINE vkChromaFilterByteOffset #-}
-        vkChromaFilterByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, chromaFilter}
-
-        {-# INLINE readVkChromaFilter #-}
-        readVkChromaFilter p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, chromaFilter}
-
-        {-# INLINE writeVkChromaFilter #-}
-        writeVkChromaFilter p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, chromaFilter}
-
-instance {-# OVERLAPPING #-}
-         HasField "chromaFilter" VkSamplerYcbcrConversionCreateInfoKHR where
-        type FieldType "chromaFilter" VkSamplerYcbcrConversionCreateInfoKHR
-             = VkFilter
-        type FieldOptional "chromaFilter"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "chromaFilter"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, chromaFilter}
-        type FieldIsArray "chromaFilter"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, chromaFilter}
-
-instance CanReadField "chromaFilter"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkChromaFilter
-
-        {-# INLINE readField #-}
-        readField = readVkChromaFilter
-
-instance CanWriteField "chromaFilter"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkChromaFilter
-
-instance {-# OVERLAPPING #-}
-         HasVkForceExplicitReconstruction
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        type VkForceExplicitReconstructionMType
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = VkBool32
-
-        {-# NOINLINE vkForceExplicitReconstruction #-}
-        vkForceExplicitReconstruction x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfoKHR, forceExplicitReconstruction})
-
-        {-# INLINE vkForceExplicitReconstructionByteOffset #-}
-        vkForceExplicitReconstructionByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, forceExplicitReconstruction}
-
-        {-# INLINE readVkForceExplicitReconstruction #-}
-        readVkForceExplicitReconstruction p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, forceExplicitReconstruction}
-
-        {-# INLINE writeVkForceExplicitReconstruction #-}
-        writeVkForceExplicitReconstruction p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfoKHR, forceExplicitReconstruction}
-
-instance {-# OVERLAPPING #-}
-         HasField "forceExplicitReconstruction"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        type FieldType "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = VkBool32
-        type FieldOptional "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfoKHR, forceExplicitReconstruction}
-        type FieldIsArray "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfoKHR, forceExplicitReconstruction}
-
-instance CanReadField "forceExplicitReconstruction"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkForceExplicitReconstruction
-
-        {-# INLINE readField #-}
-        readField = readVkForceExplicitReconstruction
-
-instance CanWriteField "forceExplicitReconstruction"
-           VkSamplerYcbcrConversionCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkForceExplicitReconstruction
-
-instance Show VkSamplerYcbcrConversionCreateInfoKHR where
-        showsPrec d x
-          = showString "VkSamplerYcbcrConversionCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkFormat = " .
-                            showsPrec d (vkFormat x) .
-                              showString ", " .
-                                showString "vkYcbcrModel = " .
-                                  showsPrec d (vkYcbcrModel x) .
-                                    showString ", " .
-                                      showString "vkYcbcrRange = " .
-                                        showsPrec d (vkYcbcrRange x) .
-                                          showString ", " .
-                                            showString "vkComponents = " .
-                                              showsPrec d (vkComponents x) .
-                                                showString ", " .
-                                                  showString "vkXChromaOffset = " .
-                                                    showsPrec d (vkXChromaOffset x) .
-                                                      showString ", " .
-                                                        showString "vkYChromaOffset = " .
-                                                          showsPrec d (vkYChromaOffset x) .
-                                                            showString ", " .
-                                                              showString "vkChromaFilter = " .
-                                                                showsPrec d (vkChromaFilter x) .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "vkForceExplicitReconstruction = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (vkForceExplicitReconstruction
-                                                                           x)
-                                                                        . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatProperties.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatProperties.hsc
@@ -0,0 +1,233 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatProperties
+       (VkSamplerYcbcrConversionImageFormatProperties(..)) where
+import           Foreign.Storable                                      (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2 (VkImageFormatProperties2)
+import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
+
+-- | > typedef struct VkSamplerYcbcrConversionImageFormatProperties {
+--   >     VkStructureType sType;
+--   >     void*      pNext;
+--   >     uint32_t                         combinedImageSamplerDescriptorCount;
+--   > } VkSamplerYcbcrConversionImageFormatProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerYcbcrConversionImageFormatProperties.html VkSamplerYcbcrConversionImageFormatProperties registry at www.khronos.org>
+data VkSamplerYcbcrConversionImageFormatProperties = VkSamplerYcbcrConversionImageFormatProperties## Addr##
+                                                                                                    ByteArray##
+
+instance Eq VkSamplerYcbcrConversionImageFormatProperties where
+        (VkSamplerYcbcrConversionImageFormatProperties## a _) ==
+          x@(VkSamplerYcbcrConversionImageFormatProperties## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkSamplerYcbcrConversionImageFormatProperties where
+        (VkSamplerYcbcrConversionImageFormatProperties## a _) `compare`
+          x@(VkSamplerYcbcrConversionImageFormatProperties## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkSamplerYcbcrConversionImageFormatProperties
+         where
+        unsafeAddr (VkSamplerYcbcrConversionImageFormatProperties## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray
+          (VkSamplerYcbcrConversionImageFormatProperties## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkSamplerYcbcrConversionImageFormatProperties##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatPropertiesKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatPropertiesKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatPropertiesKHR.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatPropertiesKHR
+       (VkSamplerYcbcrConversionImageFormatProperties(..),
+        VkSamplerYcbcrConversionImageFormatPropertiesKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatProperties
+                                                                                             (VkSamplerYcbcrConversionImageFormatProperties (..))
+
+-- | Alias for `VkSamplerYcbcrConversionImageFormatProperties`
+type VkSamplerYcbcrConversionImageFormatPropertiesKHR =
+     VkSamplerYcbcrConversionImageFormatProperties
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatPropertiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatPropertiesKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionImageFormatPropertiesKHR.hsc
+++ /dev/null
@@ -1,272 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatPropertiesKHR
-       (VkSamplerYcbcrConversionImageFormatPropertiesKHR(..)) where
-import           Foreign.Storable                                         (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR (VkImageFormatProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkSamplerYcbcrConversionImageFormatPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*      pNext;
---   >     uint32_t                         combinedImageSamplerDescriptorCount;
---   > } VkSamplerYcbcrConversionImageFormatPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html VkSamplerYcbcrConversionImageFormatPropertiesKHR registry at www.khronos.org>
-data VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatPropertiesKHR## Addr##
-                                                                                                          ByteArray##
-
-instance Eq VkSamplerYcbcrConversionImageFormatPropertiesKHR where
-        (VkSamplerYcbcrConversionImageFormatPropertiesKHR## a _) ==
-          x@(VkSamplerYcbcrConversionImageFormatPropertiesKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerYcbcrConversionImageFormatPropertiesKHR where
-        (VkSamplerYcbcrConversionImageFormatPropertiesKHR## a _) `compare`
-          x@(VkSamplerYcbcrConversionImageFormatPropertiesKHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        sizeOf ~_
-          = #{size VkSamplerYcbcrConversionImageFormatPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerYcbcrConversionImageFormatPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        unsafeAddr (VkSamplerYcbcrConversionImageFormatPropertiesKHR## a _)
-          = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray
-          (VkSamplerYcbcrConversionImageFormatPropertiesKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkSamplerYcbcrConversionImageFormatPropertiesKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        type StructFields VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = '["sType", "pNext", "combinedImageSamplerDescriptorCount"] -- ' closing tick for hsc2hs
-        type CUnionType VkSamplerYcbcrConversionImageFormatPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = '[VkImageFormatProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkSamplerYcbcrConversionImageFormatPropertiesKHR where
-        type VkSTypeMType VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        type FieldType "sType"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = VkStructureType
-        type FieldOptional "sType"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             =
-             #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, sType}
-        type FieldIsArray "sType"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, sType}
-
-instance CanReadField "sType"
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkSamplerYcbcrConversionImageFormatPropertiesKHR where
-        type VkPNextMType VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        type FieldType "pNext"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             =
-             #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, pNext}
-        type FieldIsArray "pNext"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, pNext}
-
-instance CanReadField "pNext"
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkCombinedImageSamplerDescriptorCount
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        type VkCombinedImageSamplerDescriptorCountMType
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = Word32
-
-        {-# NOINLINE vkCombinedImageSamplerDescriptorCount #-}
-        vkCombinedImageSamplerDescriptorCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, combinedImageSamplerDescriptorCount})
-
-        {-# INLINE vkCombinedImageSamplerDescriptorCountByteOffset #-}
-        vkCombinedImageSamplerDescriptorCountByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, combinedImageSamplerDescriptorCount}
-
-        {-# INLINE readVkCombinedImageSamplerDescriptorCount #-}
-        readVkCombinedImageSamplerDescriptorCount p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, combinedImageSamplerDescriptorCount}
-
-        {-# INLINE writeVkCombinedImageSamplerDescriptorCount #-}
-        writeVkCombinedImageSamplerDescriptorCount p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, combinedImageSamplerDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "combinedImageSamplerDescriptorCount"
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        type FieldType "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = Word32
-        type FieldOptional "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             =
-             #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, combinedImageSamplerDescriptorCount}
-        type FieldIsArray "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionImageFormatPropertiesKHR, combinedImageSamplerDescriptorCount}
-
-instance CanReadField "combinedImageSamplerDescriptorCount"
-           VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCombinedImageSamplerDescriptorCount
-
-        {-# INLINE readField #-}
-        readField = readVkCombinedImageSamplerDescriptorCount
-
-instance Show VkSamplerYcbcrConversionImageFormatPropertiesKHR
-         where
-        showsPrec d x
-          = showString "VkSamplerYcbcrConversionImageFormatPropertiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkCombinedImageSamplerDescriptorCount = " .
-                            showsPrec d (vkCombinedImageSamplerDescriptorCount x) .
-                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfo.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfo.hsc
@@ -0,0 +1,192 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfo
+       (VkSamplerYcbcrConversionInfo(..)) where
+import           Foreign.Storable                                   (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                      (VkSamplerYcbcrConversion)
+import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo (VkImageViewCreateInfo)
+import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo   (VkSamplerCreateInfo)
+import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
+
+-- | > typedef struct VkSamplerYcbcrConversionInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSamplerYcbcrConversion      conversion;
+--   > } VkSamplerYcbcrConversionInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSamplerYcbcrConversionInfo.html VkSamplerYcbcrConversionInfo registry at www.khronos.org>
+data VkSamplerYcbcrConversionInfo = VkSamplerYcbcrConversionInfo## Addr##
+                                                                  ByteArray##
+
+instance Eq VkSamplerYcbcrConversionInfo where
+        (VkSamplerYcbcrConversionInfo## a _) ==
+          x@(VkSamplerYcbcrConversionInfo## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkSamplerYcbcrConversionInfo where
+        (VkSamplerYcbcrConversionInfo## a _) `compare`
+          x@(VkSamplerYcbcrConversionInfo## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkSamplerYcbcrConversionInfo where
+        unsafeAddr (VkSamplerYcbcrConversionInfo## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkSamplerYcbcrConversionInfo## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkSamplerYcbcrConversionInfo##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfoKHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfoKHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfoKHR.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfoKHR
+       (VkSamplerYcbcrConversionInfo(..), VkSamplerYcbcrConversionInfoKHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfo (VkSamplerYcbcrConversionInfo (..))
+
+-- | Alias for `VkSamplerYcbcrConversionInfo`
+type VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfoKHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSamplerYcbcrConversionInfoKHR.hsc
+++ /dev/null
@@ -1,242 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfoKHR
-       (VkSamplerYcbcrConversionInfoKHR(..)) where
-import           Foreign.Storable                                   (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType         (VkStructureType)
-import           Graphics.Vulkan.Types.Handles                      (VkSamplerYcbcrConversionKHR)
-import           Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo (VkImageViewCreateInfo)
-import           Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo   (VkSamplerCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkSamplerYcbcrConversionInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSamplerYcbcrConversionKHR      conversion;
---   > } VkSamplerYcbcrConversionInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSamplerYcbcrConversionInfoKHR.html VkSamplerYcbcrConversionInfoKHR registry at www.khronos.org>
-data VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfoKHR## Addr##
-                                                                        ByteArray##
-
-instance Eq VkSamplerYcbcrConversionInfoKHR where
-        (VkSamplerYcbcrConversionInfoKHR## a _) ==
-          x@(VkSamplerYcbcrConversionInfoKHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerYcbcrConversionInfoKHR where
-        (VkSamplerYcbcrConversionInfoKHR## a _) `compare`
-          x@(VkSamplerYcbcrConversionInfoKHR## b _) = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerYcbcrConversionInfoKHR where
-        sizeOf ~_ = #{size VkSamplerYcbcrConversionInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerYcbcrConversionInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkSamplerYcbcrConversionInfoKHR where
-        unsafeAddr (VkSamplerYcbcrConversionInfoKHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkSamplerYcbcrConversionInfoKHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkSamplerYcbcrConversionInfoKHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkSamplerYcbcrConversionInfoKHR where
-        type StructFields VkSamplerYcbcrConversionInfoKHR =
-             '["sType", "pNext", "conversion"] -- ' closing tick for hsc2hs
-        type CUnionType VkSamplerYcbcrConversionInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerYcbcrConversionInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerYcbcrConversionInfoKHR =
-             '[VkSamplerCreateInfo, VkImageViewCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkSamplerYcbcrConversionInfoKHR where
-        type VkSTypeMType VkSamplerYcbcrConversionInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerYcbcrConversionInfoKHR where
-        type FieldType "sType" VkSamplerYcbcrConversionInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkSamplerYcbcrConversionInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSamplerYcbcrConversionInfoKHR =
-             #{offset VkSamplerYcbcrConversionInfoKHR, sType}
-        type FieldIsArray "sType" VkSamplerYcbcrConversionInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionInfoKHR, sType}
-
-instance CanReadField "sType" VkSamplerYcbcrConversionInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkSamplerYcbcrConversionInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkSamplerYcbcrConversionInfoKHR where
-        type VkPNextMType VkSamplerYcbcrConversionInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerYcbcrConversionInfoKHR where
-        type FieldType "pNext" VkSamplerYcbcrConversionInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkSamplerYcbcrConversionInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSamplerYcbcrConversionInfoKHR =
-             #{offset VkSamplerYcbcrConversionInfoKHR, pNext}
-        type FieldIsArray "pNext" VkSamplerYcbcrConversionInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionInfoKHR, pNext}
-
-instance CanReadField "pNext" VkSamplerYcbcrConversionInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkSamplerYcbcrConversionInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkConversion VkSamplerYcbcrConversionInfoKHR where
-        type VkConversionMType VkSamplerYcbcrConversionInfoKHR =
-             VkSamplerYcbcrConversionKHR
-
-        {-# NOINLINE vkConversion #-}
-        vkConversion x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionInfoKHR, conversion})
-
-        {-# INLINE vkConversionByteOffset #-}
-        vkConversionByteOffset ~_
-          = #{offset VkSamplerYcbcrConversionInfoKHR, conversion}
-
-        {-# INLINE readVkConversion #-}
-        readVkConversion p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionInfoKHR, conversion}
-
-        {-# INLINE writeVkConversion #-}
-        writeVkConversion p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionInfoKHR, conversion}
-
-instance {-# OVERLAPPING #-}
-         HasField "conversion" VkSamplerYcbcrConversionInfoKHR where
-        type FieldType "conversion" VkSamplerYcbcrConversionInfoKHR =
-             VkSamplerYcbcrConversionKHR
-        type FieldOptional "conversion" VkSamplerYcbcrConversionInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "conversion" VkSamplerYcbcrConversionInfoKHR =
-             #{offset VkSamplerYcbcrConversionInfoKHR, conversion}
-        type FieldIsArray "conversion" VkSamplerYcbcrConversionInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionInfoKHR, conversion}
-
-instance CanReadField "conversion" VkSamplerYcbcrConversionInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkConversion
-
-        {-# INLINE readField #-}
-        readField = readVkConversion
-
-instance CanWriteField "conversion" VkSamplerYcbcrConversionInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkConversion
-
-instance Show VkSamplerYcbcrConversionInfoKHR where
-        showsPrec d x
-          = showString "VkSamplerYcbcrConversionInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkConversion = " .
-                            showsPrec d (vkConversion x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
        (VkSemaphoreCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkSemaphoreCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSemaphoreCreateInfo {
@@ -23,7 +23,7 @@
 --   >     VkSemaphoreCreateFlags flags;
 --   > } VkSemaphoreCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSemaphoreCreateInfo.html VkSemaphoreCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSemaphoreCreateInfo.html VkSemaphoreCreateInfo registry at www.khronos.org>
 data VkSemaphoreCreateInfo = VkSemaphoreCreateInfo## Addr##
                                                     ByteArray##
 
@@ -72,26 +72,6 @@
         type ReturnedOnly VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSemaphoreCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSemaphoreCreateInfo where
-        type VkSTypeMType VkSemaphoreCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSemaphoreCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSemaphoreCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSemaphoreCreateInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkSemaphoreCreateInfo
          where
         type FieldType "sType" VkSemaphoreCreateInfo = VkStructureType
@@ -106,36 +86,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSemaphoreCreateInfo, sType}
 
-instance CanReadField "sType" VkSemaphoreCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSemaphoreCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkSemaphoreCreateInfo, sType}
 
-instance CanWriteField "sType" VkSemaphoreCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSemaphoreCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSemaphoreCreateInfo where
-        type VkPNextMType VkSemaphoreCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSemaphoreCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSemaphoreCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSemaphoreCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreCreateInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkSemaphoreCreateInfo
          where
@@ -151,36 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSemaphoreCreateInfo, pNext}
 
-instance CanReadField "pNext" VkSemaphoreCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkSemaphoreCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkSemaphoreCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkSemaphoreCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSemaphoreCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkSemaphoreCreateInfo where
-        type VkFlagsMType VkSemaphoreCreateInfo = VkSemaphoreCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSemaphoreCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSemaphoreCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSemaphoreCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkSemaphoreCreateInfo
          where
@@ -197,24 +149,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSemaphoreCreateInfo, flags}
 
-instance CanReadField "flags" VkSemaphoreCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkSemaphoreCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkSemaphoreCreateInfo, flags}
 
-instance CanWriteField "flags" VkSemaphoreCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkSemaphoreCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreCreateInfo, flags}
 
 instance Show VkSemaphoreCreateInfo where
         showsPrec d x
           = showString "VkSemaphoreCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " . showsPrec d (vkFlags x) . showChar '}'
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetFdInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetFdInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetFdInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetFdInfoKHR.hsc
@@ -5,32 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSemaphoreGetFdInfoKHR
        (VkSemaphoreGetFdInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
+import           Foreign.Storable                                              (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles
-                                                                                   (VkSemaphore)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                                 (VkSemaphore)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSemaphoreGetFdInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
 --   >     VkSemaphore                      semaphore;
---   >     VkExternalSemaphoreHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
 --   > } VkSemaphoreGetFdInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSemaphoreGetFdInfoKHR.html VkSemaphoreGetFdInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSemaphoreGetFdInfoKHR.html VkSemaphoreGetFdInfoKHR registry at www.khronos.org>
 data VkSemaphoreGetFdInfoKHR = VkSemaphoreGetFdInfoKHR## Addr##
                                                         ByteArray##
 
@@ -79,27 +74,6 @@
         type ReturnedOnly VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSemaphoreGetFdInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSemaphoreGetFdInfoKHR
-         where
-        type VkSTypeMType VkSemaphoreGetFdInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSemaphoreGetFdInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkSemaphoreGetFdInfoKHR where
         type FieldType "sType" VkSemaphoreGetFdInfoKHR = VkStructureType
@@ -114,37 +88,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSemaphoreGetFdInfoKHR, sType}
 
-instance CanReadField "sType" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSemaphoreGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, sType}
 
-instance CanWriteField "sType" VkSemaphoreGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSemaphoreGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSemaphoreGetFdInfoKHR
-         where
-        type VkPNextMType VkSemaphoreGetFdInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSemaphoreGetFdInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSemaphoreGetFdInfoKHR where
@@ -160,37 +119,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSemaphoreGetFdInfoKHR, pNext}
 
-instance CanReadField "pNext" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkSemaphoreGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkSemaphoreGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSemaphoreGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkSemaphore VkSemaphoreGetFdInfoKHR
-         where
-        type VkSemaphoreMType VkSemaphoreGetFdInfoKHR = VkSemaphore
-
-        {-# NOINLINE vkSemaphore #-}
-        vkSemaphore x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, semaphore})
-
-        {-# INLINE vkSemaphoreByteOffset #-}
-        vkSemaphoreByteOffset ~_
-          = #{offset VkSemaphoreGetFdInfoKHR, semaphore}
-
-        {-# INLINE readVkSemaphore #-}
-        readVkSemaphore p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, semaphore}
-
-        {-# INLINE writeVkSemaphore #-}
-        writeVkSemaphore p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, semaphore}
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "semaphore" VkSemaphoreGetFdInfoKHR where
@@ -207,43 +151,27 @@
         fieldOffset
           = #{offset VkSemaphoreGetFdInfoKHR, semaphore}
 
-instance CanReadField "semaphore" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSemaphore
-
-        {-# INLINE readField #-}
-        readField = readVkSemaphore
-
-instance CanWriteField "semaphore" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSemaphore
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkSemaphoreGetFdInfoKHR where
-        type VkHandleTypeMType VkSemaphoreGetFdInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "semaphore" VkSemaphoreGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkSemaphoreGetFdInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, semaphore})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, semaphore}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, handleType}
+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 =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
+             VkExternalSemaphoreHandleTypeFlagBits
         type FieldOptional "handleType" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkSemaphoreGetFdInfoKHR =
              #{offset VkSemaphoreGetFdInfoKHR, handleType}
@@ -256,28 +184,34 @@
         fieldOffset
           = #{offset VkSemaphoreGetFdInfoKHR, handleType}
 
-instance CanReadField "handleType" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkSemaphoreGetFdInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, handleType}
 
-instance CanWriteField "handleType" VkSemaphoreGetFdInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkSemaphoreGetFdInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, handleType}
 
 instance Show VkSemaphoreGetFdInfoKHR where
         showsPrec d x
           = showString "VkSemaphoreGetFdInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSemaphore = " .
-                            showsPrec d (vkSemaphore x) .
+                          showString "semaphore = " .
+                            showsPrec d (getField @"semaphore" x) .
                               showString ", " .
-                                showString "vkHandleType = " .
-                                  showsPrec d (vkHandleType x) . showChar '}'
+                                showString "handleType = " .
+                                  showsPrec d (getField @"handleType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetWin32HandleInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetWin32HandleInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetWin32HandleInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSemaphoreGetWin32HandleInfoKHR.hsc
@@ -5,32 +5,27 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSemaphoreGetWin32HandleInfoKHR
        (VkSemaphoreGetWin32HandleInfoKHR(..)) where
-import           Foreign.Storable
-                                                                                   (Storable (..))
+import           Foreign.Storable                                              (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
-                                                                                   (VkExternalSemaphoreHandleTypeFlagBitsKHR)
-import           Graphics.Vulkan.Types.Enum.VkStructureType
-                                                                                   (VkStructureType)
-import           Graphics.Vulkan.Types.Handles
-                                                                                   (VkSemaphore)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe
-                                                                                   (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags (VkExternalSemaphoreHandleTypeFlagBits)
+import           Graphics.Vulkan.Types.Enum.VkStructureType                    (VkStructureType)
+import           Graphics.Vulkan.Types.Handles                                 (VkSemaphore)
+import           System.IO.Unsafe                                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSemaphoreGetWin32HandleInfoKHR {
 --   >     VkStructureType sType;
 --   >     const void*                      pNext;
 --   >     VkSemaphore                      semaphore;
---   >     VkExternalSemaphoreHandleTypeFlagBitsKHR handleType;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
 --   > } VkSemaphoreGetWin32HandleInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSemaphoreGetWin32HandleInfoKHR.html VkSemaphoreGetWin32HandleInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSemaphoreGetWin32HandleInfoKHR.html VkSemaphoreGetWin32HandleInfoKHR registry at www.khronos.org>
 data VkSemaphoreGetWin32HandleInfoKHR = VkSemaphoreGetWin32HandleInfoKHR## Addr##
                                                                           ByteArray##
 
@@ -85,28 +80,6 @@
         type StructExtends VkSemaphoreGetWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkSemaphoreGetWin32HandleInfoKHR where
-        type VkSTypeMType VkSemaphoreGetWin32HandleInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkSemaphoreGetWin32HandleInfoKHR where
         type FieldType "sType" VkSemaphoreGetWin32HandleInfoKHR =
              VkStructureType
@@ -123,39 +96,22 @@
         fieldOffset
           = #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
 
-instance CanReadField "sType" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkSemaphoreGetWin32HandleInfoKHR where
-        type VkPNextMType VkSemaphoreGetWin32HandleInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkSemaphoreGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSemaphoreGetWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSemaphoreGetWin32HandleInfoKHR where
@@ -173,40 +129,22 @@
         fieldOffset
           = #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
 
-instance CanReadField "pNext" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSemaphore VkSemaphoreGetWin32HandleInfoKHR where
-        type VkSemaphoreMType VkSemaphoreGetWin32HandleInfoKHR =
-             VkSemaphore
-
-        {-# NOINLINE vkSemaphore #-}
-        vkSemaphore x
+         CanReadField "pNext" VkSemaphoreGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore})
-
-        {-# INLINE vkSemaphoreByteOffset #-}
-        vkSemaphoreByteOffset ~_
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext})
 
-        {-# INLINE readVkSemaphore #-}
-        readVkSemaphore p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
 
-        {-# INLINE writeVkSemaphore #-}
-        writeVkSemaphore p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSemaphoreGetWin32HandleInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "semaphore" VkSemaphoreGetWin32HandleInfoKHR where
@@ -226,45 +164,27 @@
         fieldOffset
           = #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
 
-instance CanReadField "semaphore" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSemaphore
-
-        {-# INLINE readField #-}
-        readField = readVkSemaphore
-
-instance CanWriteField "semaphore" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSemaphore
-
 instance {-# OVERLAPPING #-}
-         HasVkHandleType VkSemaphoreGetWin32HandleInfoKHR where
-        type VkHandleTypeMType VkSemaphoreGetWin32HandleInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
-
-        {-# NOINLINE vkHandleType #-}
-        vkHandleType x
+         CanReadField "semaphore" VkSemaphoreGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType})
-
-        {-# INLINE vkHandleTypeByteOffset #-}
-        vkHandleTypeByteOffset ~_
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore})
 
-        {-# INLINE readVkHandleType #-}
-        readVkHandleType p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
 
-        {-# INLINE writeVkHandleType #-}
-        writeVkHandleType p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
+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 =
-             VkExternalSemaphoreHandleTypeFlagBitsKHR
+             VkExternalSemaphoreHandleTypeFlagBits
         type FieldOptional "handleType" VkSemaphoreGetWin32HandleInfoKHR =
              'False -- ' closing tick for hsc2hs
         type FieldOffset "handleType" VkSemaphoreGetWin32HandleInfoKHR =
@@ -279,31 +199,34 @@
         fieldOffset
           = #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
 
-instance CanReadField "handleType" VkSemaphoreGetWin32HandleInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkHandleType
+instance {-# OVERLAPPING #-}
+         CanReadField "handleType" VkSemaphoreGetWin32HandleInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType})
 
         {-# INLINE readField #-}
-        readField = readVkHandleType
+        readField p
+          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
 
-instance CanWriteField "handleType"
-           VkSemaphoreGetWin32HandleInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "handleType" VkSemaphoreGetWin32HandleInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHandleType
+        writeField p
+          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
 
 instance Show VkSemaphoreGetWin32HandleInfoKHR where
         showsPrec d x
           = showString "VkSemaphoreGetWin32HandleInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSemaphore = " .
-                            showsPrec d (vkSemaphore x) .
+                          showString "semaphore = " .
+                            showsPrec d (getField @"semaphore" x) .
                               showString ", " .
-                                showString "vkHandleType = " .
-                                  showsPrec d (vkHandleType x) . showChar '}'
+                                showString "handleType = " .
+                                  showsPrec d (getField @"handleType" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleCreateInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkShaderModuleCreateInfo
        (VkShaderModuleCreateInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkShaderModuleCreateFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkShaderModuleCreateInfo {
@@ -25,7 +25,7 @@
 --   >     const uint32_t*            pCode;
 --   > } VkShaderModuleCreateInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkShaderModuleCreateInfo.html VkShaderModuleCreateInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderModuleCreateInfo.html VkShaderModuleCreateInfo registry at www.khronos.org>
 data VkShaderModuleCreateInfo = VkShaderModuleCreateInfo## Addr##
                                                           ByteArray##
 
@@ -75,27 +75,6 @@
         type ReturnedOnly VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkShaderModuleCreateInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkShaderModuleCreateInfo
-         where
-        type VkSTypeMType VkShaderModuleCreateInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkShaderModuleCreateInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkShaderModuleCreateInfo where
         type FieldType "sType" VkShaderModuleCreateInfo = VkStructureType
@@ -110,37 +89,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkShaderModuleCreateInfo, sType}
 
-instance CanReadField "sType" VkShaderModuleCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkShaderModuleCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkShaderModuleCreateInfo, sType}
 
-instance CanWriteField "sType" VkShaderModuleCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkShaderModuleCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkShaderModuleCreateInfo
-         where
-        type VkPNextMType VkShaderModuleCreateInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkShaderModuleCreateInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleCreateInfo, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkShaderModuleCreateInfo where
@@ -156,38 +120,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkShaderModuleCreateInfo, pNext}
 
-instance CanReadField "pNext" VkShaderModuleCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkShaderModuleCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkShaderModuleCreateInfo, pNext}
 
-instance CanWriteField "pNext" VkShaderModuleCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkShaderModuleCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkShaderModuleCreateInfo
-         where
-        type VkFlagsMType VkShaderModuleCreateInfo =
-             VkShaderModuleCreateFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkShaderModuleCreateInfo, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, flags}
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleCreateInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkShaderModuleCreateInfo where
@@ -204,37 +152,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkShaderModuleCreateInfo, flags}
 
-instance CanReadField "flags" VkShaderModuleCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkShaderModuleCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkShaderModuleCreateInfo, flags}
 
-instance CanWriteField "flags" VkShaderModuleCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkShaderModuleCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkCodeSize VkShaderModuleCreateInfo
-         where
-        type VkCodeSizeMType VkShaderModuleCreateInfo = CSize
-
-        {-# NOINLINE vkCodeSize #-}
-        vkCodeSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, codeSize})
-
-        {-# INLINE vkCodeSizeByteOffset #-}
-        vkCodeSizeByteOffset ~_
-          = #{offset VkShaderModuleCreateInfo, codeSize}
-
-        {-# INLINE readVkCodeSize #-}
-        readVkCodeSize p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, codeSize}
-
-        {-# INLINE writeVkCodeSize #-}
-        writeVkCodeSize p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, codeSize}
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleCreateInfo, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "codeSize" VkShaderModuleCreateInfo where
@@ -251,37 +184,22 @@
         fieldOffset
           = #{offset VkShaderModuleCreateInfo, codeSize}
 
-instance CanReadField "codeSize" VkShaderModuleCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkCodeSize
+instance {-# OVERLAPPING #-}
+         CanReadField "codeSize" VkShaderModuleCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, codeSize})
 
         {-# INLINE readField #-}
-        readField = readVkCodeSize
+        readField p
+          = peekByteOff p #{offset VkShaderModuleCreateInfo, codeSize}
 
-instance CanWriteField "codeSize" VkShaderModuleCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "codeSize" VkShaderModuleCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkCodeSize
-
-instance {-# OVERLAPPING #-} HasVkPCode VkShaderModuleCreateInfo
-         where
-        type VkPCodeMType VkShaderModuleCreateInfo = Ptr Word32
-
-        {-# NOINLINE vkPCode #-}
-        vkPCode x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, pCode})
-
-        {-# INLINE vkPCodeByteOffset #-}
-        vkPCodeByteOffset ~_
-          = #{offset VkShaderModuleCreateInfo, pCode}
-
-        {-# INLINE readVkPCode #-}
-        readVkPCode p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, pCode}
-
-        {-# INLINE writeVkPCode #-}
-        writeVkPCode p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, pCode}
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleCreateInfo, codeSize}
 
 instance {-# OVERLAPPING #-}
          HasField "pCode" VkShaderModuleCreateInfo where
@@ -297,31 +215,37 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkShaderModuleCreateInfo, pCode}
 
-instance CanReadField "pCode" VkShaderModuleCreateInfo where
-        {-# INLINE getField #-}
-        getField = vkPCode
+instance {-# OVERLAPPING #-}
+         CanReadField "pCode" VkShaderModuleCreateInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, pCode})
 
         {-# INLINE readField #-}
-        readField = readVkPCode
+        readField p
+          = peekByteOff p #{offset VkShaderModuleCreateInfo, pCode}
 
-instance CanWriteField "pCode" VkShaderModuleCreateInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pCode" VkShaderModuleCreateInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPCode
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleCreateInfo, pCode}
 
 instance Show VkShaderModuleCreateInfo where
         showsPrec d x
           = showString "VkShaderModuleCreateInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkCodeSize = " .
-                                  showsPrec d (vkCodeSize x) .
+                                showString "codeSize = " .
+                                  showsPrec d (getField @"codeSize" x) .
                                     showString ", " .
-                                      showString "vkPCode = " .
-                                        showsPrec d (vkPCode x) . showChar '}'
+                                      showString "pCode = " .
+                                        showsPrec d (getField @"pCode" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleValidationCacheCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleValidationCacheCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleValidationCacheCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderModuleValidationCacheCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkShaderModuleValidationCacheCreateInfoEXT
        (VkShaderModuleValidationCacheCreateInfoEXT(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                         (VkValidationCacheEXT)
 import           Graphics.Vulkan.Types.Struct.VkShaderModuleCreateInfo (VkShaderModuleCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
@@ -24,7 +24,7 @@
 --   >     VkValidationCacheEXT    validationCache;
 --   > } VkShaderModuleValidationCacheCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html VkShaderModuleValidationCacheCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html VkShaderModuleValidationCacheCreateInfoEXT registry at www.khronos.org>
 data VkShaderModuleValidationCacheCreateInfoEXT = VkShaderModuleValidationCacheCreateInfoEXT## Addr##
                                                                                               ByteArray##
 
@@ -86,28 +86,6 @@
              '[VkShaderModuleCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkShaderModuleValidationCacheCreateInfoEXT where
-        type VkSTypeMType VkShaderModuleValidationCacheCreateInfoEXT =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkShaderModuleValidationCacheCreateInfoEXT where
         type FieldType "sType" VkShaderModuleValidationCacheCreateInfoEXT =
              VkStructureType
@@ -128,42 +106,24 @@
         fieldOffset
           = #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
 
-instance CanReadField "sType"
-           VkShaderModuleValidationCacheCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkShaderModuleValidationCacheCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSType
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
 
-instance CanWriteField "sType"
-           VkShaderModuleValidationCacheCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkShaderModuleValidationCacheCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkShaderModuleValidationCacheCreateInfoEXT where
-        type VkPNextMType VkShaderModuleValidationCacheCreateInfoEXT =
-             Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkShaderModuleValidationCacheCreateInfoEXT where
@@ -186,44 +146,24 @@
         fieldOffset
           = #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
 
-instance CanReadField "pNext"
-           VkShaderModuleValidationCacheCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkShaderModuleValidationCacheCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkPNext
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
+        readField p
+          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
-         HasVkValidationCache VkShaderModuleValidationCacheCreateInfoEXT
+         CanWriteField "pNext" VkShaderModuleValidationCacheCreateInfoEXT
          where
-        type VkValidationCacheMType
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = VkValidationCacheEXT
-
-        {-# NOINLINE vkValidationCache #-}
-        vkValidationCache x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache})
-
-        {-# INLINE vkValidationCacheByteOffset #-}
-        vkValidationCacheByteOffset ~_
-          = #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
-
-        {-# INLINE readVkValidationCache #-}
-        readVkValidationCache p
-          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
-
-        {-# INLINE writeVkValidationCache #-}
-        writeVkValidationCache p
-          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "validationCache"
@@ -250,29 +190,35 @@
         fieldOffset
           = #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
 
-instance CanReadField "validationCache"
+instance {-# OVERLAPPING #-}
+         CanReadField "validationCache"
            VkShaderModuleValidationCacheCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkValidationCache
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache})
 
         {-# INLINE readField #-}
-        readField = readVkValidationCache
+        readField p
+          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
 
-instance CanWriteField "validationCache"
+instance {-# OVERLAPPING #-}
+         CanWriteField "validationCache"
            VkShaderModuleValidationCacheCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkValidationCache
+        writeField p
+          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
 
 instance Show VkShaderModuleValidationCacheCreateInfoEXT where
         showsPrec d x
           = showString "VkShaderModuleValidationCacheCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkValidationCache = " .
-                            showsPrec d (vkValidationCache x) . showChar '}'
+                          showString "validationCache = " .
+                            showsPrec d (getField @"validationCache" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderResourceUsageAMD.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderResourceUsageAMD.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderResourceUsageAMD.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderResourceUsageAMD.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkShaderResourceUsageAMD
        (VkShaderResourceUsageAMD(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkShaderResourceUsageAMD {
 --   >     uint32_t numUsedVgprs;
@@ -23,7 +23,7 @@
 --   >     size_t scratchMemUsageInBytes;
 --   > } VkShaderResourceUsageAMD;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkShaderResourceUsageAMD.html VkShaderResourceUsageAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderResourceUsageAMD.html VkShaderResourceUsageAMD registry at www.khronos.org>
 data VkShaderResourceUsageAMD = VkShaderResourceUsageAMD## Addr##
                                                           ByteArray##
 
@@ -75,27 +75,6 @@
         type StructExtends VkShaderResourceUsageAMD = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkNumUsedVgprs VkShaderResourceUsageAMD where
-        type VkNumUsedVgprsMType VkShaderResourceUsageAMD = Word32
-
-        {-# NOINLINE vkNumUsedVgprs #-}
-        vkNumUsedVgprs x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, numUsedVgprs})
-
-        {-# INLINE vkNumUsedVgprsByteOffset #-}
-        vkNumUsedVgprsByteOffset ~_
-          = #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-
-        {-# INLINE readVkNumUsedVgprs #-}
-        readVkNumUsedVgprs p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-
-        {-# INLINE writeVkNumUsedVgprs #-}
-        writeVkNumUsedVgprs p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-
-instance {-# OVERLAPPING #-}
          HasField "numUsedVgprs" VkShaderResourceUsageAMD where
         type FieldType "numUsedVgprs" VkShaderResourceUsageAMD = Word32
         type FieldOptional "numUsedVgprs" VkShaderResourceUsageAMD = 'False -- ' closing tick for hsc2hs
@@ -110,33 +89,22 @@
         fieldOffset
           = #{offset VkShaderResourceUsageAMD, numUsedVgprs}
 
-instance CanReadField "numUsedVgprs" VkShaderResourceUsageAMD where
-        {-# INLINE getField #-}
-        getField = vkNumUsedVgprs
-
-        {-# INLINE readField #-}
-        readField = readVkNumUsedVgprs
-
 instance {-# OVERLAPPING #-}
-         HasVkNumUsedSgprs VkShaderResourceUsageAMD where
-        type VkNumUsedSgprsMType VkShaderResourceUsageAMD = Word32
-
-        {-# NOINLINE vkNumUsedSgprs #-}
-        vkNumUsedSgprs x
+         CanReadField "numUsedVgprs" VkShaderResourceUsageAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, numUsedSgprs})
-
-        {-# INLINE vkNumUsedSgprsByteOffset #-}
-        vkNumUsedSgprsByteOffset ~_
-          = #{offset VkShaderResourceUsageAMD, numUsedSgprs}
+              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, numUsedVgprs})
 
-        {-# INLINE readVkNumUsedSgprs #-}
-        readVkNumUsedSgprs p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, numUsedSgprs}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderResourceUsageAMD, numUsedVgprs}
 
-        {-# INLINE writeVkNumUsedSgprs #-}
-        writeVkNumUsedSgprs p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, numUsedSgprs}
+instance {-# OVERLAPPING #-}
+         CanWriteField "numUsedVgprs" VkShaderResourceUsageAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderResourceUsageAMD, numUsedVgprs}
 
 instance {-# OVERLAPPING #-}
          HasField "numUsedSgprs" VkShaderResourceUsageAMD where
@@ -153,34 +121,22 @@
         fieldOffset
           = #{offset VkShaderResourceUsageAMD, numUsedSgprs}
 
-instance CanReadField "numUsedSgprs" VkShaderResourceUsageAMD where
-        {-# INLINE getField #-}
-        getField = vkNumUsedSgprs
-
-        {-# INLINE readField #-}
-        readField = readVkNumUsedSgprs
-
 instance {-# OVERLAPPING #-}
-         HasVkLdsSizePerLocalWorkGroup VkShaderResourceUsageAMD where
-        type VkLdsSizePerLocalWorkGroupMType VkShaderResourceUsageAMD =
-             Word32
-
-        {-# NOINLINE vkLdsSizePerLocalWorkGroup #-}
-        vkLdsSizePerLocalWorkGroup x
+         CanReadField "numUsedSgprs" VkShaderResourceUsageAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup})
-
-        {-# INLINE vkLdsSizePerLocalWorkGroupByteOffset #-}
-        vkLdsSizePerLocalWorkGroupByteOffset ~_
-          = #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
+              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, numUsedSgprs})
 
-        {-# INLINE readVkLdsSizePerLocalWorkGroup #-}
-        readVkLdsSizePerLocalWorkGroup p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderResourceUsageAMD, numUsedSgprs}
 
-        {-# INLINE writeVkLdsSizePerLocalWorkGroup #-}
-        writeVkLdsSizePerLocalWorkGroup p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
+instance {-# OVERLAPPING #-}
+         CanWriteField "numUsedSgprs" VkShaderResourceUsageAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderResourceUsageAMD, numUsedSgprs}
 
 instance {-# OVERLAPPING #-}
          HasField "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD where
@@ -204,35 +160,24 @@
         fieldOffset
           = #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
 
-instance CanReadField "ldsSizePerLocalWorkGroup"
-           VkShaderResourceUsageAMD
+instance {-# OVERLAPPING #-}
+         CanReadField "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD
          where
-        {-# INLINE getField #-}
-        getField = vkLdsSizePerLocalWorkGroup
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup})
 
         {-# INLINE readField #-}
-        readField = readVkLdsSizePerLocalWorkGroup
+        readField p
+          = peekByteOff p #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
 
 instance {-# OVERLAPPING #-}
-         HasVkLdsUsageSizeInBytes VkShaderResourceUsageAMD where
-        type VkLdsUsageSizeInBytesMType VkShaderResourceUsageAMD = CSize
-
-        {-# NOINLINE vkLdsUsageSizeInBytes #-}
-        vkLdsUsageSizeInBytes x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes})
-
-        {-# INLINE vkLdsUsageSizeInBytesByteOffset #-}
-        vkLdsUsageSizeInBytesByteOffset ~_
-          = #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
-
-        {-# INLINE readVkLdsUsageSizeInBytes #-}
-        readVkLdsUsageSizeInBytes p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
-
-        {-# INLINE writeVkLdsUsageSizeInBytes #-}
-        writeVkLdsUsageSizeInBytes p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
+         CanWriteField "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
 
 instance {-# OVERLAPPING #-}
          HasField "ldsUsageSizeInBytes" VkShaderResourceUsageAMD where
@@ -252,35 +197,22 @@
         fieldOffset
           = #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
 
-instance CanReadField "ldsUsageSizeInBytes"
-           VkShaderResourceUsageAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkLdsUsageSizeInBytes
-
-        {-# INLINE readField #-}
-        readField = readVkLdsUsageSizeInBytes
-
 instance {-# OVERLAPPING #-}
-         HasVkScratchMemUsageInBytes VkShaderResourceUsageAMD where
-        type VkScratchMemUsageInBytesMType VkShaderResourceUsageAMD = CSize
-
-        {-# NOINLINE vkScratchMemUsageInBytes #-}
-        vkScratchMemUsageInBytes x
+         CanReadField "ldsUsageSizeInBytes" VkShaderResourceUsageAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes})
-
-        {-# INLINE vkScratchMemUsageInBytesByteOffset #-}
-        vkScratchMemUsageInBytesByteOffset ~_
-          = #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
+              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes})
 
-        {-# INLINE readVkScratchMemUsageInBytes #-}
-        readVkScratchMemUsageInBytes p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
 
-        {-# INLINE writeVkScratchMemUsageInBytes #-}
-        writeVkScratchMemUsageInBytes p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
+instance {-# OVERLAPPING #-}
+         CanWriteField "ldsUsageSizeInBytes" VkShaderResourceUsageAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
 
 instance {-# OVERLAPPING #-}
          HasField "scratchMemUsageInBytes" VkShaderResourceUsageAMD where
@@ -302,29 +234,40 @@
         fieldOffset
           = #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
 
-instance CanReadField "scratchMemUsageInBytes"
-           VkShaderResourceUsageAMD
+instance {-# OVERLAPPING #-}
+         CanReadField "scratchMemUsageInBytes" VkShaderResourceUsageAMD
          where
-        {-# INLINE getField #-}
-        getField = vkScratchMemUsageInBytes
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes})
 
         {-# INLINE readField #-}
-        readField = readVkScratchMemUsageInBytes
+        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 "vkNumUsedVgprs = " .
-                showsPrec d (vkNumUsedVgprs x) .
+              showString "numUsedVgprs = " .
+                showsPrec d (getField @"numUsedVgprs" x) .
                   showString ", " .
-                    showString "vkNumUsedSgprs = " .
-                      showsPrec d (vkNumUsedSgprs x) .
+                    showString "numUsedSgprs = " .
+                      showsPrec d (getField @"numUsedSgprs" x) .
                         showString ", " .
-                          showString "vkLdsSizePerLocalWorkGroup = " .
-                            showsPrec d (vkLdsSizePerLocalWorkGroup x) .
+                          showString "ldsSizePerLocalWorkGroup = " .
+                            showsPrec d (getField @"ldsSizePerLocalWorkGroup" x) .
                               showString ", " .
-                                showString "vkLdsUsageSizeInBytes = " .
-                                  showsPrec d (vkLdsUsageSizeInBytes x) .
+                                showString "ldsUsageSizeInBytes = " .
+                                  showsPrec d (getField @"ldsUsageSizeInBytes" x) .
                                     showString ", " .
-                                      showString "vkScratchMemUsageInBytes = " .
-                                        showsPrec d (vkScratchMemUsageInBytes x) . showChar '}'
+                                      showString "scratchMemUsageInBytes = " .
+                                        showsPrec d (getField @"scratchMemUsageInBytes" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderStatisticsInfoAMD.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderStatisticsInfoAMD.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkShaderStatisticsInfoAMD.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkShaderStatisticsInfoAMD.hsc
@@ -8,6 +8,7 @@
 {-# LANGUAGE PatternSynonyms       #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.VkShaderStatisticsInfoAMD
@@ -20,7 +21,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkShaderStageFlags         (VkShaderStageFlags)
 import           Graphics.Vulkan.Types.Struct.VkShaderResourceUsageAMD (VkShaderResourceUsageAMD)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkShaderStatisticsInfoAMD {
@@ -33,7 +33,7 @@
 --   >     uint32_t computeWorkGroupSize[3];
 --   > } VkShaderStatisticsInfoAMD;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkShaderStatisticsInfoAMD.html VkShaderStatisticsInfoAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderStatisticsInfoAMD.html VkShaderStatisticsInfoAMD registry at www.khronos.org>
 data VkShaderStatisticsInfoAMD = VkShaderStatisticsInfoAMD## Addr##
                                                             ByteArray##
 
@@ -86,28 +86,6 @@
         type StructExtends VkShaderStatisticsInfoAMD = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkShaderStageMask VkShaderStatisticsInfoAMD where
-        type VkShaderStageMaskMType VkShaderStatisticsInfoAMD =
-             VkShaderStageFlags
-
-        {-# NOINLINE vkShaderStageMask #-}
-        vkShaderStageMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, shaderStageMask})
-
-        {-# INLINE vkShaderStageMaskByteOffset #-}
-        vkShaderStageMaskByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-
-        {-# INLINE readVkShaderStageMask #-}
-        readVkShaderStageMask p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-
-        {-# INLINE writeVkShaderStageMask #-}
-        writeVkShaderStageMask p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-
-instance {-# OVERLAPPING #-}
          HasField "shaderStageMask" VkShaderStatisticsInfoAMD where
         type FieldType "shaderStageMask" VkShaderStatisticsInfoAMD =
              VkShaderStageFlags
@@ -125,35 +103,22 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
 
-instance CanReadField "shaderStageMask" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkShaderStageMask
-
-        {-# INLINE readField #-}
-        readField = readVkShaderStageMask
-
 instance {-# OVERLAPPING #-}
-         HasVkResourceUsage VkShaderStatisticsInfoAMD where
-        type VkResourceUsageMType VkShaderStatisticsInfoAMD =
-             VkShaderResourceUsageAMD
-
-        {-# NOINLINE vkResourceUsage #-}
-        vkResourceUsage x
+         CanReadField "shaderStageMask" VkShaderStatisticsInfoAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, resourceUsage})
-
-        {-# INLINE vkResourceUsageByteOffset #-}
-        vkResourceUsageByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, resourceUsage}
+              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, shaderStageMask})
 
-        {-# INLINE readVkResourceUsage #-}
-        readVkResourceUsage p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, resourceUsage}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
 
-        {-# INLINE writeVkResourceUsage #-}
-        writeVkResourceUsage p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, resourceUsage}
+instance {-# OVERLAPPING #-}
+         CanWriteField "shaderStageMask" VkShaderStatisticsInfoAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
 
 instance {-# OVERLAPPING #-}
          HasField "resourceUsage" VkShaderStatisticsInfoAMD where
@@ -173,34 +138,22 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, resourceUsage}
 
-instance CanReadField "resourceUsage" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkResourceUsage
-
-        {-# INLINE readField #-}
-        readField = readVkResourceUsage
-
 instance {-# OVERLAPPING #-}
-         HasVkNumPhysicalVgprs VkShaderStatisticsInfoAMD where
-        type VkNumPhysicalVgprsMType VkShaderStatisticsInfoAMD = Word32
-
-        {-# NOINLINE vkNumPhysicalVgprs #-}
-        vkNumPhysicalVgprs x
+         CanReadField "resourceUsage" VkShaderStatisticsInfoAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs})
-
-        {-# INLINE vkNumPhysicalVgprsByteOffset #-}
-        vkNumPhysicalVgprsByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
+              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, resourceUsage})
 
-        {-# INLINE readVkNumPhysicalVgprs #-}
-        readVkNumPhysicalVgprs p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, resourceUsage}
 
-        {-# INLINE writeVkNumPhysicalVgprs #-}
-        writeVkNumPhysicalVgprs p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
+instance {-# OVERLAPPING #-}
+         CanWriteField "resourceUsage" VkShaderStatisticsInfoAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, resourceUsage}
 
 instance {-# OVERLAPPING #-}
          HasField "numPhysicalVgprs" VkShaderStatisticsInfoAMD where
@@ -220,34 +173,22 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
 
-instance CanReadField "numPhysicalVgprs" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkNumPhysicalVgprs
-
-        {-# INLINE readField #-}
-        readField = readVkNumPhysicalVgprs
-
 instance {-# OVERLAPPING #-}
-         HasVkNumPhysicalSgprs VkShaderStatisticsInfoAMD where
-        type VkNumPhysicalSgprsMType VkShaderStatisticsInfoAMD = Word32
-
-        {-# NOINLINE vkNumPhysicalSgprs #-}
-        vkNumPhysicalSgprs x
+         CanReadField "numPhysicalVgprs" VkShaderStatisticsInfoAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs})
-
-        {-# INLINE vkNumPhysicalSgprsByteOffset #-}
-        vkNumPhysicalSgprsByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
+              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs})
 
-        {-# INLINE readVkNumPhysicalSgprs #-}
-        readVkNumPhysicalSgprs p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
 
-        {-# INLINE writeVkNumPhysicalSgprs #-}
-        writeVkNumPhysicalSgprs p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
+instance {-# OVERLAPPING #-}
+         CanWriteField "numPhysicalVgprs" VkShaderStatisticsInfoAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
 
 instance {-# OVERLAPPING #-}
          HasField "numPhysicalSgprs" VkShaderStatisticsInfoAMD where
@@ -267,34 +208,22 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
 
-instance CanReadField "numPhysicalSgprs" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkNumPhysicalSgprs
-
-        {-# INLINE readField #-}
-        readField = readVkNumPhysicalSgprs
-
 instance {-# OVERLAPPING #-}
-         HasVkNumAvailableVgprs VkShaderStatisticsInfoAMD where
-        type VkNumAvailableVgprsMType VkShaderStatisticsInfoAMD = Word32
-
-        {-# NOINLINE vkNumAvailableVgprs #-}
-        vkNumAvailableVgprs x
+         CanReadField "numPhysicalSgprs" VkShaderStatisticsInfoAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs})
-
-        {-# INLINE vkNumAvailableVgprsByteOffset #-}
-        vkNumAvailableVgprsByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
+              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs})
 
-        {-# INLINE readVkNumAvailableVgprs #-}
-        readVkNumAvailableVgprs p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
 
-        {-# INLINE writeVkNumAvailableVgprs #-}
-        writeVkNumAvailableVgprs p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
+instance {-# OVERLAPPING #-}
+         CanWriteField "numPhysicalSgprs" VkShaderStatisticsInfoAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
 
 instance {-# OVERLAPPING #-}
          HasField "numAvailableVgprs" VkShaderStatisticsInfoAMD where
@@ -314,34 +243,22 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
 
-instance CanReadField "numAvailableVgprs" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkNumAvailableVgprs
-
-        {-# INLINE readField #-}
-        readField = readVkNumAvailableVgprs
-
 instance {-# OVERLAPPING #-}
-         HasVkNumAvailableSgprs VkShaderStatisticsInfoAMD where
-        type VkNumAvailableSgprsMType VkShaderStatisticsInfoAMD = Word32
-
-        {-# NOINLINE vkNumAvailableSgprs #-}
-        vkNumAvailableSgprs x
+         CanReadField "numAvailableVgprs" VkShaderStatisticsInfoAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs})
-
-        {-# INLINE vkNumAvailableSgprsByteOffset #-}
-        vkNumAvailableSgprsByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
+              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs})
 
-        {-# INLINE readVkNumAvailableSgprs #-}
-        readVkNumAvailableSgprs p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
 
-        {-# INLINE writeVkNumAvailableSgprs #-}
-        writeVkNumAvailableSgprs p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
+instance {-# OVERLAPPING #-}
+         CanWriteField "numAvailableVgprs" VkShaderStatisticsInfoAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
 
 instance {-# OVERLAPPING #-}
          HasField "numAvailableSgprs" VkShaderStatisticsInfoAMD where
@@ -361,41 +278,22 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
 
-instance CanReadField "numAvailableSgprs" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkNumAvailableSgprs
-
-        {-# INLINE readField #-}
-        readField = readVkNumAvailableSgprs
-
 instance {-# OVERLAPPING #-}
-         HasVkComputeWorkGroupSizeArray VkShaderStatisticsInfoAMD where
-        type VkComputeWorkGroupSizeArrayMType VkShaderStatisticsInfoAMD =
-             Word32
-
-        {-# NOINLINE vkComputeWorkGroupSizeArray #-}
-        vkComputeWorkGroupSizeArray x idx
+         CanReadField "numAvailableSgprs" VkShaderStatisticsInfoAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x)
-                 (idx * sizeOf (undefined :: Word32) +
-                    #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}))
-
-        {-# INLINE vkComputeWorkGroupSizeArrayByteOffset #-}
-        vkComputeWorkGroupSizeArrayByteOffset ~_
-          = #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
+              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs})
 
-        {-# INLINE readVkComputeWorkGroupSizeArray #-}
-        readVkComputeWorkGroupSizeArray p idx
-          = peekByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize})
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
 
-        {-# INLINE writeVkComputeWorkGroupSizeArray #-}
-        writeVkComputeWorkGroupSizeArray p idx
-          = pokeByteOff p
-              (idx * sizeOf (undefined :: Word32) +
-                 #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize})
+instance {-# OVERLAPPING #-}
+         CanWriteField "numAvailableSgprs" VkShaderStatisticsInfoAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
 
 instance {-# OVERLAPPING #-}
          HasField "computeWorkGroupSize" VkShaderStatisticsInfoAMD where
@@ -415,7 +313,8 @@
         fieldOffset
           = #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
 
-instance (KnownNat idx,
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
           IndexInBounds "computeWorkGroupSize" idx
             VkShaderStatisticsInfoAMD) =>
          CanReadFieldArray "computeWorkGroupSize" idx
@@ -443,37 +342,91 @@
         fieldArrayLength = 3
 
         {-# INLINE getFieldArray #-}
-        getFieldArray x
-          = vkComputeWorkGroupSizeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        getFieldArray = f
+          where {-# NOINLINE f #-}
+                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+                off
+                  = #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
+                      +
+                      sizeOf (undefined :: Word32) *
+                        fromInteger (natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
 
         {-# INLINE readFieldArray #-}
-        readFieldArray x
-          = readVkComputeWorkGroupSizeArray x
-              (fromInteger $ natVal' (proxy## :: Proxy## idx)) -- ' closing tick for hsc2hs
+        readFieldArray p
+          = peekByteOff p
+              (#{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
 
+instance {-# OVERLAPPING #-}
+         (KnownNat idx,
+          IndexInBounds "computeWorkGroupSize" idx
+            VkShaderStatisticsInfoAMD) =>
+         CanWriteFieldArray "computeWorkGroupSize" idx
+           VkShaderStatisticsInfoAMD
+         where
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "computeWorkGroupSize" 0
+                         VkShaderStatisticsInfoAMD
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "computeWorkGroupSize" 1
+                         VkShaderStatisticsInfoAMD
+                       #-}
+
+        {-# SPECIALISE instance
+                       CanWriteFieldArray "computeWorkGroupSize" 2
+                         VkShaderStatisticsInfoAMD
+                       #-}
+
+        {-# INLINE writeFieldArray #-}
+        writeFieldArray p
+          = pokeByteOff p
+              (#{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
+                 +
+                 sizeOf (undefined :: Word32) *
+                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs
+
 instance Show VkShaderStatisticsInfoAMD where
         showsPrec d x
           = showString "VkShaderStatisticsInfoAMD {" .
-              showString "vkShaderStageMask = " .
-                showsPrec d (vkShaderStageMask x) .
+              showString "shaderStageMask = " .
+                showsPrec d (getField @"shaderStageMask" x) .
                   showString ", " .
-                    showString "vkResourceUsage = " .
-                      showsPrec d (vkResourceUsage x) .
+                    showString "resourceUsage = " .
+                      showsPrec d (getField @"resourceUsage" x) .
                         showString ", " .
-                          showString "vkNumPhysicalVgprs = " .
-                            showsPrec d (vkNumPhysicalVgprs x) .
+                          showString "numPhysicalVgprs = " .
+                            showsPrec d (getField @"numPhysicalVgprs" x) .
                               showString ", " .
-                                showString "vkNumPhysicalSgprs = " .
-                                  showsPrec d (vkNumPhysicalSgprs x) .
+                                showString "numPhysicalSgprs = " .
+                                  showsPrec d (getField @"numPhysicalSgprs" x) .
                                     showString ", " .
-                                      showString "vkNumAvailableVgprs = " .
-                                        showsPrec d (vkNumAvailableVgprs x) .
+                                      showString "numAvailableVgprs = " .
+                                        showsPrec d (getField @"numAvailableVgprs" x) .
                                           showString ", " .
-                                            showString "vkNumAvailableSgprs = " .
-                                              showsPrec d (vkNumAvailableSgprs x) .
+                                            showString "numAvailableSgprs = " .
+                                              showsPrec d (getField @"numAvailableSgprs" x) .
                                                 showString ", " .
-                                                  showString "vkComputeWorkGroupSizeArray = [" .
-                                                    showsPrec d
-                                                      (map (vkComputeWorkGroupSizeArray x) [1 .. 3])
-                                                      . showChar ']' . showChar '}'
+                                                  (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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSharedPresentSurfaceCapabilitiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSharedPresentSurfaceCapabilitiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSharedPresentSurfaceCapabilitiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSharedPresentSurfaceCapabilitiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSharedPresentSurfaceCapabilitiesKHR
        (VkSharedPresentSurfaceCapabilitiesKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkImageUsageFlags           (VkImageUsageFlags)
 import           Graphics.Vulkan.Types.Enum.VkStructureType             (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkSurfaceCapabilities2KHR (VkSurfaceCapabilities2KHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
@@ -24,7 +24,7 @@
 --   >     VkImageUsageFlags sharedPresentSupportedUsageFlags;
 --   > } VkSharedPresentSurfaceCapabilitiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html VkSharedPresentSurfaceCapabilitiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html VkSharedPresentSurfaceCapabilitiesKHR registry at www.khronos.org>
 data VkSharedPresentSurfaceCapabilitiesKHR = VkSharedPresentSurfaceCapabilitiesKHR## Addr##
                                                                                     ByteArray##
 
@@ -82,28 +82,6 @@
              '[VkSurfaceCapabilities2KHR] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkSharedPresentSurfaceCapabilitiesKHR where
-        type VkSTypeMType VkSharedPresentSurfaceCapabilitiesKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkSharedPresentSurfaceCapabilitiesKHR where
         type FieldType "sType" VkSharedPresentSurfaceCapabilitiesKHR =
              VkStructureType
@@ -121,34 +99,22 @@
         fieldOffset
           = #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
 
-instance CanReadField "sType" VkSharedPresentSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkSharedPresentSurfaceCapabilitiesKHR where
-        type VkPNextMType VkSharedPresentSurfaceCapabilitiesKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkSharedPresentSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSharedPresentSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSharedPresentSurfaceCapabilitiesKHR where
@@ -168,38 +134,22 @@
         fieldOffset
           = #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
 
-instance CanReadField "pNext" VkSharedPresentSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSharedPresentSupportedUsageFlags
-           VkSharedPresentSurfaceCapabilitiesKHR
-         where
-        type VkSharedPresentSupportedUsageFlagsMType
-               VkSharedPresentSurfaceCapabilitiesKHR
-             = VkImageUsageFlags
-
-        {-# NOINLINE vkSharedPresentSupportedUsageFlags #-}
-        vkSharedPresentSupportedUsageFlags x
+         CanReadField "pNext" VkSharedPresentSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags})
-
-        {-# INLINE vkSharedPresentSupportedUsageFlagsByteOffset #-}
-        vkSharedPresentSupportedUsageFlagsByteOffset ~_
-          = #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
+              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext})
 
-        {-# INLINE readVkSharedPresentSupportedUsageFlags #-}
-        readVkSharedPresentSupportedUsageFlags p
-          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
 
-        {-# INLINE writeVkSharedPresentSupportedUsageFlags #-}
-        writeVkSharedPresentSupportedUsageFlags p
-          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSharedPresentSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "sharedPresentSupportedUsageFlags"
@@ -226,23 +176,36 @@
         fieldOffset
           = #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
 
-instance CanReadField "sharedPresentSupportedUsageFlags"
+instance {-# OVERLAPPING #-}
+         CanReadField "sharedPresentSupportedUsageFlags"
            VkSharedPresentSurfaceCapabilitiesKHR
          where
-        {-# INLINE getField #-}
-        getField = vkSharedPresentSupportedUsageFlags
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags})
 
         {-# INLINE readField #-}
-        readField = readVkSharedPresentSupportedUsageFlags
+        readField p
+          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
 
+instance {-# OVERLAPPING #-}
+         CanWriteField "sharedPresentSupportedUsageFlags"
+           VkSharedPresentSurfaceCapabilitiesKHR
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
+
 instance Show VkSharedPresentSurfaceCapabilitiesKHR where
         showsPrec d x
           = showString "VkSharedPresentSurfaceCapabilitiesKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSharedPresentSupportedUsageFlags = " .
-                            showsPrec d (vkSharedPresentSupportedUsageFlags x) . showChar '}'
+                          showString "sharedPresentSupportedUsageFlags = " .
+                            showsPrec d (getField @"sharedPresentSupportedUsageFlags" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseBufferMemoryBindInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseBufferMemoryBindInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseBufferMemoryBindInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseBufferMemoryBindInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo
        (VkSparseBufferMemoryBindInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Handles                   (VkBuffer)
 import           Graphics.Vulkan.Types.Struct.VkSparseMemoryBind (VkSparseMemoryBind)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseBufferMemoryBindInfo {
@@ -23,7 +23,7 @@
 --   >     const VkSparseMemoryBind* pBinds;
 --   > } VkSparseBufferMemoryBindInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseBufferMemoryBindInfo.html VkSparseBufferMemoryBindInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseBufferMemoryBindInfo.html VkSparseBufferMemoryBindInfo registry at www.khronos.org>
 data VkSparseBufferMemoryBindInfo = VkSparseBufferMemoryBindInfo## Addr##
                                                                   ByteArray##
 
@@ -77,27 +77,6 @@
         type StructExtends VkSparseBufferMemoryBindInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkBuffer VkSparseBufferMemoryBindInfo where
-        type VkBufferMType VkSparseBufferMemoryBindInfo = VkBuffer
-
-        {-# NOINLINE vkBuffer #-}
-        vkBuffer x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, buffer})
-
-        {-# INLINE vkBufferByteOffset #-}
-        vkBufferByteOffset ~_
-          = #{offset VkSparseBufferMemoryBindInfo, buffer}
-
-        {-# INLINE readVkBuffer #-}
-        readVkBuffer p
-          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, buffer}
-
-        {-# INLINE writeVkBuffer #-}
-        writeVkBuffer p
-          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, buffer}
-
-instance {-# OVERLAPPING #-}
          HasField "buffer" VkSparseBufferMemoryBindInfo where
         type FieldType "buffer" VkSparseBufferMemoryBindInfo = VkBuffer
         type FieldOptional "buffer" VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
@@ -112,37 +91,22 @@
         fieldOffset
           = #{offset VkSparseBufferMemoryBindInfo, buffer}
 
-instance CanReadField "buffer" VkSparseBufferMemoryBindInfo where
-        {-# INLINE getField #-}
-        getField = vkBuffer
-
-        {-# INLINE readField #-}
-        readField = readVkBuffer
-
-instance CanWriteField "buffer" VkSparseBufferMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkBuffer
-
 instance {-# OVERLAPPING #-}
-         HasVkBindCount VkSparseBufferMemoryBindInfo where
-        type VkBindCountMType VkSparseBufferMemoryBindInfo = Word32
-
-        {-# NOINLINE vkBindCount #-}
-        vkBindCount x
+         CanReadField "buffer" VkSparseBufferMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, bindCount})
-
-        {-# INLINE vkBindCountByteOffset #-}
-        vkBindCountByteOffset ~_
-          = #{offset VkSparseBufferMemoryBindInfo, bindCount}
+              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, buffer})
 
-        {-# INLINE readVkBindCount #-}
-        readVkBindCount p
-          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, bindCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, buffer}
 
-        {-# INLINE writeVkBindCount #-}
-        writeVkBindCount p
-          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, bindCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "buffer" VkSparseBufferMemoryBindInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, buffer}
 
 instance {-# OVERLAPPING #-}
          HasField "bindCount" VkSparseBufferMemoryBindInfo where
@@ -160,40 +124,22 @@
         fieldOffset
           = #{offset VkSparseBufferMemoryBindInfo, bindCount}
 
-instance CanReadField "bindCount" VkSparseBufferMemoryBindInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBindCount
-
-        {-# INLINE readField #-}
-        readField = readVkBindCount
-
-instance CanWriteField "bindCount" VkSparseBufferMemoryBindInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBindCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPBinds VkSparseBufferMemoryBindInfo where
-        type VkPBindsMType VkSparseBufferMemoryBindInfo =
-             Ptr VkSparseMemoryBind
-
-        {-# NOINLINE vkPBinds #-}
-        vkPBinds x
+         CanReadField "bindCount" VkSparseBufferMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, pBinds})
-
-        {-# INLINE vkPBindsByteOffset #-}
-        vkPBindsByteOffset ~_
-          = #{offset VkSparseBufferMemoryBindInfo, pBinds}
+              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, bindCount})
 
-        {-# INLINE readVkPBinds #-}
-        readVkPBinds p
-          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, pBinds}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, bindCount}
 
-        {-# INLINE writeVkPBinds #-}
-        writeVkPBinds p
-          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, pBinds}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bindCount" VkSparseBufferMemoryBindInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, bindCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pBinds" VkSparseBufferMemoryBindInfo where
@@ -211,24 +157,31 @@
         fieldOffset
           = #{offset VkSparseBufferMemoryBindInfo, pBinds}
 
-instance CanReadField "pBinds" VkSparseBufferMemoryBindInfo where
-        {-# INLINE getField #-}
-        getField = vkPBinds
+instance {-# OVERLAPPING #-}
+         CanReadField "pBinds" VkSparseBufferMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, pBinds})
 
         {-# INLINE readField #-}
-        readField = readVkPBinds
+        readField p
+          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, pBinds}
 
-instance CanWriteField "pBinds" VkSparseBufferMemoryBindInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pBinds" VkSparseBufferMemoryBindInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPBinds
+        writeField p
+          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, pBinds}
 
 instance Show VkSparseBufferMemoryBindInfo where
         showsPrec d x
           = showString "VkSparseBufferMemoryBindInfo {" .
-              showString "vkBuffer = " .
-                showsPrec d (vkBuffer x) .
+              showString "buffer = " .
+                showsPrec d (getField @"buffer" x) .
                   showString ", " .
-                    showString "vkBindCount = " .
-                      showsPrec d (vkBindCount x) .
+                    showString "bindCount = " .
+                      showsPrec d (getField @"bindCount" x) .
                         showString ", " .
-                          showString "vkPBinds = " . showsPrec d (vkPBinds x) . showChar '}'
+                          showString "pBinds = " .
+                            showsPrec d (getField @"pBinds" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
        (VkSparseImageFormatProperties(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkImageAspectFlags       (VkImageAspectFlags)
 import           Graphics.Vulkan.Types.Enum.VkSparseImageFormatFlags (VkSparseImageFormatFlags)
 import           Graphics.Vulkan.Types.Struct.VkExtent3D             (VkExtent3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseImageFormatProperties {
@@ -24,7 +24,7 @@
 --   >     VkSparseImageFormatFlags flags;
 --   > } VkSparseImageFormatProperties;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageFormatProperties.html VkSparseImageFormatProperties registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageFormatProperties.html VkSparseImageFormatProperties registry at www.khronos.org>
 data VkSparseImageFormatProperties = VkSparseImageFormatProperties## Addr##
                                                                     ByteArray##
 
@@ -78,28 +78,6 @@
         type StructExtends VkSparseImageFormatProperties = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkAspectMask VkSparseImageFormatProperties where
-        type VkAspectMaskMType VkSparseImageFormatProperties =
-             VkImageAspectFlags
-
-        {-# NOINLINE vkAspectMask #-}
-        vkAspectMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, aspectMask})
-
-        {-# INLINE vkAspectMaskByteOffset #-}
-        vkAspectMaskByteOffset ~_
-          = #{offset VkSparseImageFormatProperties, aspectMask}
-
-        {-# INLINE readVkAspectMask #-}
-        readVkAspectMask p
-          = peekByteOff p #{offset VkSparseImageFormatProperties, aspectMask}
-
-        {-# INLINE writeVkAspectMask #-}
-        writeVkAspectMask p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties, aspectMask}
-
-instance {-# OVERLAPPING #-}
          HasField "aspectMask" VkSparseImageFormatProperties where
         type FieldType "aspectMask" VkSparseImageFormatProperties =
              VkImageAspectFlags
@@ -117,35 +95,22 @@
         fieldOffset
           = #{offset VkSparseImageFormatProperties, aspectMask}
 
-instance CanReadField "aspectMask" VkSparseImageFormatProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkAspectMask
-
-        {-# INLINE readField #-}
-        readField = readVkAspectMask
-
 instance {-# OVERLAPPING #-}
-         HasVkImageGranularity VkSparseImageFormatProperties where
-        type VkImageGranularityMType VkSparseImageFormatProperties =
-             VkExtent3D
-
-        {-# NOINLINE vkImageGranularity #-}
-        vkImageGranularity x
+         CanReadField "aspectMask" VkSparseImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, imageGranularity})
-
-        {-# INLINE vkImageGranularityByteOffset #-}
-        vkImageGranularityByteOffset ~_
-          = #{offset VkSparseImageFormatProperties, imageGranularity}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, aspectMask})
 
-        {-# INLINE readVkImageGranularity #-}
-        readVkImageGranularity p
-          = peekByteOff p #{offset VkSparseImageFormatProperties, imageGranularity}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageFormatProperties, aspectMask}
 
-        {-# INLINE writeVkImageGranularity #-}
-        writeVkImageGranularity p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties, imageGranularity}
+instance {-# OVERLAPPING #-}
+         CanWriteField "aspectMask" VkSparseImageFormatProperties where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageFormatProperties, aspectMask}
 
 instance {-# OVERLAPPING #-}
          HasField "imageGranularity" VkSparseImageFormatProperties where
@@ -165,36 +130,23 @@
         fieldOffset
           = #{offset VkSparseImageFormatProperties, imageGranularity}
 
-instance CanReadField "imageGranularity"
-           VkSparseImageFormatProperties
-         where
-        {-# INLINE getField #-}
-        getField = vkImageGranularity
-
-        {-# INLINE readField #-}
-        readField = readVkImageGranularity
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkSparseImageFormatProperties where
-        type VkFlagsMType VkSparseImageFormatProperties =
-             VkSparseImageFormatFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "imageGranularity" VkSparseImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSparseImageFormatProperties, flags}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, imageGranularity})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSparseImageFormatProperties, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageFormatProperties, imageGranularity}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageGranularity" VkSparseImageFormatProperties
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageFormatProperties, imageGranularity}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkSparseImageFormatProperties where
@@ -212,20 +164,31 @@
         fieldOffset
           = #{offset VkSparseImageFormatProperties, flags}
 
-instance CanReadField "flags" VkSparseImageFormatProperties where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkSparseImageFormatProperties where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        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 "vkAspectMask = " .
-                showsPrec d (vkAspectMask x) .
+              showString "aspectMask = " .
+                showsPrec d (getField @"aspectMask" x) .
                   showString ", " .
-                    showString "vkImageGranularity = " .
-                      showsPrec d (vkImageGranularity x) .
+                    showString "imageGranularity = " .
+                      showsPrec d (getField @"imageGranularity" x) .
                         showString ", " .
-                          showString "vkFlags = " . showsPrec d (vkFlags x) . showChar '}'
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2.hsc
@@ -0,0 +1,189 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2
+       (VkSparseImageFormatProperties2(..)) where
+import           Foreign.Storable                                           (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties (VkSparseImageFormatProperties)
+import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
+
+-- | > typedef struct VkSparseImageFormatProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkSparseImageFormatProperties    properties;
+--   > } VkSparseImageFormatProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageFormatProperties2.html VkSparseImageFormatProperties2 registry at www.khronos.org>
+data VkSparseImageFormatProperties2 = VkSparseImageFormatProperties2## Addr##
+                                                                      ByteArray##
+
+instance Eq VkSparseImageFormatProperties2 where
+        (VkSparseImageFormatProperties2## a _) ==
+          x@(VkSparseImageFormatProperties2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkSparseImageFormatProperties2 where
+        (VkSparseImageFormatProperties2## a _) `compare`
+          x@(VkSparseImageFormatProperties2## b _) = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkSparseImageFormatProperties2 where
+        unsafeAddr (VkSparseImageFormatProperties2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkSparseImageFormatProperties2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkSparseImageFormatProperties2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2KHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2KHR
+       (VkSparseImageFormatProperties2(..),
+        VkSparseImageFormatProperties2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2 (VkSparseImageFormatProperties2 (..))
+
+-- | Alias for `VkSparseImageFormatProperties2`
+type VkSparseImageFormatProperties2KHR =
+     VkSparseImageFormatProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageFormatProperties2KHR.hsc
+++ /dev/null
@@ -1,233 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2KHR
-       (VkSparseImageFormatProperties2KHR(..)) where
-import           Foreign.Storable                                           (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                 (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties (VkSparseImageFormatProperties)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
-
--- | > typedef struct VkSparseImageFormatProperties2KHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkSparseImageFormatProperties    properties;
---   > } VkSparseImageFormatProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageFormatProperties2KHR.html VkSparseImageFormatProperties2KHR registry at www.khronos.org>
-data VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2KHR## Addr##
-                                                                            ByteArray##
-
-instance Eq VkSparseImageFormatProperties2KHR where
-        (VkSparseImageFormatProperties2KHR## a _) ==
-          x@(VkSparseImageFormatProperties2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageFormatProperties2KHR where
-        (VkSparseImageFormatProperties2KHR## a _) `compare`
-          x@(VkSparseImageFormatProperties2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageFormatProperties2KHR where
-        sizeOf ~_ = #{size VkSparseImageFormatProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageFormatProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkSparseImageFormatProperties2KHR where
-        unsafeAddr (VkSparseImageFormatProperties2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkSparseImageFormatProperties2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkSparseImageFormatProperties2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkSparseImageFormatProperties2KHR where
-        type StructFields VkSparseImageFormatProperties2KHR =
-             '["sType", "pNext", "properties"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageFormatProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageFormatProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageFormatProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkSparseImageFormatProperties2KHR where
-        type VkSTypeMType VkSparseImageFormatProperties2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSparseImageFormatProperties2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSparseImageFormatProperties2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSparseImageFormatProperties2KHR where
-        type FieldType "sType" VkSparseImageFormatProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkSparseImageFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSparseImageFormatProperties2KHR =
-             #{offset VkSparseImageFormatProperties2KHR, sType}
-        type FieldIsArray "sType" VkSparseImageFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties2KHR, sType}
-
-instance CanReadField "sType" VkSparseImageFormatProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkSparseImageFormatProperties2KHR where
-        type VkPNextMType VkSparseImageFormatProperties2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSparseImageFormatProperties2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSparseImageFormatProperties2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSparseImageFormatProperties2KHR where
-        type FieldType "pNext" VkSparseImageFormatProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkSparseImageFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSparseImageFormatProperties2KHR =
-             #{offset VkSparseImageFormatProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkSparseImageFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties2KHR, pNext}
-
-instance CanReadField "pNext" VkSparseImageFormatProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkProperties VkSparseImageFormatProperties2KHR where
-        type VkPropertiesMType VkSparseImageFormatProperties2KHR =
-             VkSparseImageFormatProperties
-
-        {-# NOINLINE vkProperties #-}
-        vkProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties2KHR, properties})
-
-        {-# INLINE vkPropertiesByteOffset #-}
-        vkPropertiesByteOffset ~_
-          = #{offset VkSparseImageFormatProperties2KHR, properties}
-
-        {-# INLINE readVkProperties #-}
-        readVkProperties p
-          = peekByteOff p #{offset VkSparseImageFormatProperties2KHR, properties}
-
-        {-# INLINE writeVkProperties #-}
-        writeVkProperties p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties2KHR, properties}
-
-instance {-# OVERLAPPING #-}
-         HasField "properties" VkSparseImageFormatProperties2KHR where
-        type FieldType "properties" VkSparseImageFormatProperties2KHR =
-             VkSparseImageFormatProperties
-        type FieldOptional "properties" VkSparseImageFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "properties" VkSparseImageFormatProperties2KHR =
-             #{offset VkSparseImageFormatProperties2KHR, properties}
-        type FieldIsArray "properties" VkSparseImageFormatProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties2KHR, properties}
-
-instance CanReadField "properties"
-           VkSparseImageFormatProperties2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkProperties
-
-        {-# INLINE readField #-}
-        readField = readVkProperties
-
-instance Show VkSparseImageFormatProperties2KHR where
-        showsPrec d x
-          = showString "VkSparseImageFormatProperties2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkProperties = " .
-                            showsPrec d (vkProperties x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBind.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBind.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBind.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBind.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind
        (VkSparseImageMemoryBind(..)) where
@@ -18,7 +19,6 @@
 import           Graphics.Vulkan.Types.Struct.VkExtent3D            (VkExtent3D)
 import           Graphics.Vulkan.Types.Struct.VkImageSubresource    (VkImageSubresource)
 import           Graphics.Vulkan.Types.Struct.VkOffset3D            (VkOffset3D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseImageMemoryBind {
@@ -30,7 +30,7 @@
 --   >     VkSparseMemoryBindFlagsflags;
 --   > } VkSparseImageMemoryBind;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageMemoryBind.html VkSparseImageMemoryBind registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageMemoryBind.html VkSparseImageMemoryBind registry at www.khronos.org>
 data VkSparseImageMemoryBind = VkSparseImageMemoryBind## Addr##
                                                         ByteArray##
 
@@ -81,28 +81,6 @@
         type StructExtends VkSparseImageMemoryBind = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSubresource VkSparseImageMemoryBind where
-        type VkSubresourceMType VkSparseImageMemoryBind =
-             VkImageSubresource
-
-        {-# NOINLINE vkSubresource #-}
-        vkSubresource x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, subresource})
-
-        {-# INLINE vkSubresourceByteOffset #-}
-        vkSubresourceByteOffset ~_
-          = #{offset VkSparseImageMemoryBind, subresource}
-
-        {-# INLINE readVkSubresource #-}
-        readVkSubresource p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, subresource}
-
-        {-# INLINE writeVkSubresource #-}
-        writeVkSubresource p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, subresource}
-
-instance {-# OVERLAPPING #-}
          HasField "subresource" VkSparseImageMemoryBind where
         type FieldType "subresource" VkSparseImageMemoryBind =
              VkImageSubresource
@@ -118,37 +96,22 @@
         fieldOffset
           = #{offset VkSparseImageMemoryBind, subresource}
 
-instance CanReadField "subresource" VkSparseImageMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkSubresource
+instance {-# OVERLAPPING #-}
+         CanReadField "subresource" VkSparseImageMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, subresource})
 
         {-# INLINE readField #-}
-        readField = readVkSubresource
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBind, subresource}
 
-instance CanWriteField "subresource" VkSparseImageMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "subresource" VkSparseImageMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkSubresource
-
-instance {-# OVERLAPPING #-} HasVkOffset VkSparseImageMemoryBind
-         where
-        type VkOffsetMType VkSparseImageMemoryBind = VkOffset3D
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkSparseImageMemoryBind, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, offset}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBind, subresource}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkSparseImageMemoryBind where
@@ -164,37 +127,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseImageMemoryBind, offset}
 
-instance CanReadField "offset" VkSparseImageMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkSparseImageMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBind, offset}
 
-instance CanWriteField "offset" VkSparseImageMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkSparseImageMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkExtent VkSparseImageMemoryBind
-         where
-        type VkExtentMType VkSparseImageMemoryBind = VkExtent3D
-
-        {-# NOINLINE vkExtent #-}
-        vkExtent x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, extent})
-
-        {-# INLINE vkExtentByteOffset #-}
-        vkExtentByteOffset ~_
-          = #{offset VkSparseImageMemoryBind, extent}
-
-        {-# INLINE readVkExtent #-}
-        readVkExtent p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, extent}
-
-        {-# INLINE writeVkExtent #-}
-        writeVkExtent p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, extent}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBind, offset}
 
 instance {-# OVERLAPPING #-}
          HasField "extent" VkSparseImageMemoryBind where
@@ -210,37 +158,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseImageMemoryBind, extent}
 
-instance CanReadField "extent" VkSparseImageMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkExtent
+instance {-# OVERLAPPING #-}
+         CanReadField "extent" VkSparseImageMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, extent})
 
         {-# INLINE readField #-}
-        readField = readVkExtent
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBind, extent}
 
-instance CanWriteField "extent" VkSparseImageMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "extent" VkSparseImageMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkExtent
-
-instance {-# OVERLAPPING #-} HasVkMemory VkSparseImageMemoryBind
-         where
-        type VkMemoryMType VkSparseImageMemoryBind = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkSparseImageMemoryBind, memory}
-
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, memory}
-
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, memory}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBind, extent}
 
 instance {-# OVERLAPPING #-}
          HasField "memory" VkSparseImageMemoryBind where
@@ -256,37 +189,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseImageMemoryBind, memory}
 
-instance CanReadField "memory" VkSparseImageMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkMemory
-
-        {-# INLINE readField #-}
-        readField = readVkMemory
-
-instance CanWriteField "memory" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
 instance {-# OVERLAPPING #-}
-         HasVkMemoryOffset VkSparseImageMemoryBind where
-        type VkMemoryOffsetMType VkSparseImageMemoryBind = VkDeviceSize
-
-        {-# NOINLINE vkMemoryOffset #-}
-        vkMemoryOffset x
+         CanReadField "memory" VkSparseImageMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, memoryOffset})
-
-        {-# INLINE vkMemoryOffsetByteOffset #-}
-        vkMemoryOffsetByteOffset ~_
-          = #{offset VkSparseImageMemoryBind, memoryOffset}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, memory})
 
-        {-# INLINE readVkMemoryOffset #-}
-        readVkMemoryOffset p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, memoryOffset}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBind, memory}
 
-        {-# INLINE writeVkMemoryOffset #-}
-        writeVkMemoryOffset p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, memoryOffset}
+instance {-# OVERLAPPING #-}
+         CanWriteField "memory" VkSparseImageMemoryBind where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBind, memory}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryOffset" VkSparseImageMemoryBind where
@@ -304,37 +222,22 @@
         fieldOffset
           = #{offset VkSparseImageMemoryBind, memoryOffset}
 
-instance CanReadField "memoryOffset" VkSparseImageMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkMemoryOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryOffset" VkSparseImageMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, memoryOffset})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryOffset
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBind, memoryOffset}
 
-instance CanWriteField "memoryOffset" VkSparseImageMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "memoryOffset" VkSparseImageMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkMemoryOffset
-
-instance {-# OVERLAPPING #-} HasVkFlags VkSparseImageMemoryBind
-         where
-        type VkFlagsMType VkSparseImageMemoryBind = VkSparseMemoryBindFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSparseImageMemoryBind, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, flags}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBind, memoryOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkSparseImageMemoryBind where
@@ -351,34 +254,40 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseImageMemoryBind, flags}
 
-instance CanReadField "flags" VkSparseImageMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkSparseImageMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBind, flags}
 
-instance CanWriteField "flags" VkSparseImageMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkSparseImageMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBind, flags}
 
 instance Show VkSparseImageMemoryBind where
         showsPrec d x
           = showString "VkSparseImageMemoryBind {" .
-              showString "vkSubresource = " .
-                showsPrec d (vkSubresource x) .
+              showString "subresource = " .
+                showsPrec d (getField @"subresource" x) .
                   showString ", " .
-                    showString "vkOffset = " .
-                      showsPrec d (vkOffset x) .
+                    showString "offset = " .
+                      showsPrec d (getField @"offset" x) .
                         showString ", " .
-                          showString "vkExtent = " .
-                            showsPrec d (vkExtent x) .
+                          showString "extent = " .
+                            showsPrec d (getField @"extent" x) .
                               showString ", " .
-                                showString "vkMemory = " .
-                                  showsPrec d (vkMemory x) .
+                                showString "memory = " .
+                                  showsPrec d (getField @"memory" x) .
                                     showString ", " .
-                                      showString "vkMemoryOffset = " .
-                                        showsPrec d (vkMemoryOffset x) .
+                                      showString "memoryOffset = " .
+                                        showsPrec d (getField @"memoryOffset" x) .
                                           showString ", " .
-                                            showString "vkFlags = " .
-                                              showsPrec d (vkFlags x) . showChar '}'
+                                            showString "flags = " .
+                                              showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBindInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBindInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBindInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryBindInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo
        (VkSparseImageMemoryBindInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Handles                        (VkImage)
 import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind (VkSparseImageMemoryBind)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseImageMemoryBindInfo {
@@ -23,7 +23,7 @@
 --   >     const VkSparseImageMemoryBind* pBinds;
 --   > } VkSparseImageMemoryBindInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageMemoryBindInfo.html VkSparseImageMemoryBindInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageMemoryBindInfo.html VkSparseImageMemoryBindInfo registry at www.khronos.org>
 data VkSparseImageMemoryBindInfo = VkSparseImageMemoryBindInfo## Addr##
                                                                 ByteArray##
 
@@ -75,27 +75,6 @@
         type ReturnedOnly VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSparseImageMemoryBindInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkImage VkSparseImageMemoryBindInfo
-         where
-        type VkImageMType VkSparseImageMemoryBindInfo = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkSparseImageMemoryBindInfo, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, image}
-
 instance {-# OVERLAPPING #-}
          HasField "image" VkSparseImageMemoryBindInfo where
         type FieldType "image" VkSparseImageMemoryBindInfo = VkImage
@@ -111,37 +90,22 @@
         fieldOffset
           = #{offset VkSparseImageMemoryBindInfo, image}
 
-instance CanReadField "image" VkSparseImageMemoryBindInfo where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image" VkSparseImageMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
 instance {-# OVERLAPPING #-}
-         HasVkBindCount VkSparseImageMemoryBindInfo where
-        type VkBindCountMType VkSparseImageMemoryBindInfo = Word32
-
-        {-# NOINLINE vkBindCount #-}
-        vkBindCount x
+         CanReadField "image" VkSparseImageMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, bindCount})
-
-        {-# INLINE vkBindCountByteOffset #-}
-        vkBindCountByteOffset ~_
-          = #{offset VkSparseImageMemoryBindInfo, bindCount}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, image})
 
-        {-# INLINE readVkBindCount #-}
-        readVkBindCount p
-          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, bindCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, image}
 
-        {-# INLINE writeVkBindCount #-}
-        writeVkBindCount p
-          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, bindCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "image" VkSparseImageMemoryBindInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, image}
 
 instance {-# OVERLAPPING #-}
          HasField "bindCount" VkSparseImageMemoryBindInfo where
@@ -158,39 +122,22 @@
         fieldOffset
           = #{offset VkSparseImageMemoryBindInfo, bindCount}
 
-instance CanReadField "bindCount" VkSparseImageMemoryBindInfo where
-        {-# INLINE getField #-}
-        getField = vkBindCount
-
-        {-# INLINE readField #-}
-        readField = readVkBindCount
-
-instance CanWriteField "bindCount" VkSparseImageMemoryBindInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBindCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPBinds VkSparseImageMemoryBindInfo where
-        type VkPBindsMType VkSparseImageMemoryBindInfo =
-             Ptr VkSparseImageMemoryBind
-
-        {-# NOINLINE vkPBinds #-}
-        vkPBinds x
+         CanReadField "bindCount" VkSparseImageMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, pBinds})
-
-        {-# INLINE vkPBindsByteOffset #-}
-        vkPBindsByteOffset ~_
-          = #{offset VkSparseImageMemoryBindInfo, pBinds}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, bindCount})
 
-        {-# INLINE readVkPBinds #-}
-        readVkPBinds p
-          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, pBinds}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, bindCount}
 
-        {-# INLINE writeVkPBinds #-}
-        writeVkPBinds p
-          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, pBinds}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bindCount" VkSparseImageMemoryBindInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, bindCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pBinds" VkSparseImageMemoryBindInfo where
@@ -208,24 +155,31 @@
         fieldOffset
           = #{offset VkSparseImageMemoryBindInfo, pBinds}
 
-instance CanReadField "pBinds" VkSparseImageMemoryBindInfo where
-        {-# INLINE getField #-}
-        getField = vkPBinds
+instance {-# OVERLAPPING #-}
+         CanReadField "pBinds" VkSparseImageMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, pBinds})
 
         {-# INLINE readField #-}
-        readField = readVkPBinds
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, pBinds}
 
-instance CanWriteField "pBinds" VkSparseImageMemoryBindInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pBinds" VkSparseImageMemoryBindInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPBinds
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, pBinds}
 
 instance Show VkSparseImageMemoryBindInfo where
         showsPrec d x
           = showString "VkSparseImageMemoryBindInfo {" .
-              showString "vkImage = " .
-                showsPrec d (vkImage x) .
+              showString "image = " .
+                showsPrec d (getField @"image" x) .
                   showString ", " .
-                    showString "vkBindCount = " .
-                      showsPrec d (vkBindCount x) .
+                    showString "bindCount = " .
+                      showsPrec d (getField @"bindCount" x) .
                         showString ", " .
-                          showString "vkPBinds = " . showsPrec d (vkPBinds x) . showChar '}'
+                          showString "pBinds = " .
+                            showsPrec d (getField @"pBinds" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements
        (VkSparseImageMemoryRequirements(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.BaseTypes                            (VkDeviceSize)
 import           Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties (VkSparseImageFormatProperties)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseImageMemoryRequirements {
@@ -25,7 +25,7 @@
 --   >     VkDeviceSize           imageMipTailStride;
 --   > } VkSparseImageMemoryRequirements;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageMemoryRequirements.html VkSparseImageMemoryRequirements registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageMemoryRequirements.html VkSparseImageMemoryRequirements registry at www.khronos.org>
 data VkSparseImageMemoryRequirements = VkSparseImageMemoryRequirements## Addr##
                                                                         ByteArray##
 
@@ -80,28 +80,6 @@
         type StructExtends VkSparseImageMemoryRequirements = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkFormatProperties VkSparseImageMemoryRequirements where
-        type VkFormatPropertiesMType VkSparseImageMemoryRequirements =
-             VkSparseImageFormatProperties
-
-        {-# NOINLINE vkFormatProperties #-}
-        vkFormatProperties x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, formatProperties})
-
-        {-# INLINE vkFormatPropertiesByteOffset #-}
-        vkFormatPropertiesByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements, formatProperties}
-
-        {-# INLINE readVkFormatProperties #-}
-        readVkFormatProperties p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, formatProperties}
-
-        {-# INLINE writeVkFormatProperties #-}
-        writeVkFormatProperties p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, formatProperties}
-
-instance {-# OVERLAPPING #-}
          HasField "formatProperties" VkSparseImageMemoryRequirements where
         type FieldType "formatProperties" VkSparseImageMemoryRequirements =
              VkSparseImageFormatProperties
@@ -122,36 +100,24 @@
         fieldOffset
           = #{offset VkSparseImageMemoryRequirements, formatProperties}
 
-instance CanReadField "formatProperties"
-           VkSparseImageMemoryRequirements
+instance {-# OVERLAPPING #-}
+         CanReadField "formatProperties" VkSparseImageMemoryRequirements
          where
-        {-# INLINE getField #-}
-        getField = vkFormatProperties
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, formatProperties})
 
         {-# INLINE readField #-}
-        readField = readVkFormatProperties
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryRequirements, formatProperties}
 
 instance {-# OVERLAPPING #-}
-         HasVkImageMipTailFirstLod VkSparseImageMemoryRequirements where
-        type VkImageMipTailFirstLodMType VkSparseImageMemoryRequirements =
-             Word32
-
-        {-# NOINLINE vkImageMipTailFirstLod #-}
-        vkImageMipTailFirstLod x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod})
-
-        {-# INLINE vkImageMipTailFirstLodByteOffset #-}
-        vkImageMipTailFirstLodByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
-
-        {-# INLINE readVkImageMipTailFirstLod #-}
-        readVkImageMipTailFirstLod p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
-
-        {-# INLINE writeVkImageMipTailFirstLod #-}
-        writeVkImageMipTailFirstLod p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
+         CanWriteField "formatProperties" VkSparseImageMemoryRequirements
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, formatProperties}
 
 instance {-# OVERLAPPING #-}
          HasField "imageMipTailFirstLod" VkSparseImageMemoryRequirements
@@ -177,36 +143,25 @@
         fieldOffset
           = #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
 
-instance CanReadField "imageMipTailFirstLod"
-           VkSparseImageMemoryRequirements
+instance {-# OVERLAPPING #-}
+         CanReadField "imageMipTailFirstLod" VkSparseImageMemoryRequirements
          where
-        {-# INLINE getField #-}
-        getField = vkImageMipTailFirstLod
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod})
 
         {-# INLINE readField #-}
-        readField = readVkImageMipTailFirstLod
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
 
 instance {-# OVERLAPPING #-}
-         HasVkImageMipTailSize VkSparseImageMemoryRequirements where
-        type VkImageMipTailSizeMType VkSparseImageMemoryRequirements =
-             VkDeviceSize
-
-        {-# NOINLINE vkImageMipTailSize #-}
-        vkImageMipTailSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailSize})
-
-        {-# INLINE vkImageMipTailSizeByteOffset #-}
-        vkImageMipTailSizeByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
-
-        {-# INLINE readVkImageMipTailSize #-}
-        readVkImageMipTailSize p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
-
-        {-# INLINE writeVkImageMipTailSize #-}
-        writeVkImageMipTailSize p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
+         CanWriteField "imageMipTailFirstLod"
+           VkSparseImageMemoryRequirements
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
 
 instance {-# OVERLAPPING #-}
          HasField "imageMipTailSize" VkSparseImageMemoryRequirements where
@@ -229,36 +184,24 @@
         fieldOffset
           = #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
 
-instance CanReadField "imageMipTailSize"
-           VkSparseImageMemoryRequirements
+instance {-# OVERLAPPING #-}
+         CanReadField "imageMipTailSize" VkSparseImageMemoryRequirements
          where
-        {-# INLINE getField #-}
-        getField = vkImageMipTailSize
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailSize})
 
         {-# INLINE readField #-}
-        readField = readVkImageMipTailSize
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
 
 instance {-# OVERLAPPING #-}
-         HasVkImageMipTailOffset VkSparseImageMemoryRequirements where
-        type VkImageMipTailOffsetMType VkSparseImageMemoryRequirements =
-             VkDeviceSize
-
-        {-# NOINLINE vkImageMipTailOffset #-}
-        vkImageMipTailOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailOffset})
-
-        {-# INLINE vkImageMipTailOffsetByteOffset #-}
-        vkImageMipTailOffsetByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
-
-        {-# INLINE readVkImageMipTailOffset #-}
-        readVkImageMipTailOffset p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
-
-        {-# INLINE writeVkImageMipTailOffset #-}
-        writeVkImageMipTailOffset p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
+         CanWriteField "imageMipTailSize" VkSparseImageMemoryRequirements
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
 
 instance {-# OVERLAPPING #-}
          HasField "imageMipTailOffset" VkSparseImageMemoryRequirements where
@@ -282,36 +225,24 @@
         fieldOffset
           = #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
 
-instance CanReadField "imageMipTailOffset"
-           VkSparseImageMemoryRequirements
+instance {-# OVERLAPPING #-}
+         CanReadField "imageMipTailOffset" VkSparseImageMemoryRequirements
          where
-        {-# INLINE getField #-}
-        getField = vkImageMipTailOffset
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailOffset})
 
         {-# INLINE readField #-}
-        readField = readVkImageMipTailOffset
+        readField p
+          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
 
 instance {-# OVERLAPPING #-}
-         HasVkImageMipTailStride VkSparseImageMemoryRequirements where
-        type VkImageMipTailStrideMType VkSparseImageMemoryRequirements =
-             VkDeviceSize
-
-        {-# NOINLINE vkImageMipTailStride #-}
-        vkImageMipTailStride x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailStride})
-
-        {-# INLINE vkImageMipTailStrideByteOffset #-}
-        vkImageMipTailStrideByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
-
-        {-# INLINE readVkImageMipTailStride #-}
-        readVkImageMipTailStride p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
-
-        {-# INLINE writeVkImageMipTailStride #-}
-        writeVkImageMipTailStride p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
+         CanWriteField "imageMipTailOffset" VkSparseImageMemoryRequirements
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
 
 instance {-# OVERLAPPING #-}
          HasField "imageMipTailStride" VkSparseImageMemoryRequirements where
@@ -335,29 +266,40 @@
         fieldOffset
           = #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
 
-instance CanReadField "imageMipTailStride"
-           VkSparseImageMemoryRequirements
+instance {-# OVERLAPPING #-}
+         CanReadField "imageMipTailStride" VkSparseImageMemoryRequirements
          where
-        {-# INLINE getField #-}
-        getField = vkImageMipTailStride
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailStride})
 
         {-# INLINE readField #-}
-        readField = readVkImageMipTailStride
+        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 "vkFormatProperties = " .
-                showsPrec d (vkFormatProperties x) .
+              showString "formatProperties = " .
+                showsPrec d (getField @"formatProperties" x) .
                   showString ", " .
-                    showString "vkImageMipTailFirstLod = " .
-                      showsPrec d (vkImageMipTailFirstLod x) .
+                    showString "imageMipTailFirstLod = " .
+                      showsPrec d (getField @"imageMipTailFirstLod" x) .
                         showString ", " .
-                          showString "vkImageMipTailSize = " .
-                            showsPrec d (vkImageMipTailSize x) .
+                          showString "imageMipTailSize = " .
+                            showsPrec d (getField @"imageMipTailSize" x) .
                               showString ", " .
-                                showString "vkImageMipTailOffset = " .
-                                  showsPrec d (vkImageMipTailOffset x) .
+                                showString "imageMipTailOffset = " .
+                                  showsPrec d (getField @"imageMipTailOffset" x) .
                                     showString ", " .
-                                      showString "vkImageMipTailStride = " .
-                                        showsPrec d (vkImageMipTailStride x) . showChar '}'
+                                      showString "imageMipTailStride = " .
+                                        showsPrec d (getField @"imageMipTailStride" x) .
+                                          showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2.hsc
@@ -0,0 +1,200 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2
+       (VkSparseImageMemoryRequirements2(..)) where
+import           Foreign.Storable                                             (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements (VkSparseImageMemoryRequirements)
+import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
+
+-- | > typedef struct VkSparseImageMemoryRequirements2 {
+--   >     VkStructureType sType;
+--   >     void*                                       pNext;
+--   >     VkSparseImageMemoryRequirements                                      memoryRequirements;
+--   > } VkSparseImageMemoryRequirements2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageMemoryRequirements2.html VkSparseImageMemoryRequirements2 registry at www.khronos.org>
+data VkSparseImageMemoryRequirements2 = VkSparseImageMemoryRequirements2## Addr##
+                                                                          ByteArray##
+
+instance Eq VkSparseImageMemoryRequirements2 where
+        (VkSparseImageMemoryRequirements2## a _) ==
+          x@(VkSparseImageMemoryRequirements2## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkSparseImageMemoryRequirements2 where
+        (VkSparseImageMemoryRequirements2## a _) `compare`
+          x@(VkSparseImageMemoryRequirements2## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim VkSparseImageMemoryRequirements2 where
+        unsafeAddr (VkSparseImageMemoryRequirements2## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkSparseImageMemoryRequirements2## _ b) = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkSparseImageMemoryRequirements2##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2KHR.hs b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2KHR.hs
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2KHR.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE Strict    #-}
+module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2KHR
+       (VkSparseImageMemoryRequirements2(..),
+        VkSparseImageMemoryRequirements2KHR)
+       where
+import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2 (VkSparseImageMemoryRequirements2 (..))
+
+-- | Alias for `VkSparseImageMemoryRequirements2`
+type VkSparseImageMemoryRequirements2KHR =
+     VkSparseImageMemoryRequirements2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2KHR.hsc
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageMemoryRequirements2KHR.hsc
+++ /dev/null
@@ -1,241 +0,0 @@
-#include "vulkan/vulkan.h"
-
-{-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2KHR
-       (VkSparseImageMemoryRequirements2KHR(..)) where
-import           Foreign.Storable                                             (Storable (..))
-import           GHC.Prim
-import           Graphics.Vulkan.Marshal
-import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.Enum.VkStructureType                   (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements (VkSparseImageMemoryRequirements)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                             (unsafeDupablePerformIO)
-
--- | > typedef struct VkSparseImageMemoryRequirements2KHR {
---   >     VkStructureType sType;
---   >     void*                                       pNext;
---   >     VkSparseImageMemoryRequirements                                      memoryRequirements;
---   > } VkSparseImageMemoryRequirements2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageMemoryRequirements2KHR.html VkSparseImageMemoryRequirements2KHR registry at www.khronos.org>
-data VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2KHR## Addr##
-                                                                                ByteArray##
-
-instance Eq VkSparseImageMemoryRequirements2KHR where
-        (VkSparseImageMemoryRequirements2KHR## a _) ==
-          x@(VkSparseImageMemoryRequirements2KHR## b _)
-          = EQ == cmpBytes## (sizeOf x) a b
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageMemoryRequirements2KHR where
-        (VkSparseImageMemoryRequirements2KHR## a _) `compare`
-          x@(VkSparseImageMemoryRequirements2KHR## b _)
-          = cmpBytes## (sizeOf x) a b
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageMemoryRequirements2KHR where
-        sizeOf ~_ = #{size VkSparseImageMemoryRequirements2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageMemoryRequirements2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshalPrim VkSparseImageMemoryRequirements2KHR
-         where
-        unsafeAddr (VkSparseImageMemoryRequirements2KHR## a _) = a
-
-        {-# INLINE unsafeAddr #-}
-        unsafeByteArray (VkSparseImageMemoryRequirements2KHR## _ b) = b
-
-        {-# INLINE unsafeByteArray #-}
-        unsafeFromByteArrayOffset off b
-          = VkSparseImageMemoryRequirements2KHR##
-              (plusAddr## (byteArrayContents## b) off)
-              b
-
-        {-# INLINE unsafeFromByteArrayOffset #-}
-
-instance VulkanMarshal VkSparseImageMemoryRequirements2KHR where
-        type StructFields VkSparseImageMemoryRequirements2KHR =
-             '["sType", "pNext", "memoryRequirements"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageMemoryRequirements2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageMemoryRequirements2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageMemoryRequirements2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkSparseImageMemoryRequirements2KHR where
-        type VkSTypeMType VkSparseImageMemoryRequirements2KHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSparseImageMemoryRequirements2KHR where
-        type FieldType "sType" VkSparseImageMemoryRequirements2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkSparseImageMemoryRequirements2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSparseImageMemoryRequirements2KHR =
-             #{offset VkSparseImageMemoryRequirements2KHR, sType}
-        type FieldIsArray "sType" VkSparseImageMemoryRequirements2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements2KHR, sType}
-
-instance CanReadField "sType" VkSparseImageMemoryRequirements2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-}
-         HasVkPNext VkSparseImageMemoryRequirements2KHR where
-        type VkPNextMType VkSparseImageMemoryRequirements2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements2KHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements2KHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSparseImageMemoryRequirements2KHR where
-        type FieldType "pNext" VkSparseImageMemoryRequirements2KHR =
-             Ptr Void
-        type FieldOptional "pNext" VkSparseImageMemoryRequirements2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSparseImageMemoryRequirements2KHR =
-             #{offset VkSparseImageMemoryRequirements2KHR, pNext}
-        type FieldIsArray "pNext" VkSparseImageMemoryRequirements2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements2KHR, pNext}
-
-instance CanReadField "pNext" VkSparseImageMemoryRequirements2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-}
-         HasVkMemoryRequirements VkSparseImageMemoryRequirements2KHR where
-        type VkMemoryRequirementsMType VkSparseImageMemoryRequirements2KHR
-             = VkSparseImageMemoryRequirements
-
-        {-# NOINLINE vkMemoryRequirements #-}
-        vkMemoryRequirements x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements2KHR, memoryRequirements})
-
-        {-# INLINE vkMemoryRequirementsByteOffset #-}
-        vkMemoryRequirementsByteOffset ~_
-          = #{offset VkSparseImageMemoryRequirements2KHR, memoryRequirements}
-
-        {-# INLINE readVkMemoryRequirements #-}
-        readVkMemoryRequirements p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements2KHR, memoryRequirements}
-
-        {-# INLINE writeVkMemoryRequirements #-}
-        writeVkMemoryRequirements p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements2KHR, memoryRequirements}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryRequirements" VkSparseImageMemoryRequirements2KHR
-         where
-        type FieldType "memoryRequirements"
-               VkSparseImageMemoryRequirements2KHR
-             = VkSparseImageMemoryRequirements
-        type FieldOptional "memoryRequirements"
-               VkSparseImageMemoryRequirements2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryRequirements"
-               VkSparseImageMemoryRequirements2KHR
-             =
-             #{offset VkSparseImageMemoryRequirements2KHR, memoryRequirements}
-        type FieldIsArray "memoryRequirements"
-               VkSparseImageMemoryRequirements2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements2KHR, memoryRequirements}
-
-instance CanReadField "memoryRequirements"
-           VkSparseImageMemoryRequirements2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMemoryRequirements
-
-        {-# INLINE readField #-}
-        readField = readVkMemoryRequirements
-
-instance Show VkSparseImageMemoryRequirements2KHR where
-        showsPrec d x
-          = showString "VkSparseImageMemoryRequirements2KHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
-                  showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
-                        showString ", " .
-                          showString "vkMemoryRequirements = " .
-                            showsPrec d (vkMemoryRequirements x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageOpaqueMemoryBindInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageOpaqueMemoryBindInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageOpaqueMemoryBindInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseImageOpaqueMemoryBindInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo
        (VkSparseImageOpaqueMemoryBindInfo(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Handles                   (VkImage)
 import           Graphics.Vulkan.Types.Struct.VkSparseMemoryBind (VkSparseMemoryBind)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseImageOpaqueMemoryBindInfo {
@@ -23,7 +23,7 @@
 --   >     const VkSparseMemoryBind* pBinds;
 --   > } VkSparseImageOpaqueMemoryBindInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html VkSparseImageOpaqueMemoryBindInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html VkSparseImageOpaqueMemoryBindInfo registry at www.khronos.org>
 data VkSparseImageOpaqueMemoryBindInfo = VkSparseImageOpaqueMemoryBindInfo## Addr##
                                                                             ByteArray##
 
@@ -78,27 +78,6 @@
         type StructExtends VkSparseImageOpaqueMemoryBindInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkImage VkSparseImageOpaqueMemoryBindInfo where
-        type VkImageMType VkSparseImageOpaqueMemoryBindInfo = VkImage
-
-        {-# NOINLINE vkImage #-}
-        vkImage x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, image})
-
-        {-# INLINE vkImageByteOffset #-}
-        vkImageByteOffset ~_
-          = #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-
-        {-# INLINE readVkImage #-}
-        readVkImage p
-          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-
-        {-# INLINE writeVkImage #-}
-        writeVkImage p
-          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
          HasField "image" VkSparseImageOpaqueMemoryBindInfo where
         type FieldType "image" VkSparseImageOpaqueMemoryBindInfo = VkImage
         type FieldOptional "image" VkSparseImageOpaqueMemoryBindInfo =
@@ -115,39 +94,22 @@
         fieldOffset
           = #{offset VkSparseImageOpaqueMemoryBindInfo, image}
 
-instance CanReadField "image" VkSparseImageOpaqueMemoryBindInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkImage
-
-        {-# INLINE readField #-}
-        readField = readVkImage
-
-instance CanWriteField "image" VkSparseImageOpaqueMemoryBindInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImage
-
 instance {-# OVERLAPPING #-}
-         HasVkBindCount VkSparseImageOpaqueMemoryBindInfo where
-        type VkBindCountMType VkSparseImageOpaqueMemoryBindInfo = Word32
-
-        {-# NOINLINE vkBindCount #-}
-        vkBindCount x
+         CanReadField "image" VkSparseImageOpaqueMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount})
-
-        {-# INLINE vkBindCountByteOffset #-}
-        vkBindCountByteOffset ~_
-          = #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, image})
 
-        {-# INLINE readVkBindCount #-}
-        readVkBindCount p
-          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, image}
 
-        {-# INLINE writeVkBindCount #-}
-        writeVkBindCount p
-          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "image" VkSparseImageOpaqueMemoryBindInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, image}
 
 instance {-# OVERLAPPING #-}
          HasField "bindCount" VkSparseImageOpaqueMemoryBindInfo where
@@ -167,41 +129,22 @@
         fieldOffset
           = #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
 
-instance CanReadField "bindCount" VkSparseImageOpaqueMemoryBindInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkBindCount
-
-        {-# INLINE readField #-}
-        readField = readVkBindCount
-
-instance CanWriteField "bindCount"
-           VkSparseImageOpaqueMemoryBindInfo
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBindCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPBinds VkSparseImageOpaqueMemoryBindInfo where
-        type VkPBindsMType VkSparseImageOpaqueMemoryBindInfo =
-             Ptr VkSparseMemoryBind
-
-        {-# NOINLINE vkPBinds #-}
-        vkPBinds x
+         CanReadField "bindCount" VkSparseImageOpaqueMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds})
-
-        {-# INLINE vkPBindsByteOffset #-}
-        vkPBindsByteOffset ~_
-          = #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount})
 
-        {-# INLINE readVkPBinds #-}
-        readVkPBinds p
-          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
 
-        {-# INLINE writeVkPBinds #-}
-        writeVkPBinds p
-          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
+instance {-# OVERLAPPING #-}
+         CanWriteField "bindCount" VkSparseImageOpaqueMemoryBindInfo where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pBinds" VkSparseImageOpaqueMemoryBindInfo where
@@ -221,26 +164,31 @@
         fieldOffset
           = #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
 
-instance CanReadField "pBinds" VkSparseImageOpaqueMemoryBindInfo
-         where
-        {-# INLINE getField #-}
-        getField = vkPBinds
+instance {-# OVERLAPPING #-}
+         CanReadField "pBinds" VkSparseImageOpaqueMemoryBindInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds})
 
         {-# INLINE readField #-}
-        readField = readVkPBinds
+        readField p
+          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
 
-instance CanWriteField "pBinds" VkSparseImageOpaqueMemoryBindInfo
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pBinds" VkSparseImageOpaqueMemoryBindInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPBinds
+        writeField p
+          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
 
 instance Show VkSparseImageOpaqueMemoryBindInfo where
         showsPrec d x
           = showString "VkSparseImageOpaqueMemoryBindInfo {" .
-              showString "vkImage = " .
-                showsPrec d (vkImage x) .
+              showString "image = " .
+                showsPrec d (getField @"image" x) .
                   showString ", " .
-                    showString "vkBindCount = " .
-                      showsPrec d (vkBindCount x) .
+                    showString "bindCount = " .
+                      showsPrec d (getField @"bindCount" x) .
                         showString ", " .
-                          showString "vkPBinds = " . showsPrec d (vkPBinds x) . showChar '}'
+                          showString "pBinds = " .
+                            showsPrec d (getField @"pBinds" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseMemoryBind.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseMemoryBind.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSparseMemoryBind.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSparseMemoryBind.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSparseMemoryBind
        (VkSparseMemoryBind(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.BaseTypes                    (VkDeviceSize)
 import           Graphics.Vulkan.Types.Enum.VkSparseMemoryBindFlags (VkSparseMemoryBindFlags)
 import           Graphics.Vulkan.Types.Handles                      (VkDeviceMemory)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                   (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSparseMemoryBind {
@@ -26,7 +26,7 @@
 --   >     VkSparseMemoryBindFlagsflags;
 --   > } VkSparseMemoryBind;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSparseMemoryBind.html VkSparseMemoryBind registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSparseMemoryBind.html VkSparseMemoryBind registry at www.khronos.org>
 data VkSparseMemoryBind = VkSparseMemoryBind## Addr## ByteArray##
 
 instance Eq VkSparseMemoryBind where
@@ -74,27 +74,6 @@
         type ReturnedOnly VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSparseMemoryBind = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkResourceOffset VkSparseMemoryBind
-         where
-        type VkResourceOffsetMType VkSparseMemoryBind = VkDeviceSize
-
-        {-# NOINLINE vkResourceOffset #-}
-        vkResourceOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, resourceOffset})
-
-        {-# INLINE vkResourceOffsetByteOffset #-}
-        vkResourceOffsetByteOffset ~_
-          = #{offset VkSparseMemoryBind, resourceOffset}
-
-        {-# INLINE readVkResourceOffset #-}
-        readVkResourceOffset p
-          = peekByteOff p #{offset VkSparseMemoryBind, resourceOffset}
-
-        {-# INLINE writeVkResourceOffset #-}
-        writeVkResourceOffset p
-          = pokeByteOff p #{offset VkSparseMemoryBind, resourceOffset}
-
 instance {-# OVERLAPPING #-}
          HasField "resourceOffset" VkSparseMemoryBind where
         type FieldType "resourceOffset" VkSparseMemoryBind = VkDeviceSize
@@ -110,36 +89,22 @@
         fieldOffset
           = #{offset VkSparseMemoryBind, resourceOffset}
 
-instance CanReadField "resourceOffset" VkSparseMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkResourceOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "resourceOffset" VkSparseMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, resourceOffset})
 
         {-# INLINE readField #-}
-        readField = readVkResourceOffset
+        readField p
+          = peekByteOff p #{offset VkSparseMemoryBind, resourceOffset}
 
-instance CanWriteField "resourceOffset" VkSparseMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "resourceOffset" VkSparseMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkResourceOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkSparseMemoryBind where
-        type VkSizeMType VkSparseMemoryBind = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkSparseMemoryBind, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkSparseMemoryBind, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkSparseMemoryBind, size}
+        writeField p
+          = pokeByteOff p #{offset VkSparseMemoryBind, resourceOffset}
 
 instance {-# OVERLAPPING #-} HasField "size" VkSparseMemoryBind
          where
@@ -155,36 +120,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseMemoryBind, size}
 
-instance CanReadField "size" VkSparseMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-} CanReadField "size" VkSparseMemoryBind
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkSparseMemoryBind, size}
 
-instance CanWriteField "size" VkSparseMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkSparseMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
-
-instance {-# OVERLAPPING #-} HasVkMemory VkSparseMemoryBind where
-        type VkMemoryMType VkSparseMemoryBind = VkDeviceMemory
-
-        {-# NOINLINE vkMemory #-}
-        vkMemory x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, memory})
-
-        {-# INLINE vkMemoryByteOffset #-}
-        vkMemoryByteOffset ~_
-          = #{offset VkSparseMemoryBind, memory}
-
-        {-# INLINE readVkMemory #-}
-        readVkMemory p
-          = peekByteOff p #{offset VkSparseMemoryBind, memory}
-
-        {-# INLINE writeVkMemory #-}
-        writeVkMemory p
-          = pokeByteOff p #{offset VkSparseMemoryBind, memory}
+        writeField p
+          = pokeByteOff p #{offset VkSparseMemoryBind, size}
 
 instance {-# OVERLAPPING #-} HasField "memory" VkSparseMemoryBind
          where
@@ -200,37 +151,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseMemoryBind, memory}
 
-instance CanReadField "memory" VkSparseMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkMemory
+instance {-# OVERLAPPING #-}
+         CanReadField "memory" VkSparseMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, memory})
 
         {-# INLINE readField #-}
-        readField = readVkMemory
+        readField p
+          = peekByteOff p #{offset VkSparseMemoryBind, memory}
 
-instance CanWriteField "memory" VkSparseMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "memory" VkSparseMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkMemory
-
-instance {-# OVERLAPPING #-} HasVkMemoryOffset VkSparseMemoryBind
-         where
-        type VkMemoryOffsetMType VkSparseMemoryBind = VkDeviceSize
-
-        {-# NOINLINE vkMemoryOffset #-}
-        vkMemoryOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, memoryOffset})
-
-        {-# INLINE vkMemoryOffsetByteOffset #-}
-        vkMemoryOffsetByteOffset ~_
-          = #{offset VkSparseMemoryBind, memoryOffset}
-
-        {-# INLINE readVkMemoryOffset #-}
-        readVkMemoryOffset p
-          = peekByteOff p #{offset VkSparseMemoryBind, memoryOffset}
-
-        {-# INLINE writeVkMemoryOffset #-}
-        writeVkMemoryOffset p
-          = pokeByteOff p #{offset VkSparseMemoryBind, memoryOffset}
+        writeField p
+          = pokeByteOff p #{offset VkSparseMemoryBind, memory}
 
 instance {-# OVERLAPPING #-}
          HasField "memoryOffset" VkSparseMemoryBind where
@@ -247,36 +183,22 @@
         fieldOffset
           = #{offset VkSparseMemoryBind, memoryOffset}
 
-instance CanReadField "memoryOffset" VkSparseMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkMemoryOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "memoryOffset" VkSparseMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, memoryOffset})
 
         {-# INLINE readField #-}
-        readField = readVkMemoryOffset
+        readField p
+          = peekByteOff p #{offset VkSparseMemoryBind, memoryOffset}
 
-instance CanWriteField "memoryOffset" VkSparseMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "memoryOffset" VkSparseMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkMemoryOffset
-
-instance {-# OVERLAPPING #-} HasVkFlags VkSparseMemoryBind where
-        type VkFlagsMType VkSparseMemoryBind = VkSparseMemoryBindFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSparseMemoryBind, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSparseMemoryBind, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSparseMemoryBind, flags}
+        writeField p
+          = pokeByteOff p #{offset VkSparseMemoryBind, memoryOffset}
 
 instance {-# OVERLAPPING #-} HasField "flags" VkSparseMemoryBind
          where
@@ -292,31 +214,37 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSparseMemoryBind, flags}
 
-instance CanReadField "flags" VkSparseMemoryBind where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkSparseMemoryBind where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkSparseMemoryBind, flags}
 
-instance CanWriteField "flags" VkSparseMemoryBind where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkSparseMemoryBind where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
+        writeField p
+          = pokeByteOff p #{offset VkSparseMemoryBind, flags}
 
 instance Show VkSparseMemoryBind where
         showsPrec d x
           = showString "VkSparseMemoryBind {" .
-              showString "vkResourceOffset = " .
-                showsPrec d (vkResourceOffset x) .
+              showString "resourceOffset = " .
+                showsPrec d (getField @"resourceOffset" x) .
                   showString ", " .
-                    showString "vkSize = " .
-                      showsPrec d (vkSize x) .
+                    showString "size = " .
+                      showsPrec d (getField @"size" x) .
                         showString ", " .
-                          showString "vkMemory = " .
-                            showsPrec d (vkMemory x) .
+                          showString "memory = " .
+                            showsPrec d (getField @"memory" x) .
                               showString ", " .
-                                showString "vkMemoryOffset = " .
-                                  showsPrec d (vkMemoryOffset x) .
+                                showString "memoryOffset = " .
+                                  showsPrec d (getField @"memoryOffset" x) .
                                     showString ", " .
-                                      showString "vkFlags = " .
-                                        showsPrec d (vkFlags x) . showChar '}'
+                                      showString "flags = " .
+                                        showsPrec d (getField @"flags" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSpecializationInfo
        (VkSpecializationInfo(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkSpecializationMapEntry (VkSpecializationMapEntry)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSpecializationInfo {
@@ -23,7 +23,7 @@
 --   >     const void*            pData;
 --   > } VkSpecializationInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSpecializationInfo.html VkSpecializationInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSpecializationInfo.html VkSpecializationInfo registry at www.khronos.org>
 data VkSpecializationInfo = VkSpecializationInfo## Addr## ByteArray##
 
 instance Eq VkSpecializationInfo where
@@ -72,27 +72,6 @@
         type StructExtends VkSpecializationInfo = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkMapEntryCount VkSpecializationInfo where
-        type VkMapEntryCountMType VkSpecializationInfo = Word32
-
-        {-# NOINLINE vkMapEntryCount #-}
-        vkMapEntryCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, mapEntryCount})
-
-        {-# INLINE vkMapEntryCountByteOffset #-}
-        vkMapEntryCountByteOffset ~_
-          = #{offset VkSpecializationInfo, mapEntryCount}
-
-        {-# INLINE readVkMapEntryCount #-}
-        readVkMapEntryCount p
-          = peekByteOff p #{offset VkSpecializationInfo, mapEntryCount}
-
-        {-# INLINE writeVkMapEntryCount #-}
-        writeVkMapEntryCount p
-          = pokeByteOff p #{offset VkSpecializationInfo, mapEntryCount}
-
-instance {-# OVERLAPPING #-}
          HasField "mapEntryCount" VkSpecializationInfo where
         type FieldType "mapEntryCount" VkSpecializationInfo = Word32
         type FieldOptional "mapEntryCount" VkSpecializationInfo = 'True -- ' closing tick for hsc2hs
@@ -107,38 +86,22 @@
         fieldOffset
           = #{offset VkSpecializationInfo, mapEntryCount}
 
-instance CanReadField "mapEntryCount" VkSpecializationInfo where
-        {-# INLINE getField #-}
-        getField = vkMapEntryCount
+instance {-# OVERLAPPING #-}
+         CanReadField "mapEntryCount" VkSpecializationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, mapEntryCount})
 
         {-# INLINE readField #-}
-        readField = readVkMapEntryCount
+        readField p
+          = peekByteOff p #{offset VkSpecializationInfo, mapEntryCount}
 
-instance CanWriteField "mapEntryCount" VkSpecializationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "mapEntryCount" VkSpecializationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkMapEntryCount
-
-instance {-# OVERLAPPING #-} HasVkPMapEntries VkSpecializationInfo
-         where
-        type VkPMapEntriesMType VkSpecializationInfo =
-             Ptr VkSpecializationMapEntry
-
-        {-# NOINLINE vkPMapEntries #-}
-        vkPMapEntries x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, pMapEntries})
-
-        {-# INLINE vkPMapEntriesByteOffset #-}
-        vkPMapEntriesByteOffset ~_
-          = #{offset VkSpecializationInfo, pMapEntries}
-
-        {-# INLINE readVkPMapEntries #-}
-        readVkPMapEntries p
-          = peekByteOff p #{offset VkSpecializationInfo, pMapEntries}
-
-        {-# INLINE writeVkPMapEntries #-}
-        writeVkPMapEntries p
-          = pokeByteOff p #{offset VkSpecializationInfo, pMapEntries}
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationInfo, mapEntryCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pMapEntries" VkSpecializationInfo where
@@ -156,37 +119,22 @@
         fieldOffset
           = #{offset VkSpecializationInfo, pMapEntries}
 
-instance CanReadField "pMapEntries" VkSpecializationInfo where
-        {-# INLINE getField #-}
-        getField = vkPMapEntries
+instance {-# OVERLAPPING #-}
+         CanReadField "pMapEntries" VkSpecializationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, pMapEntries})
 
         {-# INLINE readField #-}
-        readField = readVkPMapEntries
+        readField p
+          = peekByteOff p #{offset VkSpecializationInfo, pMapEntries}
 
-instance CanWriteField "pMapEntries" VkSpecializationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pMapEntries" VkSpecializationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPMapEntries
-
-instance {-# OVERLAPPING #-} HasVkDataSize VkSpecializationInfo
-         where
-        type VkDataSizeMType VkSpecializationInfo = CSize
-
-        {-# NOINLINE vkDataSize #-}
-        vkDataSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, dataSize})
-
-        {-# INLINE vkDataSizeByteOffset #-}
-        vkDataSizeByteOffset ~_
-          = #{offset VkSpecializationInfo, dataSize}
-
-        {-# INLINE readVkDataSize #-}
-        readVkDataSize p
-          = peekByteOff p #{offset VkSpecializationInfo, dataSize}
-
-        {-# INLINE writeVkDataSize #-}
-        writeVkDataSize p
-          = pokeByteOff p #{offset VkSpecializationInfo, dataSize}
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationInfo, pMapEntries}
 
 instance {-# OVERLAPPING #-}
          HasField "dataSize" VkSpecializationInfo where
@@ -202,36 +150,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSpecializationInfo, dataSize}
 
-instance CanReadField "dataSize" VkSpecializationInfo where
-        {-# INLINE getField #-}
-        getField = vkDataSize
+instance {-# OVERLAPPING #-}
+         CanReadField "dataSize" VkSpecializationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, dataSize})
 
         {-# INLINE readField #-}
-        readField = readVkDataSize
+        readField p
+          = peekByteOff p #{offset VkSpecializationInfo, dataSize}
 
-instance CanWriteField "dataSize" VkSpecializationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dataSize" VkSpecializationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkDataSize
-
-instance {-# OVERLAPPING #-} HasVkPData VkSpecializationInfo where
-        type VkPDataMType VkSpecializationInfo = Ptr Void
-
-        {-# NOINLINE vkPData #-}
-        vkPData x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, pData})
-
-        {-# INLINE vkPDataByteOffset #-}
-        vkPDataByteOffset ~_
-          = #{offset VkSpecializationInfo, pData}
-
-        {-# INLINE readVkPData #-}
-        readVkPData p
-          = peekByteOff p #{offset VkSpecializationInfo, pData}
-
-        {-# INLINE writeVkPData #-}
-        writeVkPData p
-          = pokeByteOff p #{offset VkSpecializationInfo, pData}
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationInfo, dataSize}
 
 instance {-# OVERLAPPING #-} HasField "pData" VkSpecializationInfo
          where
@@ -247,27 +181,34 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSpecializationInfo, pData}
 
-instance CanReadField "pData" VkSpecializationInfo where
-        {-# INLINE getField #-}
-        getField = vkPData
+instance {-# OVERLAPPING #-}
+         CanReadField "pData" VkSpecializationInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, pData})
 
         {-# INLINE readField #-}
-        readField = readVkPData
+        readField p
+          = peekByteOff p #{offset VkSpecializationInfo, pData}
 
-instance CanWriteField "pData" VkSpecializationInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pData" VkSpecializationInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPData
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationInfo, pData}
 
 instance Show VkSpecializationInfo where
         showsPrec d x
           = showString "VkSpecializationInfo {" .
-              showString "vkMapEntryCount = " .
-                showsPrec d (vkMapEntryCount x) .
+              showString "mapEntryCount = " .
+                showsPrec d (getField @"mapEntryCount" x) .
                   showString ", " .
-                    showString "vkPMapEntries = " .
-                      showsPrec d (vkPMapEntries x) .
+                    showString "pMapEntries = " .
+                      showsPrec d (getField @"pMapEntries" x) .
                         showString ", " .
-                          showString "vkDataSize = " .
-                            showsPrec d (vkDataSize x) .
+                          showString "dataSize = " .
+                            showsPrec d (getField @"dataSize" x) .
                               showString ", " .
-                                showString "vkPData = " . showsPrec d (vkPData x) . showChar '}'
+                                showString "pData = " .
+                                  showsPrec d (getField @"pData" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationMapEntry.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationMapEntry.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationMapEntry.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSpecializationMapEntry.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSpecializationMapEntry
        (VkSpecializationMapEntry(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSpecializationMapEntry {
 --   >     uint32_t               constantID;
@@ -21,7 +21,7 @@
 --   >     size_t                 size;
 --   > } VkSpecializationMapEntry;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSpecializationMapEntry.html VkSpecializationMapEntry registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSpecializationMapEntry.html VkSpecializationMapEntry registry at www.khronos.org>
 data VkSpecializationMapEntry = VkSpecializationMapEntry## Addr##
                                                           ByteArray##
 
@@ -72,27 +72,6 @@
         type StructExtends VkSpecializationMapEntry = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkConstantID VkSpecializationMapEntry where
-        type VkConstantIDMType VkSpecializationMapEntry = Word32
-
-        {-# NOINLINE vkConstantID #-}
-        vkConstantID x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, constantID})
-
-        {-# INLINE vkConstantIDByteOffset #-}
-        vkConstantIDByteOffset ~_
-          = #{offset VkSpecializationMapEntry, constantID}
-
-        {-# INLINE readVkConstantID #-}
-        readVkConstantID p
-          = peekByteOff p #{offset VkSpecializationMapEntry, constantID}
-
-        {-# INLINE writeVkConstantID #-}
-        writeVkConstantID p
-          = pokeByteOff p #{offset VkSpecializationMapEntry, constantID}
-
-instance {-# OVERLAPPING #-}
          HasField "constantID" VkSpecializationMapEntry where
         type FieldType "constantID" VkSpecializationMapEntry = Word32
         type FieldOptional "constantID" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
@@ -107,37 +86,22 @@
         fieldOffset
           = #{offset VkSpecializationMapEntry, constantID}
 
-instance CanReadField "constantID" VkSpecializationMapEntry where
-        {-# INLINE getField #-}
-        getField = vkConstantID
+instance {-# OVERLAPPING #-}
+         CanReadField "constantID" VkSpecializationMapEntry where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, constantID})
 
         {-# INLINE readField #-}
-        readField = readVkConstantID
+        readField p
+          = peekByteOff p #{offset VkSpecializationMapEntry, constantID}
 
-instance CanWriteField "constantID" VkSpecializationMapEntry where
+instance {-# OVERLAPPING #-}
+         CanWriteField "constantID" VkSpecializationMapEntry where
         {-# INLINE writeField #-}
-        writeField = writeVkConstantID
-
-instance {-# OVERLAPPING #-} HasVkOffset VkSpecializationMapEntry
-         where
-        type VkOffsetMType VkSpecializationMapEntry = Word32
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkSpecializationMapEntry, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkSpecializationMapEntry, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkSpecializationMapEntry, offset}
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationMapEntry, constantID}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkSpecializationMapEntry where
@@ -154,37 +118,22 @@
         fieldOffset
           = #{offset VkSpecializationMapEntry, offset}
 
-instance CanReadField "offset" VkSpecializationMapEntry where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkSpecializationMapEntry where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkSpecializationMapEntry, offset}
 
-instance CanWriteField "offset" VkSpecializationMapEntry where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkSpecializationMapEntry where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkSpecializationMapEntry
-         where
-        type VkSizeMType VkSpecializationMapEntry = CSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkSpecializationMapEntry, size}
-
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkSpecializationMapEntry, size}
-
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkSpecializationMapEntry, size}
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationMapEntry, offset}
 
 instance {-# OVERLAPPING #-}
          HasField "size" VkSpecializationMapEntry where
@@ -200,24 +149,31 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSpecializationMapEntry, size}
 
-instance CanReadField "size" VkSpecializationMapEntry where
-        {-# INLINE getField #-}
-        getField = vkSize
+instance {-# OVERLAPPING #-}
+         CanReadField "size" VkSpecializationMapEntry where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, size})
 
         {-# INLINE readField #-}
-        readField = readVkSize
+        readField p
+          = peekByteOff p #{offset VkSpecializationMapEntry, size}
 
-instance CanWriteField "size" VkSpecializationMapEntry where
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkSpecializationMapEntry where
         {-# INLINE writeField #-}
-        writeField = writeVkSize
+        writeField p
+          = pokeByteOff p #{offset VkSpecializationMapEntry, size}
 
 instance Show VkSpecializationMapEntry where
         showsPrec d x
           = showString "VkSpecializationMapEntry {" .
-              showString "vkConstantID = " .
-                showsPrec d (vkConstantID x) .
+              showString "constantID = " .
+                showsPrec d (getField @"constantID" x) .
                   showString ", " .
-                    showString "vkOffset = " .
-                      showsPrec d (vkOffset x) .
+                    showString "offset = " .
+                      showsPrec d (getField @"offset" x) .
                         showString ", " .
-                          showString "vkSize = " . showsPrec d (vkSize x) . showChar '}'
+                          showString "size = " .
+                            showsPrec d (getField @"size" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkStencilOpState.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkStencilOpState.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkStencilOpState.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkStencilOpState.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkStencilOpState
        (VkStencilOpState(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkCompareOp (VkCompareOp)
 import           Graphics.Vulkan.Types.Enum.VkStencilOp (VkStencilOp)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkStencilOpState {
@@ -27,7 +27,7 @@
 --   >     uint32_t               reference;
 --   > } VkStencilOpState;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkStencilOpState.html VkStencilOpState registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkStencilOpState.html VkStencilOpState registry at www.khronos.org>
 data VkStencilOpState = VkStencilOpState## Addr## ByteArray##
 
 instance Eq VkStencilOpState where
@@ -76,26 +76,6 @@
         type ReturnedOnly VkStencilOpState = 'False -- ' closing tick for hsc2hs
         type StructExtends VkStencilOpState = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkFailOp VkStencilOpState where
-        type VkFailOpMType VkStencilOpState = VkStencilOp
-
-        {-# NOINLINE vkFailOp #-}
-        vkFailOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, failOp})
-
-        {-# INLINE vkFailOpByteOffset #-}
-        vkFailOpByteOffset ~_
-          = #{offset VkStencilOpState, failOp}
-
-        {-# INLINE readVkFailOp #-}
-        readVkFailOp p
-          = peekByteOff p #{offset VkStencilOpState, failOp}
-
-        {-# INLINE writeVkFailOp #-}
-        writeVkFailOp p
-          = pokeByteOff p #{offset VkStencilOpState, failOp}
-
 instance {-# OVERLAPPING #-} HasField "failOp" VkStencilOpState
          where
         type FieldType "failOp" VkStencilOpState = VkStencilOp
@@ -110,36 +90,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, failOp}
 
-instance CanReadField "failOp" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkFailOp
+instance {-# OVERLAPPING #-} CanReadField "failOp" VkStencilOpState
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, failOp})
 
         {-# INLINE readField #-}
-        readField = readVkFailOp
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, failOp}
 
-instance CanWriteField "failOp" VkStencilOpState where
+instance {-# OVERLAPPING #-}
+         CanWriteField "failOp" VkStencilOpState where
         {-# INLINE writeField #-}
-        writeField = writeVkFailOp
-
-instance {-# OVERLAPPING #-} HasVkPassOp VkStencilOpState where
-        type VkPassOpMType VkStencilOpState = VkStencilOp
-
-        {-# NOINLINE vkPassOp #-}
-        vkPassOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, passOp})
-
-        {-# INLINE vkPassOpByteOffset #-}
-        vkPassOpByteOffset ~_
-          = #{offset VkStencilOpState, passOp}
-
-        {-# INLINE readVkPassOp #-}
-        readVkPassOp p
-          = peekByteOff p #{offset VkStencilOpState, passOp}
-
-        {-# INLINE writeVkPassOp #-}
-        writeVkPassOp p
-          = pokeByteOff p #{offset VkStencilOpState, passOp}
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, failOp}
 
 instance {-# OVERLAPPING #-} HasField "passOp" VkStencilOpState
          where
@@ -155,37 +121,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, passOp}
 
-instance CanReadField "passOp" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkPassOp
-
-        {-# INLINE readField #-}
-        readField = readVkPassOp
-
-instance CanWriteField "passOp" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField = writeVkPassOp
-
-instance {-# OVERLAPPING #-} HasVkDepthFailOp VkStencilOpState
+instance {-# OVERLAPPING #-} CanReadField "passOp" VkStencilOpState
          where
-        type VkDepthFailOpMType VkStencilOpState = VkStencilOp
-
-        {-# NOINLINE vkDepthFailOp #-}
-        vkDepthFailOp x
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, depthFailOp})
-
-        {-# INLINE vkDepthFailOpByteOffset #-}
-        vkDepthFailOpByteOffset ~_
-          = #{offset VkStencilOpState, depthFailOp}
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, passOp})
 
-        {-# INLINE readVkDepthFailOp #-}
-        readVkDepthFailOp p
-          = peekByteOff p #{offset VkStencilOpState, depthFailOp}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, passOp}
 
-        {-# INLINE writeVkDepthFailOp #-}
-        writeVkDepthFailOp p
-          = pokeByteOff p #{offset VkStencilOpState, depthFailOp}
+instance {-# OVERLAPPING #-}
+         CanWriteField "passOp" VkStencilOpState where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, passOp}
 
 instance {-# OVERLAPPING #-}
          HasField "depthFailOp" VkStencilOpState where
@@ -201,36 +152,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, depthFailOp}
 
-instance CanReadField "depthFailOp" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkDepthFailOp
+instance {-# OVERLAPPING #-}
+         CanReadField "depthFailOp" VkStencilOpState where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, depthFailOp})
 
         {-# INLINE readField #-}
-        readField = readVkDepthFailOp
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, depthFailOp}
 
-instance CanWriteField "depthFailOp" VkStencilOpState where
+instance {-# OVERLAPPING #-}
+         CanWriteField "depthFailOp" VkStencilOpState where
         {-# INLINE writeField #-}
-        writeField = writeVkDepthFailOp
-
-instance {-# OVERLAPPING #-} HasVkCompareOp VkStencilOpState where
-        type VkCompareOpMType VkStencilOpState = VkCompareOp
-
-        {-# NOINLINE vkCompareOp #-}
-        vkCompareOp x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, compareOp})
-
-        {-# INLINE vkCompareOpByteOffset #-}
-        vkCompareOpByteOffset ~_
-          = #{offset VkStencilOpState, compareOp}
-
-        {-# INLINE readVkCompareOp #-}
-        readVkCompareOp p
-          = peekByteOff p #{offset VkStencilOpState, compareOp}
-
-        {-# INLINE writeVkCompareOp #-}
-        writeVkCompareOp p
-          = pokeByteOff p #{offset VkStencilOpState, compareOp}
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, depthFailOp}
 
 instance {-# OVERLAPPING #-} HasField "compareOp" VkStencilOpState
          where
@@ -246,37 +183,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, compareOp}
 
-instance CanReadField "compareOp" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkCompareOp
+instance {-# OVERLAPPING #-}
+         CanReadField "compareOp" VkStencilOpState where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, compareOp})
 
         {-# INLINE readField #-}
-        readField = readVkCompareOp
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, compareOp}
 
-instance CanWriteField "compareOp" VkStencilOpState where
+instance {-# OVERLAPPING #-}
+         CanWriteField "compareOp" VkStencilOpState where
         {-# INLINE writeField #-}
-        writeField = writeVkCompareOp
-
-instance {-# OVERLAPPING #-} HasVkCompareMask VkStencilOpState
-         where
-        type VkCompareMaskMType VkStencilOpState = Word32
-
-        {-# NOINLINE vkCompareMask #-}
-        vkCompareMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, compareMask})
-
-        {-# INLINE vkCompareMaskByteOffset #-}
-        vkCompareMaskByteOffset ~_
-          = #{offset VkStencilOpState, compareMask}
-
-        {-# INLINE readVkCompareMask #-}
-        readVkCompareMask p
-          = peekByteOff p #{offset VkStencilOpState, compareMask}
-
-        {-# INLINE writeVkCompareMask #-}
-        writeVkCompareMask p
-          = pokeByteOff p #{offset VkStencilOpState, compareMask}
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, compareOp}
 
 instance {-# OVERLAPPING #-}
          HasField "compareMask" VkStencilOpState where
@@ -292,36 +214,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, compareMask}
 
-instance CanReadField "compareMask" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkCompareMask
+instance {-# OVERLAPPING #-}
+         CanReadField "compareMask" VkStencilOpState where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, compareMask})
 
         {-# INLINE readField #-}
-        readField = readVkCompareMask
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, compareMask}
 
-instance CanWriteField "compareMask" VkStencilOpState where
+instance {-# OVERLAPPING #-}
+         CanWriteField "compareMask" VkStencilOpState where
         {-# INLINE writeField #-}
-        writeField = writeVkCompareMask
-
-instance {-# OVERLAPPING #-} HasVkWriteMask VkStencilOpState where
-        type VkWriteMaskMType VkStencilOpState = Word32
-
-        {-# NOINLINE vkWriteMask #-}
-        vkWriteMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, writeMask})
-
-        {-# INLINE vkWriteMaskByteOffset #-}
-        vkWriteMaskByteOffset ~_
-          = #{offset VkStencilOpState, writeMask}
-
-        {-# INLINE readVkWriteMask #-}
-        readVkWriteMask p
-          = peekByteOff p #{offset VkStencilOpState, writeMask}
-
-        {-# INLINE writeVkWriteMask #-}
-        writeVkWriteMask p
-          = pokeByteOff p #{offset VkStencilOpState, writeMask}
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, compareMask}
 
 instance {-# OVERLAPPING #-} HasField "writeMask" VkStencilOpState
          where
@@ -337,36 +245,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, writeMask}
 
-instance CanReadField "writeMask" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkWriteMask
+instance {-# OVERLAPPING #-}
+         CanReadField "writeMask" VkStencilOpState where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, writeMask})
 
         {-# INLINE readField #-}
-        readField = readVkWriteMask
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, writeMask}
 
-instance CanWriteField "writeMask" VkStencilOpState where
+instance {-# OVERLAPPING #-}
+         CanWriteField "writeMask" VkStencilOpState where
         {-# INLINE writeField #-}
-        writeField = writeVkWriteMask
-
-instance {-# OVERLAPPING #-} HasVkReference VkStencilOpState where
-        type VkReferenceMType VkStencilOpState = Word32
-
-        {-# NOINLINE vkReference #-}
-        vkReference x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, reference})
-
-        {-# INLINE vkReferenceByteOffset #-}
-        vkReferenceByteOffset ~_
-          = #{offset VkStencilOpState, reference}
-
-        {-# INLINE readVkReference #-}
-        readVkReference p
-          = peekByteOff p #{offset VkStencilOpState, reference}
-
-        {-# INLINE writeVkReference #-}
-        writeVkReference p
-          = pokeByteOff p #{offset VkStencilOpState, reference}
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, writeMask}
 
 instance {-# OVERLAPPING #-} HasField "reference" VkStencilOpState
          where
@@ -382,37 +276,44 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkStencilOpState, reference}
 
-instance CanReadField "reference" VkStencilOpState where
-        {-# INLINE getField #-}
-        getField = vkReference
+instance {-# OVERLAPPING #-}
+         CanReadField "reference" VkStencilOpState where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, reference})
 
         {-# INLINE readField #-}
-        readField = readVkReference
+        readField p
+          = peekByteOff p #{offset VkStencilOpState, reference}
 
-instance CanWriteField "reference" VkStencilOpState where
+instance {-# OVERLAPPING #-}
+         CanWriteField "reference" VkStencilOpState where
         {-# INLINE writeField #-}
-        writeField = writeVkReference
+        writeField p
+          = pokeByteOff p #{offset VkStencilOpState, reference}
 
 instance Show VkStencilOpState where
         showsPrec d x
           = showString "VkStencilOpState {" .
-              showString "vkFailOp = " .
-                showsPrec d (vkFailOp x) .
+              showString "failOp = " .
+                showsPrec d (getField @"failOp" x) .
                   showString ", " .
-                    showString "vkPassOp = " .
-                      showsPrec d (vkPassOp x) .
+                    showString "passOp = " .
+                      showsPrec d (getField @"passOp" x) .
                         showString ", " .
-                          showString "vkDepthFailOp = " .
-                            showsPrec d (vkDepthFailOp x) .
+                          showString "depthFailOp = " .
+                            showsPrec d (getField @"depthFailOp" x) .
                               showString ", " .
-                                showString "vkCompareOp = " .
-                                  showsPrec d (vkCompareOp x) .
+                                showString "compareOp = " .
+                                  showsPrec d (getField @"compareOp" x) .
                                     showString ", " .
-                                      showString "vkCompareMask = " .
-                                        showsPrec d (vkCompareMask x) .
+                                      showString "compareMask = " .
+                                        showsPrec d (getField @"compareMask" x) .
                                           showString ", " .
-                                            showString "vkWriteMask = " .
-                                              showsPrec d (vkWriteMask x) .
+                                            showString "writeMask = " .
+                                              showsPrec d (getField @"writeMask" x) .
                                                 showString ", " .
-                                                  showString "vkReference = " .
-                                                    showsPrec d (vkReference x) . showChar '}'
+                                                  showString "reference = " .
+                                                    showsPrec d (getField @"reference" x) .
+                                                      showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSubmitInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSubmitInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSubmitInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSubmitInfo.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSubmitInfo (VkSubmitInfo(..))
        where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
 import           Graphics.Vulkan.Types.Handles                   (VkCommandBuffer,
                                                                   VkSemaphore)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubmitInfo {
@@ -31,7 +31,7 @@
 --   >     const VkSemaphore*     pSignalSemaphores;
 --   > } VkSubmitInfo;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSubmitInfo.html VkSubmitInfo registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSubmitInfo.html VkSubmitInfo registry at www.khronos.org>
 data VkSubmitInfo = VkSubmitInfo## Addr## ByteArray##
 
 instance Eq VkSubmitInfo where
@@ -81,25 +81,6 @@
         type ReturnedOnly VkSubmitInfo = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSubmitInfo = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSubmitInfo where
-        type VkSTypeMType VkSubmitInfo = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_ = #{offset VkSubmitInfo, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSubmitInfo, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSubmitInfo, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkSubmitInfo where
         type FieldType "sType" VkSubmitInfo = VkStructureType
         type FieldOptional "sType" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
@@ -113,35 +94,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubmitInfo, sType}
 
-instance CanReadField "sType" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-} CanReadField "sType" VkSubmitInfo
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, sType}
 
-instance CanWriteField "sType" VkSubmitInfo where
+instance {-# OVERLAPPING #-} CanWriteField "sType" VkSubmitInfo
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSubmitInfo where
-        type VkPNextMType VkSubmitInfo = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_ = #{offset VkSubmitInfo, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSubmitInfo, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSubmitInfo, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkSubmitInfo where
         type FieldType "pNext" VkSubmitInfo = Ptr Void
@@ -156,37 +124,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubmitInfo, pNext}
 
-instance CanReadField "pNext" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkWaitSemaphoreCount VkSubmitInfo
+instance {-# OVERLAPPING #-} CanReadField "pNext" VkSubmitInfo
          where
-        type VkWaitSemaphoreCountMType VkSubmitInfo = Word32
-
-        {-# NOINLINE vkWaitSemaphoreCount #-}
-        vkWaitSemaphoreCount x
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, waitSemaphoreCount})
-
-        {-# INLINE vkWaitSemaphoreCountByteOffset #-}
-        vkWaitSemaphoreCountByteOffset ~_
-          = #{offset VkSubmitInfo, waitSemaphoreCount}
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pNext})
 
-        {-# INLINE readVkWaitSemaphoreCount #-}
-        readVkWaitSemaphoreCount p
-          = peekByteOff p #{offset VkSubmitInfo, waitSemaphoreCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, pNext}
 
-        {-# INLINE writeVkWaitSemaphoreCount #-}
-        writeVkWaitSemaphoreCount p
-          = pokeByteOff p #{offset VkSubmitInfo, waitSemaphoreCount}
+instance {-# OVERLAPPING #-} CanWriteField "pNext" VkSubmitInfo
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "waitSemaphoreCount" VkSubmitInfo where
@@ -203,37 +156,22 @@
         fieldOffset
           = #{offset VkSubmitInfo, waitSemaphoreCount}
 
-instance CanReadField "waitSemaphoreCount" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkWaitSemaphoreCount
+instance {-# OVERLAPPING #-}
+         CanReadField "waitSemaphoreCount" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, waitSemaphoreCount})
 
         {-# INLINE readField #-}
-        readField = readVkWaitSemaphoreCount
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, waitSemaphoreCount}
 
-instance CanWriteField "waitSemaphoreCount" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "waitSemaphoreCount" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkWaitSemaphoreCount
-
-instance {-# OVERLAPPING #-} HasVkPWaitSemaphores VkSubmitInfo
-         where
-        type VkPWaitSemaphoresMType VkSubmitInfo = Ptr VkSemaphore
-
-        {-# NOINLINE vkPWaitSemaphores #-}
-        vkPWaitSemaphores x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pWaitSemaphores})
-
-        {-# INLINE vkPWaitSemaphoresByteOffset #-}
-        vkPWaitSemaphoresByteOffset ~_
-          = #{offset VkSubmitInfo, pWaitSemaphores}
-
-        {-# INLINE readVkPWaitSemaphores #-}
-        readVkPWaitSemaphores p
-          = peekByteOff p #{offset VkSubmitInfo, pWaitSemaphores}
-
-        {-# INLINE writeVkPWaitSemaphores #-}
-        writeVkPWaitSemaphores p
-          = pokeByteOff p #{offset VkSubmitInfo, pWaitSemaphores}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, waitSemaphoreCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pWaitSemaphores" VkSubmitInfo where
@@ -249,38 +187,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubmitInfo, pWaitSemaphores}
 
-instance CanReadField "pWaitSemaphores" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkPWaitSemaphores
+instance {-# OVERLAPPING #-}
+         CanReadField "pWaitSemaphores" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pWaitSemaphores})
 
         {-# INLINE readField #-}
-        readField = readVkPWaitSemaphores
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, pWaitSemaphores}
 
-instance CanWriteField "pWaitSemaphores" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pWaitSemaphores" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPWaitSemaphores
-
-instance {-# OVERLAPPING #-} HasVkPWaitDstStageMask VkSubmitInfo
-         where
-        type VkPWaitDstStageMaskMType VkSubmitInfo =
-             Ptr VkPipelineStageFlags
-
-        {-# NOINLINE vkPWaitDstStageMask #-}
-        vkPWaitDstStageMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pWaitDstStageMask})
-
-        {-# INLINE vkPWaitDstStageMaskByteOffset #-}
-        vkPWaitDstStageMaskByteOffset ~_
-          = #{offset VkSubmitInfo, pWaitDstStageMask}
-
-        {-# INLINE readVkPWaitDstStageMask #-}
-        readVkPWaitDstStageMask p
-          = peekByteOff p #{offset VkSubmitInfo, pWaitDstStageMask}
-
-        {-# INLINE writeVkPWaitDstStageMask #-}
-        writeVkPWaitDstStageMask p
-          = pokeByteOff p #{offset VkSubmitInfo, pWaitDstStageMask}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, pWaitSemaphores}
 
 instance {-# OVERLAPPING #-}
          HasField "pWaitDstStageMask" VkSubmitInfo where
@@ -297,37 +219,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubmitInfo, pWaitDstStageMask}
 
-instance CanReadField "pWaitDstStageMask" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkPWaitDstStageMask
+instance {-# OVERLAPPING #-}
+         CanReadField "pWaitDstStageMask" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pWaitDstStageMask})
 
         {-# INLINE readField #-}
-        readField = readVkPWaitDstStageMask
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, pWaitDstStageMask}
 
-instance CanWriteField "pWaitDstStageMask" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pWaitDstStageMask" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPWaitDstStageMask
-
-instance {-# OVERLAPPING #-} HasVkCommandBufferCount VkSubmitInfo
-         where
-        type VkCommandBufferCountMType VkSubmitInfo = Word32
-
-        {-# NOINLINE vkCommandBufferCount #-}
-        vkCommandBufferCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, commandBufferCount})
-
-        {-# INLINE vkCommandBufferCountByteOffset #-}
-        vkCommandBufferCountByteOffset ~_
-          = #{offset VkSubmitInfo, commandBufferCount}
-
-        {-# INLINE readVkCommandBufferCount #-}
-        readVkCommandBufferCount p
-          = peekByteOff p #{offset VkSubmitInfo, commandBufferCount}
-
-        {-# INLINE writeVkCommandBufferCount #-}
-        writeVkCommandBufferCount p
-          = pokeByteOff p #{offset VkSubmitInfo, commandBufferCount}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, pWaitDstStageMask}
 
 instance {-# OVERLAPPING #-}
          HasField "commandBufferCount" VkSubmitInfo where
@@ -344,37 +251,22 @@
         fieldOffset
           = #{offset VkSubmitInfo, commandBufferCount}
 
-instance CanReadField "commandBufferCount" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkCommandBufferCount
+instance {-# OVERLAPPING #-}
+         CanReadField "commandBufferCount" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, commandBufferCount})
 
         {-# INLINE readField #-}
-        readField = readVkCommandBufferCount
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, commandBufferCount}
 
-instance CanWriteField "commandBufferCount" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "commandBufferCount" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkCommandBufferCount
-
-instance {-# OVERLAPPING #-} HasVkPCommandBuffers VkSubmitInfo
-         where
-        type VkPCommandBuffersMType VkSubmitInfo = Ptr VkCommandBuffer
-
-        {-# NOINLINE vkPCommandBuffers #-}
-        vkPCommandBuffers x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pCommandBuffers})
-
-        {-# INLINE vkPCommandBuffersByteOffset #-}
-        vkPCommandBuffersByteOffset ~_
-          = #{offset VkSubmitInfo, pCommandBuffers}
-
-        {-# INLINE readVkPCommandBuffers #-}
-        readVkPCommandBuffers p
-          = peekByteOff p #{offset VkSubmitInfo, pCommandBuffers}
-
-        {-# INLINE writeVkPCommandBuffers #-}
-        writeVkPCommandBuffers p
-          = pokeByteOff p #{offset VkSubmitInfo, pCommandBuffers}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, commandBufferCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pCommandBuffers" VkSubmitInfo where
@@ -390,37 +282,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubmitInfo, pCommandBuffers}
 
-instance CanReadField "pCommandBuffers" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkPCommandBuffers
+instance {-# OVERLAPPING #-}
+         CanReadField "pCommandBuffers" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pCommandBuffers})
 
         {-# INLINE readField #-}
-        readField = readVkPCommandBuffers
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, pCommandBuffers}
 
-instance CanWriteField "pCommandBuffers" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pCommandBuffers" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPCommandBuffers
-
-instance {-# OVERLAPPING #-} HasVkSignalSemaphoreCount VkSubmitInfo
-         where
-        type VkSignalSemaphoreCountMType VkSubmitInfo = Word32
-
-        {-# NOINLINE vkSignalSemaphoreCount #-}
-        vkSignalSemaphoreCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, signalSemaphoreCount})
-
-        {-# INLINE vkSignalSemaphoreCountByteOffset #-}
-        vkSignalSemaphoreCountByteOffset ~_
-          = #{offset VkSubmitInfo, signalSemaphoreCount}
-
-        {-# INLINE readVkSignalSemaphoreCount #-}
-        readVkSignalSemaphoreCount p
-          = peekByteOff p #{offset VkSubmitInfo, signalSemaphoreCount}
-
-        {-# INLINE writeVkSignalSemaphoreCount #-}
-        writeVkSignalSemaphoreCount p
-          = pokeByteOff p #{offset VkSubmitInfo, signalSemaphoreCount}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, pCommandBuffers}
 
 instance {-# OVERLAPPING #-}
          HasField "signalSemaphoreCount" VkSubmitInfo where
@@ -437,37 +314,22 @@
         fieldOffset
           = #{offset VkSubmitInfo, signalSemaphoreCount}
 
-instance CanReadField "signalSemaphoreCount" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkSignalSemaphoreCount
+instance {-# OVERLAPPING #-}
+         CanReadField "signalSemaphoreCount" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, signalSemaphoreCount})
 
         {-# INLINE readField #-}
-        readField = readVkSignalSemaphoreCount
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, signalSemaphoreCount}
 
-instance CanWriteField "signalSemaphoreCount" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "signalSemaphoreCount" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkSignalSemaphoreCount
-
-instance {-# OVERLAPPING #-} HasVkPSignalSemaphores VkSubmitInfo
-         where
-        type VkPSignalSemaphoresMType VkSubmitInfo = Ptr VkSemaphore
-
-        {-# NOINLINE vkPSignalSemaphores #-}
-        vkPSignalSemaphores x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pSignalSemaphores})
-
-        {-# INLINE vkPSignalSemaphoresByteOffset #-}
-        vkPSignalSemaphoresByteOffset ~_
-          = #{offset VkSubmitInfo, pSignalSemaphores}
-
-        {-# INLINE readVkPSignalSemaphores #-}
-        readVkPSignalSemaphores p
-          = peekByteOff p #{offset VkSubmitInfo, pSignalSemaphores}
-
-        {-# INLINE writeVkPSignalSemaphores #-}
-        writeVkPSignalSemaphores p
-          = pokeByteOff p #{offset VkSubmitInfo, pSignalSemaphores}
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, signalSemaphoreCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pSignalSemaphores" VkSubmitInfo where
@@ -483,44 +345,53 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubmitInfo, pSignalSemaphores}
 
-instance CanReadField "pSignalSemaphores" VkSubmitInfo where
-        {-# INLINE getField #-}
-        getField = vkPSignalSemaphores
+instance {-# OVERLAPPING #-}
+         CanReadField "pSignalSemaphores" VkSubmitInfo where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pSignalSemaphores})
 
         {-# INLINE readField #-}
-        readField = readVkPSignalSemaphores
+        readField p
+          = peekByteOff p #{offset VkSubmitInfo, pSignalSemaphores}
 
-instance CanWriteField "pSignalSemaphores" VkSubmitInfo where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pSignalSemaphores" VkSubmitInfo where
         {-# INLINE writeField #-}
-        writeField = writeVkPSignalSemaphores
+        writeField p
+          = pokeByteOff p #{offset VkSubmitInfo, pSignalSemaphores}
 
 instance Show VkSubmitInfo where
         showsPrec d x
           = showString "VkSubmitInfo {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkWaitSemaphoreCount = " .
-                            showsPrec d (vkWaitSemaphoreCount x) .
+                          showString "waitSemaphoreCount = " .
+                            showsPrec d (getField @"waitSemaphoreCount" x) .
                               showString ", " .
-                                showString "vkPWaitSemaphores = " .
-                                  showsPrec d (vkPWaitSemaphores x) .
+                                showString "pWaitSemaphores = " .
+                                  showsPrec d (getField @"pWaitSemaphores" x) .
                                     showString ", " .
-                                      showString "vkPWaitDstStageMask = " .
-                                        showsPrec d (vkPWaitDstStageMask x) .
+                                      showString "pWaitDstStageMask = " .
+                                        showsPrec d (getField @"pWaitDstStageMask" x) .
                                           showString ", " .
-                                            showString "vkCommandBufferCount = " .
-                                              showsPrec d (vkCommandBufferCount x) .
+                                            showString "commandBufferCount = " .
+                                              showsPrec d (getField @"commandBufferCount" x) .
                                                 showString ", " .
-                                                  showString "vkPCommandBuffers = " .
-                                                    showsPrec d (vkPCommandBuffers x) .
+                                                  showString "pCommandBuffers = " .
+                                                    showsPrec d (getField @"pCommandBuffers" x) .
                                                       showString ", " .
-                                                        showString "vkSignalSemaphoreCount = " .
-                                                          showsPrec d (vkSignalSemaphoreCount x) .
+                                                        showString "signalSemaphoreCount = " .
+                                                          showsPrec d
+                                                            (getField @"signalSemaphoreCount" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkPSignalSemaphores = " .
-                                                                showsPrec d (vkPSignalSemaphores x)
+                                                              showString "pSignalSemaphores = " .
+                                                                showsPrec d
+                                                                  (getField @"pSignalSemaphores" x)
                                                                   . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDependency.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDependency.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDependency.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDependency.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSubpassDependency
        (VkSubpassDependency(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkAccessFlags        (VkAccessFlags)
 import           Graphics.Vulkan.Types.Enum.VkDependencyFlags    (VkDependencyFlags)
 import           Graphics.Vulkan.Types.Enum.VkPipelineStageFlags (VkPipelineStageFlags)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubpassDependency {
@@ -28,7 +28,7 @@
 --   >     VkDependencyFlags      dependencyFlags;
 --   > } VkSubpassDependency;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSubpassDependency.html VkSubpassDependency registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSubpassDependency.html VkSubpassDependency registry at www.khronos.org>
 data VkSubpassDependency = VkSubpassDependency## Addr## ByteArray##
 
 instance Eq VkSubpassDependency where
@@ -77,27 +77,6 @@
         type ReturnedOnly VkSubpassDependency = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSubpassDependency = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSrcSubpass VkSubpassDependency
-         where
-        type VkSrcSubpassMType VkSubpassDependency = Word32
-
-        {-# NOINLINE vkSrcSubpass #-}
-        vkSrcSubpass x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcSubpass})
-
-        {-# INLINE vkSrcSubpassByteOffset #-}
-        vkSrcSubpassByteOffset ~_
-          = #{offset VkSubpassDependency, srcSubpass}
-
-        {-# INLINE readVkSrcSubpass #-}
-        readVkSrcSubpass p
-          = peekByteOff p #{offset VkSubpassDependency, srcSubpass}
-
-        {-# INLINE writeVkSrcSubpass #-}
-        writeVkSrcSubpass p
-          = pokeByteOff p #{offset VkSubpassDependency, srcSubpass}
-
 instance {-# OVERLAPPING #-}
          HasField "srcSubpass" VkSubpassDependency where
         type FieldType "srcSubpass" VkSubpassDependency = Word32
@@ -112,37 +91,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubpassDependency, srcSubpass}
 
-instance CanReadField "srcSubpass" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkSrcSubpass
+instance {-# OVERLAPPING #-}
+         CanReadField "srcSubpass" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcSubpass})
 
         {-# INLINE readField #-}
-        readField = readVkSrcSubpass
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, srcSubpass}
 
-instance CanWriteField "srcSubpass" VkSubpassDependency where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcSubpass" VkSubpassDependency where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcSubpass
-
-instance {-# OVERLAPPING #-} HasVkDstSubpass VkSubpassDependency
-         where
-        type VkDstSubpassMType VkSubpassDependency = Word32
-
-        {-# NOINLINE vkDstSubpass #-}
-        vkDstSubpass x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstSubpass})
-
-        {-# INLINE vkDstSubpassByteOffset #-}
-        vkDstSubpassByteOffset ~_
-          = #{offset VkSubpassDependency, dstSubpass}
-
-        {-# INLINE readVkDstSubpass #-}
-        readVkDstSubpass p
-          = peekByteOff p #{offset VkSubpassDependency, dstSubpass}
-
-        {-# INLINE writeVkDstSubpass #-}
-        writeVkDstSubpass p
-          = pokeByteOff p #{offset VkSubpassDependency, dstSubpass}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, srcSubpass}
 
 instance {-# OVERLAPPING #-}
          HasField "dstSubpass" VkSubpassDependency where
@@ -158,37 +122,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubpassDependency, dstSubpass}
 
-instance CanReadField "dstSubpass" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkDstSubpass
+instance {-# OVERLAPPING #-}
+         CanReadField "dstSubpass" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstSubpass})
 
         {-# INLINE readField #-}
-        readField = readVkDstSubpass
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, dstSubpass}
 
-instance CanWriteField "dstSubpass" VkSubpassDependency where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstSubpass" VkSubpassDependency where
         {-# INLINE writeField #-}
-        writeField = writeVkDstSubpass
-
-instance {-# OVERLAPPING #-} HasVkSrcStageMask VkSubpassDependency
-         where
-        type VkSrcStageMaskMType VkSubpassDependency = VkPipelineStageFlags
-
-        {-# NOINLINE vkSrcStageMask #-}
-        vkSrcStageMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcStageMask})
-
-        {-# INLINE vkSrcStageMaskByteOffset #-}
-        vkSrcStageMaskByteOffset ~_
-          = #{offset VkSubpassDependency, srcStageMask}
-
-        {-# INLINE readVkSrcStageMask #-}
-        readVkSrcStageMask p
-          = peekByteOff p #{offset VkSubpassDependency, srcStageMask}
-
-        {-# INLINE writeVkSrcStageMask #-}
-        writeVkSrcStageMask p
-          = pokeByteOff p #{offset VkSubpassDependency, srcStageMask}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, dstSubpass}
 
 instance {-# OVERLAPPING #-}
          HasField "srcStageMask" VkSubpassDependency where
@@ -206,37 +155,22 @@
         fieldOffset
           = #{offset VkSubpassDependency, srcStageMask}
 
-instance CanReadField "srcStageMask" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkSrcStageMask
+instance {-# OVERLAPPING #-}
+         CanReadField "srcStageMask" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcStageMask})
 
         {-# INLINE readField #-}
-        readField = readVkSrcStageMask
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, srcStageMask}
 
-instance CanWriteField "srcStageMask" VkSubpassDependency where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcStageMask" VkSubpassDependency where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcStageMask
-
-instance {-# OVERLAPPING #-} HasVkDstStageMask VkSubpassDependency
-         where
-        type VkDstStageMaskMType VkSubpassDependency = VkPipelineStageFlags
-
-        {-# NOINLINE vkDstStageMask #-}
-        vkDstStageMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstStageMask})
-
-        {-# INLINE vkDstStageMaskByteOffset #-}
-        vkDstStageMaskByteOffset ~_
-          = #{offset VkSubpassDependency, dstStageMask}
-
-        {-# INLINE readVkDstStageMask #-}
-        readVkDstStageMask p
-          = peekByteOff p #{offset VkSubpassDependency, dstStageMask}
-
-        {-# INLINE writeVkDstStageMask #-}
-        writeVkDstStageMask p
-          = pokeByteOff p #{offset VkSubpassDependency, dstStageMask}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, srcStageMask}
 
 instance {-# OVERLAPPING #-}
          HasField "dstStageMask" VkSubpassDependency where
@@ -254,37 +188,22 @@
         fieldOffset
           = #{offset VkSubpassDependency, dstStageMask}
 
-instance CanReadField "dstStageMask" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkDstStageMask
+instance {-# OVERLAPPING #-}
+         CanReadField "dstStageMask" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstStageMask})
 
         {-# INLINE readField #-}
-        readField = readVkDstStageMask
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, dstStageMask}
 
-instance CanWriteField "dstStageMask" VkSubpassDependency where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstStageMask" VkSubpassDependency where
         {-# INLINE writeField #-}
-        writeField = writeVkDstStageMask
-
-instance {-# OVERLAPPING #-} HasVkSrcAccessMask VkSubpassDependency
-         where
-        type VkSrcAccessMaskMType VkSubpassDependency = VkAccessFlags
-
-        {-# NOINLINE vkSrcAccessMask #-}
-        vkSrcAccessMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcAccessMask})
-
-        {-# INLINE vkSrcAccessMaskByteOffset #-}
-        vkSrcAccessMaskByteOffset ~_
-          = #{offset VkSubpassDependency, srcAccessMask}
-
-        {-# INLINE readVkSrcAccessMask #-}
-        readVkSrcAccessMask p
-          = peekByteOff p #{offset VkSubpassDependency, srcAccessMask}
-
-        {-# INLINE writeVkSrcAccessMask #-}
-        writeVkSrcAccessMask p
-          = pokeByteOff p #{offset VkSubpassDependency, srcAccessMask}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, dstStageMask}
 
 instance {-# OVERLAPPING #-}
          HasField "srcAccessMask" VkSubpassDependency where
@@ -301,37 +220,22 @@
         fieldOffset
           = #{offset VkSubpassDependency, srcAccessMask}
 
-instance CanReadField "srcAccessMask" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkSrcAccessMask
+instance {-# OVERLAPPING #-}
+         CanReadField "srcAccessMask" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcAccessMask})
 
         {-# INLINE readField #-}
-        readField = readVkSrcAccessMask
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, srcAccessMask}
 
-instance CanWriteField "srcAccessMask" VkSubpassDependency where
+instance {-# OVERLAPPING #-}
+         CanWriteField "srcAccessMask" VkSubpassDependency where
         {-# INLINE writeField #-}
-        writeField = writeVkSrcAccessMask
-
-instance {-# OVERLAPPING #-} HasVkDstAccessMask VkSubpassDependency
-         where
-        type VkDstAccessMaskMType VkSubpassDependency = VkAccessFlags
-
-        {-# NOINLINE vkDstAccessMask #-}
-        vkDstAccessMask x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstAccessMask})
-
-        {-# INLINE vkDstAccessMaskByteOffset #-}
-        vkDstAccessMaskByteOffset ~_
-          = #{offset VkSubpassDependency, dstAccessMask}
-
-        {-# INLINE readVkDstAccessMask #-}
-        readVkDstAccessMask p
-          = peekByteOff p #{offset VkSubpassDependency, dstAccessMask}
-
-        {-# INLINE writeVkDstAccessMask #-}
-        writeVkDstAccessMask p
-          = pokeByteOff p #{offset VkSubpassDependency, dstAccessMask}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, srcAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "dstAccessMask" VkSubpassDependency where
@@ -348,37 +252,22 @@
         fieldOffset
           = #{offset VkSubpassDependency, dstAccessMask}
 
-instance CanReadField "dstAccessMask" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkDstAccessMask
-
-        {-# INLINE readField #-}
-        readField = readVkDstAccessMask
-
-instance CanWriteField "dstAccessMask" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstAccessMask
-
 instance {-# OVERLAPPING #-}
-         HasVkDependencyFlags VkSubpassDependency where
-        type VkDependencyFlagsMType VkSubpassDependency = VkDependencyFlags
-
-        {-# NOINLINE vkDependencyFlags #-}
-        vkDependencyFlags x
+         CanReadField "dstAccessMask" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dependencyFlags})
-
-        {-# INLINE vkDependencyFlagsByteOffset #-}
-        vkDependencyFlagsByteOffset ~_
-          = #{offset VkSubpassDependency, dependencyFlags}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstAccessMask})
 
-        {-# INLINE readVkDependencyFlags #-}
-        readVkDependencyFlags p
-          = peekByteOff p #{offset VkSubpassDependency, dependencyFlags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, dstAccessMask}
 
-        {-# INLINE writeVkDependencyFlags #-}
-        writeVkDependencyFlags p
-          = pokeByteOff p #{offset VkSubpassDependency, dependencyFlags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstAccessMask" VkSubpassDependency where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, dstAccessMask}
 
 instance {-# OVERLAPPING #-}
          HasField "dependencyFlags" VkSubpassDependency where
@@ -396,37 +285,44 @@
         fieldOffset
           = #{offset VkSubpassDependency, dependencyFlags}
 
-instance CanReadField "dependencyFlags" VkSubpassDependency where
-        {-# INLINE getField #-}
-        getField = vkDependencyFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "dependencyFlags" VkSubpassDependency where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dependencyFlags})
 
         {-# INLINE readField #-}
-        readField = readVkDependencyFlags
+        readField p
+          = peekByteOff p #{offset VkSubpassDependency, dependencyFlags}
 
-instance CanWriteField "dependencyFlags" VkSubpassDependency where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dependencyFlags" VkSubpassDependency where
         {-# INLINE writeField #-}
-        writeField = writeVkDependencyFlags
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDependency, dependencyFlags}
 
 instance Show VkSubpassDependency where
         showsPrec d x
           = showString "VkSubpassDependency {" .
-              showString "vkSrcSubpass = " .
-                showsPrec d (vkSrcSubpass x) .
+              showString "srcSubpass = " .
+                showsPrec d (getField @"srcSubpass" x) .
                   showString ", " .
-                    showString "vkDstSubpass = " .
-                      showsPrec d (vkDstSubpass x) .
+                    showString "dstSubpass = " .
+                      showsPrec d (getField @"dstSubpass" x) .
                         showString ", " .
-                          showString "vkSrcStageMask = " .
-                            showsPrec d (vkSrcStageMask x) .
+                          showString "srcStageMask = " .
+                            showsPrec d (getField @"srcStageMask" x) .
                               showString ", " .
-                                showString "vkDstStageMask = " .
-                                  showsPrec d (vkDstStageMask x) .
+                                showString "dstStageMask = " .
+                                  showsPrec d (getField @"dstStageMask" x) .
                                     showString ", " .
-                                      showString "vkSrcAccessMask = " .
-                                        showsPrec d (vkSrcAccessMask x) .
+                                      showString "srcAccessMask = " .
+                                        showsPrec d (getField @"srcAccessMask" x) .
                                           showString ", " .
-                                            showString "vkDstAccessMask = " .
-                                              showsPrec d (vkDstAccessMask x) .
+                                            showString "dstAccessMask = " .
+                                              showsPrec d (getField @"dstAccessMask" x) .
                                                 showString ", " .
-                                                  showString "vkDependencyFlags = " .
-                                                    showsPrec d (vkDependencyFlags x) . showChar '}'
+                                                  showString "dependencyFlags = " .
+                                                    showsPrec d (getField @"dependencyFlags" x) .
+                                                      showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDescription.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDescription.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDescription.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassDescription.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSubpassDescription
        (VkSubpassDescription(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkPipelineBindPoint       (VkPipelineBindPoint)
 import           Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags (VkSubpassDescriptionFlags)
 import           Graphics.Vulkan.Types.Struct.VkAttachmentReference   (VkAttachmentReference)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubpassDescription {
@@ -31,7 +31,7 @@
 --   >     const uint32_t* pPreserveAttachments;
 --   > } VkSubpassDescription;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSubpassDescription.html VkSubpassDescription registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSubpassDescription.html VkSubpassDescription registry at www.khronos.org>
 data VkSubpassDescription = VkSubpassDescription## Addr## ByteArray##
 
 instance Eq VkSubpassDescription where
@@ -82,26 +82,6 @@
         type ReturnedOnly VkSubpassDescription = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSubpassDescription = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkFlags VkSubpassDescription where
-        type VkFlagsMType VkSubpassDescription = VkSubpassDescriptionFlags
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSubpassDescription, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSubpassDescription, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSubpassDescription, flags}
-
 instance {-# OVERLAPPING #-} HasField "flags" VkSubpassDescription
          where
         type FieldType "flags" VkSubpassDescription =
@@ -117,38 +97,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubpassDescription, flags}
 
-instance CanReadField "flags" VkSubpassDescription where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkPipelineBindPoint VkSubpassDescription where
-        type VkPipelineBindPointMType VkSubpassDescription =
-             VkPipelineBindPoint
-
-        {-# NOINLINE vkPipelineBindPoint #-}
-        vkPipelineBindPoint x
+         CanReadField "flags" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pipelineBindPoint})
-
-        {-# INLINE vkPipelineBindPointByteOffset #-}
-        vkPipelineBindPointByteOffset ~_
-          = #{offset VkSubpassDescription, pipelineBindPoint}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, flags})
 
-        {-# INLINE readVkPipelineBindPoint #-}
-        readVkPipelineBindPoint p
-          = peekByteOff p #{offset VkSubpassDescription, pipelineBindPoint}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, flags}
 
-        {-# INLINE writeVkPipelineBindPoint #-}
-        writeVkPipelineBindPoint p
-          = pokeByteOff p #{offset VkSubpassDescription, pipelineBindPoint}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "pipelineBindPoint" VkSubpassDescription where
@@ -167,39 +131,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, pipelineBindPoint}
 
-instance CanReadField "pipelineBindPoint" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPipelineBindPoint
-
-        {-# INLINE readField #-}
-        readField = readVkPipelineBindPoint
-
-instance CanWriteField "pipelineBindPoint" VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPipelineBindPoint
-
 instance {-# OVERLAPPING #-}
-         HasVkInputAttachmentCount VkSubpassDescription where
-        type VkInputAttachmentCountMType VkSubpassDescription = Word32
-
-        {-# NOINLINE vkInputAttachmentCount #-}
-        vkInputAttachmentCount x
+         CanReadField "pipelineBindPoint" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, inputAttachmentCount})
-
-        {-# INLINE vkInputAttachmentCountByteOffset #-}
-        vkInputAttachmentCountByteOffset ~_
-          = #{offset VkSubpassDescription, inputAttachmentCount}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pipelineBindPoint})
 
-        {-# INLINE readVkInputAttachmentCount #-}
-        readVkInputAttachmentCount p
-          = peekByteOff p #{offset VkSubpassDescription, inputAttachmentCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, pipelineBindPoint}
 
-        {-# INLINE writeVkInputAttachmentCount #-}
-        writeVkInputAttachmentCount p
-          = pokeByteOff p #{offset VkSubpassDescription, inputAttachmentCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pipelineBindPoint" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, pipelineBindPoint}
 
 instance {-# OVERLAPPING #-}
          HasField "inputAttachmentCount" VkSubpassDescription where
@@ -218,40 +165,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, inputAttachmentCount}
 
-instance CanReadField "inputAttachmentCount" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkInputAttachmentCount
-
-        {-# INLINE readField #-}
-        readField = readVkInputAttachmentCount
-
-instance CanWriteField "inputAttachmentCount" VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkInputAttachmentCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPInputAttachments VkSubpassDescription where
-        type VkPInputAttachmentsMType VkSubpassDescription =
-             Ptr VkAttachmentReference
-
-        {-# NOINLINE vkPInputAttachments #-}
-        vkPInputAttachments x
+         CanReadField "inputAttachmentCount" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pInputAttachments})
-
-        {-# INLINE vkPInputAttachmentsByteOffset #-}
-        vkPInputAttachmentsByteOffset ~_
-          = #{offset VkSubpassDescription, pInputAttachments}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, inputAttachmentCount})
 
-        {-# INLINE readVkPInputAttachments #-}
-        readVkPInputAttachments p
-          = peekByteOff p #{offset VkSubpassDescription, pInputAttachments}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, inputAttachmentCount}
 
-        {-# INLINE writeVkPInputAttachments #-}
-        writeVkPInputAttachments p
-          = pokeByteOff p #{offset VkSubpassDescription, pInputAttachments}
+instance {-# OVERLAPPING #-}
+         CanWriteField "inputAttachmentCount" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, inputAttachmentCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pInputAttachments" VkSubpassDescription where
@@ -270,39 +199,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, pInputAttachments}
 
-instance CanReadField "pInputAttachments" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPInputAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkPInputAttachments
-
-instance CanWriteField "pInputAttachments" VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPInputAttachments
-
 instance {-# OVERLAPPING #-}
-         HasVkColorAttachmentCount VkSubpassDescription where
-        type VkColorAttachmentCountMType VkSubpassDescription = Word32
-
-        {-# NOINLINE vkColorAttachmentCount #-}
-        vkColorAttachmentCount x
+         CanReadField "pInputAttachments" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, colorAttachmentCount})
-
-        {-# INLINE vkColorAttachmentCountByteOffset #-}
-        vkColorAttachmentCountByteOffset ~_
-          = #{offset VkSubpassDescription, colorAttachmentCount}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pInputAttachments})
 
-        {-# INLINE readVkColorAttachmentCount #-}
-        readVkColorAttachmentCount p
-          = peekByteOff p #{offset VkSubpassDescription, colorAttachmentCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, pInputAttachments}
 
-        {-# INLINE writeVkColorAttachmentCount #-}
-        writeVkColorAttachmentCount p
-          = pokeByteOff p #{offset VkSubpassDescription, colorAttachmentCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pInputAttachments" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, pInputAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "colorAttachmentCount" VkSubpassDescription where
@@ -321,40 +233,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, colorAttachmentCount}
 
-instance CanReadField "colorAttachmentCount" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkColorAttachmentCount
-
-        {-# INLINE readField #-}
-        readField = readVkColorAttachmentCount
-
-instance CanWriteField "colorAttachmentCount" VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkColorAttachmentCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPColorAttachments VkSubpassDescription where
-        type VkPColorAttachmentsMType VkSubpassDescription =
-             Ptr VkAttachmentReference
-
-        {-# NOINLINE vkPColorAttachments #-}
-        vkPColorAttachments x
+         CanReadField "colorAttachmentCount" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pColorAttachments})
-
-        {-# INLINE vkPColorAttachmentsByteOffset #-}
-        vkPColorAttachmentsByteOffset ~_
-          = #{offset VkSubpassDescription, pColorAttachments}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, colorAttachmentCount})
 
-        {-# INLINE readVkPColorAttachments #-}
-        readVkPColorAttachments p
-          = peekByteOff p #{offset VkSubpassDescription, pColorAttachments}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, colorAttachmentCount}
 
-        {-# INLINE writeVkPColorAttachments #-}
-        writeVkPColorAttachments p
-          = pokeByteOff p #{offset VkSubpassDescription, pColorAttachments}
+instance {-# OVERLAPPING #-}
+         CanWriteField "colorAttachmentCount" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, colorAttachmentCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pColorAttachments" VkSubpassDescription where
@@ -373,40 +267,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, pColorAttachments}
 
-instance CanReadField "pColorAttachments" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPColorAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkPColorAttachments
-
-instance CanWriteField "pColorAttachments" VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPColorAttachments
-
 instance {-# OVERLAPPING #-}
-         HasVkPResolveAttachments VkSubpassDescription where
-        type VkPResolveAttachmentsMType VkSubpassDescription =
-             Ptr VkAttachmentReference
-
-        {-# NOINLINE vkPResolveAttachments #-}
-        vkPResolveAttachments x
+         CanReadField "pColorAttachments" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pResolveAttachments})
-
-        {-# INLINE vkPResolveAttachmentsByteOffset #-}
-        vkPResolveAttachmentsByteOffset ~_
-          = #{offset VkSubpassDescription, pResolveAttachments}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pColorAttachments})
 
-        {-# INLINE readVkPResolveAttachments #-}
-        readVkPResolveAttachments p
-          = peekByteOff p #{offset VkSubpassDescription, pResolveAttachments}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, pColorAttachments}
 
-        {-# INLINE writeVkPResolveAttachments #-}
-        writeVkPResolveAttachments p
-          = pokeByteOff p #{offset VkSubpassDescription, pResolveAttachments}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pColorAttachments" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, pColorAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "pResolveAttachments" VkSubpassDescription where
@@ -426,40 +302,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, pResolveAttachments}
 
-instance CanReadField "pResolveAttachments" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPResolveAttachments
-
-        {-# INLINE readField #-}
-        readField = readVkPResolveAttachments
-
-instance CanWriteField "pResolveAttachments" VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPResolveAttachments
-
 instance {-# OVERLAPPING #-}
-         HasVkPDepthStencilAttachment VkSubpassDescription where
-        type VkPDepthStencilAttachmentMType VkSubpassDescription =
-             Ptr VkAttachmentReference
-
-        {-# NOINLINE vkPDepthStencilAttachment #-}
-        vkPDepthStencilAttachment x
+         CanReadField "pResolveAttachments" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pDepthStencilAttachment})
-
-        {-# INLINE vkPDepthStencilAttachmentByteOffset #-}
-        vkPDepthStencilAttachmentByteOffset ~_
-          = #{offset VkSubpassDescription, pDepthStencilAttachment}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pResolveAttachments})
 
-        {-# INLINE readVkPDepthStencilAttachment #-}
-        readVkPDepthStencilAttachment p
-          = peekByteOff p #{offset VkSubpassDescription, pDepthStencilAttachment}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, pResolveAttachments}
 
-        {-# INLINE writeVkPDepthStencilAttachment #-}
-        writeVkPDepthStencilAttachment p
-          = pokeByteOff p #{offset VkSubpassDescription, pDepthStencilAttachment}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pResolveAttachments" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, pResolveAttachments}
 
 instance {-# OVERLAPPING #-}
          HasField "pDepthStencilAttachment" VkSubpassDescription where
@@ -479,41 +337,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, pDepthStencilAttachment}
 
-instance CanReadField "pDepthStencilAttachment"
-           VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPDepthStencilAttachment
-
-        {-# INLINE readField #-}
-        readField = readVkPDepthStencilAttachment
-
-instance CanWriteField "pDepthStencilAttachment"
-           VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPDepthStencilAttachment
-
 instance {-# OVERLAPPING #-}
-         HasVkPreserveAttachmentCount VkSubpassDescription where
-        type VkPreserveAttachmentCountMType VkSubpassDescription = Word32
-
-        {-# NOINLINE vkPreserveAttachmentCount #-}
-        vkPreserveAttachmentCount x
+         CanReadField "pDepthStencilAttachment" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, preserveAttachmentCount})
-
-        {-# INLINE vkPreserveAttachmentCountByteOffset #-}
-        vkPreserveAttachmentCountByteOffset ~_
-          = #{offset VkSubpassDescription, preserveAttachmentCount}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pDepthStencilAttachment})
 
-        {-# INLINE readVkPreserveAttachmentCount #-}
-        readVkPreserveAttachmentCount p
-          = peekByteOff p #{offset VkSubpassDescription, preserveAttachmentCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, pDepthStencilAttachment}
 
-        {-# INLINE writeVkPreserveAttachmentCount #-}
-        writeVkPreserveAttachmentCount p
-          = pokeByteOff p #{offset VkSubpassDescription, preserveAttachmentCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDepthStencilAttachment" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, pDepthStencilAttachment}
 
 instance {-# OVERLAPPING #-}
          HasField "preserveAttachmentCount" VkSubpassDescription where
@@ -533,41 +372,22 @@
         fieldOffset
           = #{offset VkSubpassDescription, preserveAttachmentCount}
 
-instance CanReadField "preserveAttachmentCount"
-           VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPreserveAttachmentCount
-
-        {-# INLINE readField #-}
-        readField = readVkPreserveAttachmentCount
-
-instance CanWriteField "preserveAttachmentCount"
-           VkSubpassDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPreserveAttachmentCount
-
 instance {-# OVERLAPPING #-}
-         HasVkPPreserveAttachments VkSubpassDescription where
-        type VkPPreserveAttachmentsMType VkSubpassDescription = Ptr Word32
-
-        {-# NOINLINE vkPPreserveAttachments #-}
-        vkPPreserveAttachments x
+         CanReadField "preserveAttachmentCount" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pPreserveAttachments})
-
-        {-# INLINE vkPPreserveAttachmentsByteOffset #-}
-        vkPPreserveAttachmentsByteOffset ~_
-          = #{offset VkSubpassDescription, pPreserveAttachments}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, preserveAttachmentCount})
 
-        {-# INLINE readVkPPreserveAttachments #-}
-        readVkPPreserveAttachments p
-          = peekByteOff p #{offset VkSubpassDescription, pPreserveAttachments}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, preserveAttachmentCount}
 
-        {-# INLINE writeVkPPreserveAttachments #-}
-        writeVkPPreserveAttachments p
-          = pokeByteOff p #{offset VkSubpassDescription, pPreserveAttachments}
+instance {-# OVERLAPPING #-}
+         CanWriteField "preserveAttachmentCount" VkSubpassDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, preserveAttachmentCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pPreserveAttachments" VkSubpassDescription where
@@ -587,57 +407,67 @@
         fieldOffset
           = #{offset VkSubpassDescription, pPreserveAttachments}
 
-instance CanReadField "pPreserveAttachments" VkSubpassDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkPPreserveAttachments
+instance {-# OVERLAPPING #-}
+         CanReadField "pPreserveAttachments" VkSubpassDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pPreserveAttachments})
 
         {-# INLINE readField #-}
-        readField = readVkPPreserveAttachments
+        readField p
+          = peekByteOff p #{offset VkSubpassDescription, pPreserveAttachments}
 
-instance CanWriteField "pPreserveAttachments" VkSubpassDescription
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pPreserveAttachments" VkSubpassDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkPPreserveAttachments
+        writeField p
+          = pokeByteOff p #{offset VkSubpassDescription, pPreserveAttachments}
 
 instance Show VkSubpassDescription where
         showsPrec d x
           = showString "VkSubpassDescription {" .
-              showString "vkFlags = " .
-                showsPrec d (vkFlags x) .
+              showString "flags = " .
+                showsPrec d (getField @"flags" x) .
                   showString ", " .
-                    showString "vkPipelineBindPoint = " .
-                      showsPrec d (vkPipelineBindPoint x) .
+                    showString "pipelineBindPoint = " .
+                      showsPrec d (getField @"pipelineBindPoint" x) .
                         showString ", " .
-                          showString "vkInputAttachmentCount = " .
-                            showsPrec d (vkInputAttachmentCount x) .
+                          showString "inputAttachmentCount = " .
+                            showsPrec d (getField @"inputAttachmentCount" x) .
                               showString ", " .
-                                showString "vkPInputAttachments = " .
-                                  showsPrec d (vkPInputAttachments x) .
+                                showString "pInputAttachments = " .
+                                  showsPrec d (getField @"pInputAttachments" x) .
                                     showString ", " .
-                                      showString "vkColorAttachmentCount = " .
-                                        showsPrec d (vkColorAttachmentCount x) .
+                                      showString "colorAttachmentCount = " .
+                                        showsPrec d (getField @"colorAttachmentCount" x) .
                                           showString ", " .
-                                            showString "vkPColorAttachments = " .
-                                              showsPrec d (vkPColorAttachments x) .
+                                            showString "pColorAttachments = " .
+                                              showsPrec d (getField @"pColorAttachments" x) .
                                                 showString ", " .
-                                                  showString "vkPResolveAttachments = " .
-                                                    showsPrec d (vkPResolveAttachments x) .
+                                                  showString "pResolveAttachments = " .
+                                                    showsPrec d (getField @"pResolveAttachments" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkPDepthStencilAttachment = " .
-                                                          showsPrec d (vkPDepthStencilAttachment x)
+                                                        showString "pDepthStencilAttachment = " .
+                                                          showsPrec d
+                                                            (getField @"pDepthStencilAttachment" x)
                                                             .
                                                             showString ", " .
                                                               showString
-                                                                "vkPreserveAttachmentCount = "
+                                                                "preserveAttachmentCount = "
                                                                 .
                                                                 showsPrec d
-                                                                  (vkPreserveAttachmentCount x)
+                                                                  (getField
+                                                                     @"preserveAttachmentCount"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkPPreserveAttachments = "
+                                                                      "pPreserveAttachments = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkPPreserveAttachments x)
+                                                                        (getField
+                                                                           @"pPreserveAttachments"
+                                                                           x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassSampleLocationsEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassSampleLocationsEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassSampleLocationsEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSubpassSampleLocationsEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSubpassSampleLocationsEXT
        (VkSubpassSampleLocationsEXT(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Struct.VkSampleLocationsInfoEXT (VkSampleLocationsInfoEXT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubpassSampleLocationsEXT {
@@ -21,7 +21,7 @@
 --   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
 --   > } VkSubpassSampleLocationsEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSubpassSampleLocationsEXT.html VkSubpassSampleLocationsEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSubpassSampleLocationsEXT.html VkSubpassSampleLocationsEXT registry at www.khronos.org>
 data VkSubpassSampleLocationsEXT = VkSubpassSampleLocationsEXT## Addr##
                                                                 ByteArray##
 
@@ -74,27 +74,6 @@
         type StructExtends VkSubpassSampleLocationsEXT = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSubpassIndex VkSubpassSampleLocationsEXT where
-        type VkSubpassIndexMType VkSubpassSampleLocationsEXT = Word32
-
-        {-# NOINLINE vkSubpassIndex #-}
-        vkSubpassIndex x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassSampleLocationsEXT, subpassIndex})
-
-        {-# INLINE vkSubpassIndexByteOffset #-}
-        vkSubpassIndexByteOffset ~_
-          = #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-
-        {-# INLINE readVkSubpassIndex #-}
-        readVkSubpassIndex p
-          = peekByteOff p #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-
-        {-# INLINE writeVkSubpassIndex #-}
-        writeVkSubpassIndex p
-          = pokeByteOff p #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-
-instance {-# OVERLAPPING #-}
          HasField "subpassIndex" VkSubpassSampleLocationsEXT where
         type FieldType "subpassIndex" VkSubpassSampleLocationsEXT = Word32
         type FieldOptional "subpassIndex" VkSubpassSampleLocationsEXT =
@@ -111,40 +90,22 @@
         fieldOffset
           = #{offset VkSubpassSampleLocationsEXT, subpassIndex}
 
-instance CanReadField "subpassIndex" VkSubpassSampleLocationsEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSubpassIndex
-
-        {-# INLINE readField #-}
-        readField = readVkSubpassIndex
-
-instance CanWriteField "subpassIndex" VkSubpassSampleLocationsEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSubpassIndex
-
 instance {-# OVERLAPPING #-}
-         HasVkSampleLocationsInfo VkSubpassSampleLocationsEXT where
-        type VkSampleLocationsInfoMType VkSubpassSampleLocationsEXT =
-             VkSampleLocationsInfoEXT
-
-        {-# NOINLINE vkSampleLocationsInfo #-}
-        vkSampleLocationsInfo x
+         CanReadField "subpassIndex" VkSubpassSampleLocationsEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo})
-
-        {-# INLINE vkSampleLocationsInfoByteOffset #-}
-        vkSampleLocationsInfoByteOffset ~_
-          = #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
+              (peekByteOff (unsafePtr x) #{offset VkSubpassSampleLocationsEXT, subpassIndex})
 
-        {-# INLINE readVkSampleLocationsInfo #-}
-        readVkSampleLocationsInfo p
-          = peekByteOff p #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubpassSampleLocationsEXT, subpassIndex}
 
-        {-# INLINE writeVkSampleLocationsInfo #-}
-        writeVkSampleLocationsInfo p
-          = pokeByteOff p #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
+instance {-# OVERLAPPING #-}
+         CanWriteField "subpassIndex" VkSubpassSampleLocationsEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubpassSampleLocationsEXT, subpassIndex}
 
 instance {-# OVERLAPPING #-}
          HasField "sampleLocationsInfo" VkSubpassSampleLocationsEXT where
@@ -166,26 +127,30 @@
         fieldOffset
           = #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
 
-instance CanReadField "sampleLocationsInfo"
-           VkSubpassSampleLocationsEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "sampleLocationsInfo" VkSubpassSampleLocationsEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSampleLocationsInfo
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo})
 
         {-# INLINE readField #-}
-        readField = readVkSampleLocationsInfo
+        readField p
+          = peekByteOff p #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
 
-instance CanWriteField "sampleLocationsInfo"
-           VkSubpassSampleLocationsEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "sampleLocationsInfo" VkSubpassSampleLocationsEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSampleLocationsInfo
+        writeField p
+          = pokeByteOff p #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
 
 instance Show VkSubpassSampleLocationsEXT where
         showsPrec d x
           = showString "VkSubpassSampleLocationsEXT {" .
-              showString "vkSubpassIndex = " .
-                showsPrec d (vkSubpassIndex x) .
+              showString "subpassIndex = " .
+                showsPrec d (getField @"subpassIndex" x) .
                   showString ", " .
-                    showString "vkSampleLocationsInfo = " .
-                      showsPrec d (vkSampleLocationsInfo x) . showChar '}'
+                    showString "sampleLocationsInfo = " .
+                      showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSubresourceLayout.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSubresourceLayout.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSubresourceLayout.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSubresourceLayout.hsc
@@ -5,16 +5,16 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSubresourceLayout
        (VkSubresourceLayout(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes     (VkDeviceSize)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes  (VkDeviceSize)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubresourceLayout {
 --   >     VkDeviceSize           offset;
@@ -24,7 +24,7 @@
 --   >     VkDeviceSize           depthPitch;
 --   > } VkSubresourceLayout;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSubresourceLayout.html VkSubresourceLayout registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSubresourceLayout.html VkSubresourceLayout registry at www.khronos.org>
 data VkSubresourceLayout = VkSubresourceLayout## Addr## ByteArray##
 
 instance Eq VkSubresourceLayout where
@@ -72,26 +72,6 @@
         type ReturnedOnly VkSubresourceLayout = 'True -- ' closing tick for hsc2hs
         type StructExtends VkSubresourceLayout = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkOffset VkSubresourceLayout where
-        type VkOffsetMType VkSubresourceLayout = VkDeviceSize
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkSubresourceLayout, offset}
-
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkSubresourceLayout, offset}
-
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkSubresourceLayout, offset}
-
 instance {-# OVERLAPPING #-} HasField "offset" VkSubresourceLayout
          where
         type FieldType "offset" VkSubresourceLayout = VkDeviceSize
@@ -106,32 +86,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubresourceLayout, offset}
 
-instance CanReadField "offset" VkSubresourceLayout where
-        {-# INLINE getField #-}
-        getField = vkOffset
-
-        {-# INLINE readField #-}
-        readField = readVkOffset
-
-instance {-# OVERLAPPING #-} HasVkSize VkSubresourceLayout where
-        type VkSizeMType VkSubresourceLayout = VkDeviceSize
-
-        {-# NOINLINE vkSize #-}
-        vkSize x
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkSubresourceLayout where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, size})
-
-        {-# INLINE vkSizeByteOffset #-}
-        vkSizeByteOffset ~_
-          = #{offset VkSubresourceLayout, size}
+              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, offset})
 
-        {-# INLINE readVkSize #-}
-        readVkSize p
-          = peekByteOff p #{offset VkSubresourceLayout, size}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubresourceLayout, offset}
 
-        {-# INLINE writeVkSize #-}
-        writeVkSize p
-          = pokeByteOff p #{offset VkSubresourceLayout, size}
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkSubresourceLayout where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubresourceLayout, offset}
 
 instance {-# OVERLAPPING #-} HasField "size" VkSubresourceLayout
          where
@@ -147,33 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubresourceLayout, size}
 
-instance CanReadField "size" VkSubresourceLayout where
-        {-# INLINE getField #-}
-        getField = vkSize
-
-        {-# INLINE readField #-}
-        readField = readVkSize
-
-instance {-# OVERLAPPING #-} HasVkRowPitch VkSubresourceLayout
-         where
-        type VkRowPitchMType VkSubresourceLayout = VkDeviceSize
-
-        {-# NOINLINE vkRowPitch #-}
-        vkRowPitch x
+instance {-# OVERLAPPING #-}
+         CanReadField "size" VkSubresourceLayout where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, rowPitch})
-
-        {-# INLINE vkRowPitchByteOffset #-}
-        vkRowPitchByteOffset ~_
-          = #{offset VkSubresourceLayout, rowPitch}
+              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, size})
 
-        {-# INLINE readVkRowPitch #-}
-        readVkRowPitch p
-          = peekByteOff p #{offset VkSubresourceLayout, rowPitch}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubresourceLayout, size}
 
-        {-# INLINE writeVkRowPitch #-}
-        writeVkRowPitch p
-          = pokeByteOff p #{offset VkSubresourceLayout, rowPitch}
+instance {-# OVERLAPPING #-}
+         CanWriteField "size" VkSubresourceLayout where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubresourceLayout, size}
 
 instance {-# OVERLAPPING #-}
          HasField "rowPitch" VkSubresourceLayout where
@@ -189,33 +148,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubresourceLayout, rowPitch}
 
-instance CanReadField "rowPitch" VkSubresourceLayout where
-        {-# INLINE getField #-}
-        getField = vkRowPitch
-
-        {-# INLINE readField #-}
-        readField = readVkRowPitch
-
-instance {-# OVERLAPPING #-} HasVkArrayPitch VkSubresourceLayout
-         where
-        type VkArrayPitchMType VkSubresourceLayout = VkDeviceSize
-
-        {-# NOINLINE vkArrayPitch #-}
-        vkArrayPitch x
+instance {-# OVERLAPPING #-}
+         CanReadField "rowPitch" VkSubresourceLayout where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, arrayPitch})
-
-        {-# INLINE vkArrayPitchByteOffset #-}
-        vkArrayPitchByteOffset ~_
-          = #{offset VkSubresourceLayout, arrayPitch}
+              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, rowPitch})
 
-        {-# INLINE readVkArrayPitch #-}
-        readVkArrayPitch p
-          = peekByteOff p #{offset VkSubresourceLayout, arrayPitch}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubresourceLayout, rowPitch}
 
-        {-# INLINE writeVkArrayPitch #-}
-        writeVkArrayPitch p
-          = pokeByteOff p #{offset VkSubresourceLayout, arrayPitch}
+instance {-# OVERLAPPING #-}
+         CanWriteField "rowPitch" VkSubresourceLayout where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubresourceLayout, rowPitch}
 
 instance {-# OVERLAPPING #-}
          HasField "arrayPitch" VkSubresourceLayout where
@@ -231,33 +179,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubresourceLayout, arrayPitch}
 
-instance CanReadField "arrayPitch" VkSubresourceLayout where
-        {-# INLINE getField #-}
-        getField = vkArrayPitch
-
-        {-# INLINE readField #-}
-        readField = readVkArrayPitch
-
-instance {-# OVERLAPPING #-} HasVkDepthPitch VkSubresourceLayout
-         where
-        type VkDepthPitchMType VkSubresourceLayout = VkDeviceSize
-
-        {-# NOINLINE vkDepthPitch #-}
-        vkDepthPitch x
+instance {-# OVERLAPPING #-}
+         CanReadField "arrayPitch" VkSubresourceLayout where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, depthPitch})
-
-        {-# INLINE vkDepthPitchByteOffset #-}
-        vkDepthPitchByteOffset ~_
-          = #{offset VkSubresourceLayout, depthPitch}
+              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, arrayPitch})
 
-        {-# INLINE readVkDepthPitch #-}
-        readVkDepthPitch p
-          = peekByteOff p #{offset VkSubresourceLayout, depthPitch}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSubresourceLayout, arrayPitch}
 
-        {-# INLINE writeVkDepthPitch #-}
-        writeVkDepthPitch p
-          = pokeByteOff p #{offset VkSubresourceLayout, depthPitch}
+instance {-# OVERLAPPING #-}
+         CanWriteField "arrayPitch" VkSubresourceLayout where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSubresourceLayout, arrayPitch}
 
 instance {-# OVERLAPPING #-}
          HasField "depthPitch" VkSubresourceLayout where
@@ -273,27 +210,37 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSubresourceLayout, depthPitch}
 
-instance CanReadField "depthPitch" VkSubresourceLayout where
-        {-# INLINE getField #-}
-        getField = vkDepthPitch
+instance {-# OVERLAPPING #-}
+         CanReadField "depthPitch" VkSubresourceLayout where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, depthPitch})
 
         {-# INLINE readField #-}
-        readField = readVkDepthPitch
+        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 "vkOffset = " .
-                showsPrec d (vkOffset x) .
+              showString "offset = " .
+                showsPrec d (getField @"offset" x) .
                   showString ", " .
-                    showString "vkSize = " .
-                      showsPrec d (vkSize x) .
+                    showString "size = " .
+                      showsPrec d (getField @"size" x) .
                         showString ", " .
-                          showString "vkRowPitch = " .
-                            showsPrec d (vkRowPitch x) .
+                          showString "rowPitch = " .
+                            showsPrec d (getField @"rowPitch" x) .
                               showString ", " .
-                                showString "vkArrayPitch = " .
-                                  showsPrec d (vkArrayPitch x) .
+                                showString "arrayPitch = " .
+                                  showsPrec d (getField @"arrayPitch" x) .
                                     showString ", " .
-                                      showString "vkDepthPitch = " .
-                                        showsPrec d (vkDepthPitch x) . showChar '}'
+                                      showString "depthPitch = " .
+                                        showsPrec d (getField @"depthPitch" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2EXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2EXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2EXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2EXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSurfaceCapabilities2EXT
        (VkSurfaceCapabilities2EXT(..)) where
@@ -19,7 +20,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR (VkSurfaceTransformFlagBitsKHR,
                                                                         VkSurfaceTransformFlagsKHR)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D               (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSurfaceCapabilities2EXT {
@@ -38,7 +38,7 @@
 --   >     VkSurfaceCounterFlagsEXT supportedSurfaceCounters;
 --   > } VkSurfaceCapabilities2EXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSurfaceCapabilities2EXT.html VkSurfaceCapabilities2EXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSurfaceCapabilities2EXT.html VkSurfaceCapabilities2EXT registry at www.khronos.org>
 data VkSurfaceCapabilities2EXT = VkSurfaceCapabilities2EXT## Addr##
                                                             ByteArray##
 
@@ -92,27 +92,6 @@
         type ReturnedOnly VkSurfaceCapabilities2EXT = 'True -- ' closing tick for hsc2hs
         type StructExtends VkSurfaceCapabilities2EXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSurfaceCapabilities2EXT
-         where
-        type VkSTypeMType VkSurfaceCapabilities2EXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkSurfaceCapabilities2EXT where
         type FieldType "sType" VkSurfaceCapabilities2EXT = VkStructureType
@@ -128,33 +107,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, sType}
 
-instance CanReadField "sType" VkSurfaceCapabilities2EXT where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSurfaceCapabilities2EXT
-         where
-        type VkPNextMType VkSurfaceCapabilities2EXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSurfaceCapabilities2EXT where
@@ -171,33 +139,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, pNext}
 
-instance CanReadField "pNext" VkSurfaceCapabilities2EXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkMinImageCount VkSurfaceCapabilities2EXT where
-        type VkMinImageCountMType VkSurfaceCapabilities2EXT = Word32
-
-        {-# NOINLINE vkMinImageCount #-}
-        vkMinImageCount x
+         CanReadField "pNext" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, minImageCount})
-
-        {-# INLINE vkMinImageCountByteOffset #-}
-        vkMinImageCountByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, minImageCount}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, pNext})
 
-        {-# INLINE readVkMinImageCount #-}
-        readVkMinImageCount p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, minImageCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, pNext}
 
-        {-# INLINE writeVkMinImageCount #-}
-        writeVkMinImageCount p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, minImageCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "minImageCount" VkSurfaceCapabilities2EXT where
@@ -216,34 +173,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, minImageCount}
 
-instance CanReadField "minImageCount" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkMinImageCount
-
-        {-# INLINE readField #-}
-        readField = readVkMinImageCount
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxImageCount VkSurfaceCapabilities2EXT where
-        type VkMaxImageCountMType VkSurfaceCapabilities2EXT = Word32
-
-        {-# NOINLINE vkMaxImageCount #-}
-        vkMaxImageCount x
+         CanReadField "minImageCount" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageCount})
-
-        {-# INLINE vkMaxImageCountByteOffset #-}
-        vkMaxImageCountByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, maxImageCount}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, minImageCount})
 
-        {-# INLINE readVkMaxImageCount #-}
-        readVkMaxImageCount p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, minImageCount}
 
-        {-# INLINE writeVkMaxImageCount #-}
-        writeVkMaxImageCount p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minImageCount" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, minImageCount}
 
 instance {-# OVERLAPPING #-}
          HasField "maxImageCount" VkSurfaceCapabilities2EXT where
@@ -262,34 +207,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, maxImageCount}
 
-instance CanReadField "maxImageCount" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageCount
-
 instance {-# OVERLAPPING #-}
-         HasVkCurrentExtent VkSurfaceCapabilities2EXT where
-        type VkCurrentExtentMType VkSurfaceCapabilities2EXT = VkExtent2D
-
-        {-# NOINLINE vkCurrentExtent #-}
-        vkCurrentExtent x
+         CanReadField "maxImageCount" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, currentExtent})
-
-        {-# INLINE vkCurrentExtentByteOffset #-}
-        vkCurrentExtentByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, currentExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageCount})
 
-        {-# INLINE readVkCurrentExtent #-}
-        readVkCurrentExtent p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, currentExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageCount}
 
-        {-# INLINE writeVkCurrentExtent #-}
-        writeVkCurrentExtent p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, currentExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxImageCount" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageCount}
 
 instance {-# OVERLAPPING #-}
          HasField "currentExtent" VkSurfaceCapabilities2EXT where
@@ -309,34 +242,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, currentExtent}
 
-instance CanReadField "currentExtent" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkCurrentExtent
-
-        {-# INLINE readField #-}
-        readField = readVkCurrentExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMinImageExtent VkSurfaceCapabilities2EXT where
-        type VkMinImageExtentMType VkSurfaceCapabilities2EXT = VkExtent2D
-
-        {-# NOINLINE vkMinImageExtent #-}
-        vkMinImageExtent x
+         CanReadField "currentExtent" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, minImageExtent})
-
-        {-# INLINE vkMinImageExtentByteOffset #-}
-        vkMinImageExtentByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, minImageExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, currentExtent})
 
-        {-# INLINE readVkMinImageExtent #-}
-        readVkMinImageExtent p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, minImageExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, currentExtent}
 
-        {-# INLINE writeVkMinImageExtent #-}
-        writeVkMinImageExtent p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, minImageExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "currentExtent" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, currentExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "minImageExtent" VkSurfaceCapabilities2EXT where
@@ -356,34 +277,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, minImageExtent}
 
-instance CanReadField "minImageExtent" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkMinImageExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMinImageExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxImageExtent VkSurfaceCapabilities2EXT where
-        type VkMaxImageExtentMType VkSurfaceCapabilities2EXT = VkExtent2D
-
-        {-# NOINLINE vkMaxImageExtent #-}
-        vkMaxImageExtent x
+         CanReadField "minImageExtent" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageExtent})
-
-        {-# INLINE vkMaxImageExtentByteOffset #-}
-        vkMaxImageExtentByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, minImageExtent})
 
-        {-# INLINE readVkMaxImageExtent #-}
-        readVkMaxImageExtent p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, minImageExtent}
 
-        {-# INLINE writeVkMaxImageExtent #-}
-        writeVkMaxImageExtent p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minImageExtent" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, minImageExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxImageExtent" VkSurfaceCapabilities2EXT where
@@ -403,34 +312,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
 
-instance CanReadField "maxImageExtent" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxImageArrayLayers VkSurfaceCapabilities2EXT where
-        type VkMaxImageArrayLayersMType VkSurfaceCapabilities2EXT = Word32
-
-        {-# NOINLINE vkMaxImageArrayLayers #-}
-        vkMaxImageArrayLayers x
+         CanReadField "maxImageExtent" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers})
-
-        {-# INLINE vkMaxImageArrayLayersByteOffset #-}
-        vkMaxImageArrayLayersByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageExtent})
 
-        {-# INLINE readVkMaxImageArrayLayers #-}
-        readVkMaxImageArrayLayers p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
 
-        {-# INLINE writeVkMaxImageArrayLayers #-}
-        writeVkMaxImageArrayLayers p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxImageExtent" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
@@ -450,36 +347,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
 
-instance CanReadField "maxImageArrayLayers"
-           VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageArrayLayers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageArrayLayers
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportedTransforms VkSurfaceCapabilities2EXT where
-        type VkSupportedTransformsMType VkSurfaceCapabilities2EXT =
-             VkSurfaceTransformFlagsKHR
-
-        {-# NOINLINE vkSupportedTransforms #-}
-        vkSupportedTransforms x
+         CanReadField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedTransforms})
-
-        {-# INLINE vkSupportedTransformsByteOffset #-}
-        vkSupportedTransformsByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers})
 
-        {-# INLINE readVkSupportedTransforms #-}
-        readVkSupportedTransforms p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
 
-        {-# INLINE writeVkSupportedTransforms #-}
-        writeVkSupportedTransforms p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedTransforms" VkSurfaceCapabilities2EXT where
@@ -499,36 +382,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
 
-instance CanReadField "supportedTransforms"
-           VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSupportedTransforms
-
-        {-# INLINE readField #-}
-        readField = readVkSupportedTransforms
-
 instance {-# OVERLAPPING #-}
-         HasVkCurrentTransform VkSurfaceCapabilities2EXT where
-        type VkCurrentTransformMType VkSurfaceCapabilities2EXT =
-             VkSurfaceTransformFlagBitsKHR
-
-        {-# NOINLINE vkCurrentTransform #-}
-        vkCurrentTransform x
+         CanReadField "supportedTransforms" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, currentTransform})
-
-        {-# INLINE vkCurrentTransformByteOffset #-}
-        vkCurrentTransformByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, currentTransform}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedTransforms})
 
-        {-# INLINE readVkCurrentTransform #-}
-        readVkCurrentTransform p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, currentTransform}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
 
-        {-# INLINE writeVkCurrentTransform #-}
-        writeVkCurrentTransform p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, currentTransform}
+instance {-# OVERLAPPING #-}
+         CanWriteField "supportedTransforms" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
 
 instance {-# OVERLAPPING #-}
          HasField "currentTransform" VkSurfaceCapabilities2EXT where
@@ -548,35 +417,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, currentTransform}
 
-instance CanReadField "currentTransform" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkCurrentTransform
-
-        {-# INLINE readField #-}
-        readField = readVkCurrentTransform
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportedCompositeAlpha VkSurfaceCapabilities2EXT where
-        type VkSupportedCompositeAlphaMType VkSurfaceCapabilities2EXT =
-             VkCompositeAlphaFlagsKHR
-
-        {-# NOINLINE vkSupportedCompositeAlpha #-}
-        vkSupportedCompositeAlpha x
+         CanReadField "currentTransform" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha})
-
-        {-# INLINE vkSupportedCompositeAlphaByteOffset #-}
-        vkSupportedCompositeAlphaByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, currentTransform})
 
-        {-# INLINE readVkSupportedCompositeAlpha #-}
-        readVkSupportedCompositeAlpha p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, currentTransform}
 
-        {-# INLINE writeVkSupportedCompositeAlpha #-}
-        writeVkSupportedCompositeAlpha p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
+instance {-# OVERLAPPING #-}
+         CanWriteField "currentTransform" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, currentTransform}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT where
@@ -600,36 +456,24 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
 
-instance CanReadField "supportedCompositeAlpha"
-           VkSurfaceCapabilities2EXT
+instance {-# OVERLAPPING #-}
+         CanReadField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
          where
-        {-# INLINE getField #-}
-        getField = vkSupportedCompositeAlpha
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha})
 
         {-# INLINE readField #-}
-        readField = readVkSupportedCompositeAlpha
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
 
 instance {-# OVERLAPPING #-}
-         HasVkSupportedUsageFlags VkSurfaceCapabilities2EXT where
-        type VkSupportedUsageFlagsMType VkSurfaceCapabilities2EXT =
-             VkImageUsageFlags
-
-        {-# NOINLINE vkSupportedUsageFlags #-}
-        vkSupportedUsageFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags})
-
-        {-# INLINE vkSupportedUsageFlagsByteOffset #-}
-        vkSupportedUsageFlagsByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
-
-        {-# INLINE readVkSupportedUsageFlags #-}
-        readVkSupportedUsageFlags p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
-
-        {-# INLINE writeVkSupportedUsageFlags #-}
-        writeVkSupportedUsageFlags p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
+         CanWriteField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
@@ -649,36 +493,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
 
-instance CanReadField "supportedUsageFlags"
-           VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE getField #-}
-        getField = vkSupportedUsageFlags
-
-        {-# INLINE readField #-}
-        readField = readVkSupportedUsageFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportedSurfaceCounters VkSurfaceCapabilities2EXT where
-        type VkSupportedSurfaceCountersMType VkSurfaceCapabilities2EXT =
-             VkSurfaceCounterFlagsEXT
-
-        {-# NOINLINE vkSupportedSurfaceCounters #-}
-        vkSupportedSurfaceCounters x
+         CanReadField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters})
-
-        {-# INLINE vkSupportedSurfaceCountersByteOffset #-}
-        vkSupportedSurfaceCountersByteOffset ~_
-          = #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags})
 
-        {-# INLINE readVkSupportedSurfaceCounters #-}
-        readVkSupportedSurfaceCounters p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
 
-        {-# INLINE writeVkSupportedSurfaceCounters #-}
-        writeVkSupportedSurfaceCounters p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
+instance {-# OVERLAPPING #-}
+         CanWriteField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT where
@@ -702,77 +532,93 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
 
-instance CanReadField "supportedSurfaceCounters"
-           VkSurfaceCapabilities2EXT
+instance {-# OVERLAPPING #-}
+         CanReadField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
          where
-        {-# INLINE getField #-}
-        getField = vkSupportedSurfaceCounters
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters})
 
         {-# INLINE readField #-}
-        readField = readVkSupportedSurfaceCounters
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkMinImageCount = " .
-                            showsPrec d (vkMinImageCount x) .
+                          showString "minImageCount = " .
+                            showsPrec d (getField @"minImageCount" x) .
                               showString ", " .
-                                showString "vkMaxImageCount = " .
-                                  showsPrec d (vkMaxImageCount x) .
+                                showString "maxImageCount = " .
+                                  showsPrec d (getField @"maxImageCount" x) .
                                     showString ", " .
-                                      showString "vkCurrentExtent = " .
-                                        showsPrec d (vkCurrentExtent x) .
+                                      showString "currentExtent = " .
+                                        showsPrec d (getField @"currentExtent" x) .
                                           showString ", " .
-                                            showString "vkMinImageExtent = " .
-                                              showsPrec d (vkMinImageExtent x) .
+                                            showString "minImageExtent = " .
+                                              showsPrec d (getField @"minImageExtent" x) .
                                                 showString ", " .
-                                                  showString "vkMaxImageExtent = " .
-                                                    showsPrec d (vkMaxImageExtent x) .
+                                                  showString "maxImageExtent = " .
+                                                    showsPrec d (getField @"maxImageExtent" x) .
                                                       showString ", " .
-                                                        showString "vkMaxImageArrayLayers = " .
-                                                          showsPrec d (vkMaxImageArrayLayers x) .
+                                                        showString "maxImageArrayLayers = " .
+                                                          showsPrec d
+                                                            (getField @"maxImageArrayLayers" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkSupportedTransforms = "
-                                                                .
+                                                              showString "supportedTransforms = " .
                                                                 showsPrec d
-                                                                  (vkSupportedTransforms x)
+                                                                  (getField @"supportedTransforms"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
-                                                                    showString
-                                                                      "vkCurrentTransform = "
+                                                                    showString "currentTransform = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkCurrentTransform x)
+                                                                        (getField
+                                                                           @"currentTransform"
+                                                                           x)
                                                                         .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkSupportedCompositeAlpha = "
+                                                                            "supportedCompositeAlpha = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkSupportedCompositeAlpha
+                                                                              (getField
+                                                                                 @"supportedCompositeAlpha"
                                                                                  x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkSupportedUsageFlags = "
+                                                                                  "supportedUsageFlags = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkSupportedUsageFlags
+                                                                                    (getField
+                                                                                       @"supportedUsageFlags"
                                                                                        x)
                                                                                     .
                                                                                     showString ", "
                                                                                       .
                                                                                       showString
-                                                                                        "vkSupportedSurfaceCounters = "
+                                                                                        "supportedSurfaceCounters = "
                                                                                         .
                                                                                         showsPrec d
-                                                                                          (vkSupportedSurfaceCounters
+                                                                                          (getField
+                                                                                             @"supportedSurfaceCounters"
                                                                                              x)
                                                                                           .
                                                                                           showChar
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2KHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2KHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilities2KHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSurfaceCapabilities2KHR
        (VkSurfaceCapabilities2KHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkSurfaceCapabilitiesKHR (VkSurfaceCapabilitiesKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSurfaceCapabilities2KHR {
@@ -23,7 +23,7 @@
 --   >     VkSurfaceCapabilitiesKHR surfaceCapabilities;
 --   > } VkSurfaceCapabilities2KHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSurfaceCapabilities2KHR.html VkSurfaceCapabilities2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSurfaceCapabilities2KHR.html VkSurfaceCapabilities2KHR registry at www.khronos.org>
 data VkSurfaceCapabilities2KHR = VkSurfaceCapabilities2KHR## Addr##
                                                             ByteArray##
 
@@ -73,27 +73,6 @@
         type ReturnedOnly VkSurfaceCapabilities2KHR = 'True -- ' closing tick for hsc2hs
         type StructExtends VkSurfaceCapabilities2KHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSurfaceCapabilities2KHR
-         where
-        type VkSTypeMType VkSurfaceCapabilities2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSurfaceCapabilities2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkSurfaceCapabilities2KHR where
         type FieldType "sType" VkSurfaceCapabilities2KHR = VkStructureType
@@ -109,33 +88,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2KHR, sType}
 
-instance CanReadField "sType" VkSurfaceCapabilities2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSurfaceCapabilities2KHR
-         where
-        type VkPNextMType VkSurfaceCapabilities2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSurfaceCapabilities2KHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSurfaceCapabilities2KHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSurfaceCapabilities2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSurfaceCapabilities2KHR where
@@ -152,34 +120,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2KHR, pNext}
 
-instance CanReadField "pNext" VkSurfaceCapabilities2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSurfaceCapabilities VkSurfaceCapabilities2KHR where
-        type VkSurfaceCapabilitiesMType VkSurfaceCapabilities2KHR =
-             VkSurfaceCapabilitiesKHR
-
-        {-# NOINLINE vkSurfaceCapabilities #-}
-        vkSurfaceCapabilities x
+         CanReadField "pNext" VkSurfaceCapabilities2KHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities})
-
-        {-# INLINE vkSurfaceCapabilitiesByteOffset #-}
-        vkSurfaceCapabilitiesByteOffset ~_
-          = #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, pNext})
 
-        {-# INLINE readVkSurfaceCapabilities #-}
-        readVkSurfaceCapabilities p
-          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, pNext}
 
-        {-# INLINE writeVkSurfaceCapabilities #-}
-        writeVkSurfaceCapabilities p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSurfaceCapabilities2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
@@ -199,23 +155,31 @@
         fieldOffset
           = #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
 
-instance CanReadField "surfaceCapabilities"
-           VkSurfaceCapabilities2KHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSurfaceCapabilities
+instance {-# OVERLAPPING #-}
+         CanReadField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities})
 
         {-# INLINE readField #-}
-        readField = readVkSurfaceCapabilities
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSurfaceCapabilities = " .
-                            showsPrec d (vkSurfaceCapabilities x) . showChar '}'
+                          showString "surfaceCapabilities = " .
+                            showsPrec d (getField @"surfaceCapabilities" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilitiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilitiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilitiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceCapabilitiesKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSurfaceCapabilitiesKHR
        (VkSurfaceCapabilitiesKHR(..)) where
@@ -17,7 +18,6 @@
 import           Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR (VkSurfaceTransformFlagBitsKHR,
                                                                         VkSurfaceTransformFlagsKHR)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D               (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSurfaceCapabilitiesKHR {
@@ -33,7 +33,7 @@
 --   >     VkImageUsageFlags                supportedUsageFlags;
 --   > } VkSurfaceCapabilitiesKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSurfaceCapabilitiesKHR.html VkSurfaceCapabilitiesKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSurfaceCapabilitiesKHR.html VkSurfaceCapabilitiesKHR registry at www.khronos.org>
 data VkSurfaceCapabilitiesKHR = VkSurfaceCapabilitiesKHR## Addr##
                                                           ByteArray##
 
@@ -87,27 +87,6 @@
         type StructExtends VkSurfaceCapabilitiesKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkMinImageCount VkSurfaceCapabilitiesKHR where
-        type VkMinImageCountMType VkSurfaceCapabilitiesKHR = Word32
-
-        {-# NOINLINE vkMinImageCount #-}
-        vkMinImageCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, minImageCount})
-
-        {-# INLINE vkMinImageCountByteOffset #-}
-        vkMinImageCountByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-
-        {-# INLINE readVkMinImageCount #-}
-        readVkMinImageCount p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-
-        {-# INLINE writeVkMinImageCount #-}
-        writeVkMinImageCount p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
          HasField "minImageCount" VkSurfaceCapabilitiesKHR where
         type FieldType "minImageCount" VkSurfaceCapabilitiesKHR = Word32
         type FieldOptional "minImageCount" VkSurfaceCapabilitiesKHR =
@@ -123,34 +102,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, minImageCount}
 
-instance CanReadField "minImageCount" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinImageCount
-
-        {-# INLINE readField #-}
-        readField = readVkMinImageCount
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxImageCount VkSurfaceCapabilitiesKHR where
-        type VkMaxImageCountMType VkSurfaceCapabilitiesKHR = Word32
-
-        {-# NOINLINE vkMaxImageCount #-}
-        vkMaxImageCount x
+         CanReadField "minImageCount" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageCount})
-
-        {-# INLINE vkMaxImageCountByteOffset #-}
-        vkMaxImageCountByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, minImageCount})
 
-        {-# INLINE readVkMaxImageCount #-}
-        readVkMaxImageCount p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageCount}
 
-        {-# INLINE writeVkMaxImageCount #-}
-        writeVkMaxImageCount p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minImageCount" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageCount}
 
 instance {-# OVERLAPPING #-}
          HasField "maxImageCount" VkSurfaceCapabilitiesKHR where
@@ -168,34 +135,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
 
-instance CanReadField "maxImageCount" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageCount
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageCount
-
 instance {-# OVERLAPPING #-}
-         HasVkCurrentExtent VkSurfaceCapabilitiesKHR where
-        type VkCurrentExtentMType VkSurfaceCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkCurrentExtent #-}
-        vkCurrentExtent x
+         CanReadField "maxImageCount" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, currentExtent})
-
-        {-# INLINE vkCurrentExtentByteOffset #-}
-        vkCurrentExtentByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, currentExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageCount})
 
-        {-# INLINE readVkCurrentExtent #-}
-        readVkCurrentExtent p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, currentExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
 
-        {-# INLINE writeVkCurrentExtent #-}
-        writeVkCurrentExtent p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, currentExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxImageCount" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
 
 instance {-# OVERLAPPING #-}
          HasField "currentExtent" VkSurfaceCapabilitiesKHR where
@@ -214,34 +169,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, currentExtent}
 
-instance CanReadField "currentExtent" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCurrentExtent
-
-        {-# INLINE readField #-}
-        readField = readVkCurrentExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMinImageExtent VkSurfaceCapabilitiesKHR where
-        type VkMinImageExtentMType VkSurfaceCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkMinImageExtent #-}
-        vkMinImageExtent x
+         CanReadField "currentExtent" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, minImageExtent})
-
-        {-# INLINE vkMinImageExtentByteOffset #-}
-        vkMinImageExtentByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, currentExtent})
 
-        {-# INLINE readVkMinImageExtent #-}
-        readVkMinImageExtent p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, currentExtent}
 
-        {-# INLINE writeVkMinImageExtent #-}
-        writeVkMinImageExtent p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "currentExtent" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, currentExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "minImageExtent" VkSurfaceCapabilitiesKHR where
@@ -261,34 +204,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
 
-instance CanReadField "minImageExtent" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinImageExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMinImageExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxImageExtent VkSurfaceCapabilitiesKHR where
-        type VkMaxImageExtentMType VkSurfaceCapabilitiesKHR = VkExtent2D
-
-        {-# NOINLINE vkMaxImageExtent #-}
-        vkMaxImageExtent x
+         CanReadField "minImageExtent" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageExtent})
-
-        {-# INLINE vkMaxImageExtentByteOffset #-}
-        vkMaxImageExtentByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, minImageExtent})
 
-        {-# INLINE readVkMaxImageExtent #-}
-        readVkMaxImageExtent p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
 
-        {-# INLINE writeVkMaxImageExtent #-}
-        writeVkMaxImageExtent p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minImageExtent" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxImageExtent" VkSurfaceCapabilitiesKHR where
@@ -308,34 +239,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
 
-instance CanReadField "maxImageExtent" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageExtent
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkMaxImageArrayLayers VkSurfaceCapabilitiesKHR where
-        type VkMaxImageArrayLayersMType VkSurfaceCapabilitiesKHR = Word32
-
-        {-# NOINLINE vkMaxImageArrayLayers #-}
-        vkMaxImageArrayLayers x
+         CanReadField "maxImageExtent" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers})
-
-        {-# INLINE vkMaxImageArrayLayersByteOffset #-}
-        vkMaxImageArrayLayersByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageExtent})
 
-        {-# INLINE readVkMaxImageArrayLayers #-}
-        readVkMaxImageArrayLayers p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
 
-        {-# INLINE writeVkMaxImageArrayLayers #-}
-        writeVkMaxImageArrayLayers p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxImageExtent" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
@@ -355,36 +274,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
 
-instance CanReadField "maxImageArrayLayers"
-           VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMaxImageArrayLayers
-
-        {-# INLINE readField #-}
-        readField = readVkMaxImageArrayLayers
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportedTransforms VkSurfaceCapabilitiesKHR where
-        type VkSupportedTransformsMType VkSurfaceCapabilitiesKHR =
-             VkSurfaceTransformFlagsKHR
-
-        {-# NOINLINE vkSupportedTransforms #-}
-        vkSupportedTransforms x
+         CanReadField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedTransforms})
-
-        {-# INLINE vkSupportedTransformsByteOffset #-}
-        vkSupportedTransformsByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers})
 
-        {-# INLINE readVkSupportedTransforms #-}
-        readVkSupportedTransforms p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
 
-        {-# INLINE writeVkSupportedTransforms #-}
-        writeVkSupportedTransforms p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
+instance {-# OVERLAPPING #-}
+         CanWriteField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedTransforms" VkSurfaceCapabilitiesKHR where
@@ -404,36 +309,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
 
-instance CanReadField "supportedTransforms"
-           VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSupportedTransforms
-
-        {-# INLINE readField #-}
-        readField = readVkSupportedTransforms
-
 instance {-# OVERLAPPING #-}
-         HasVkCurrentTransform VkSurfaceCapabilitiesKHR where
-        type VkCurrentTransformMType VkSurfaceCapabilitiesKHR =
-             VkSurfaceTransformFlagBitsKHR
-
-        {-# NOINLINE vkCurrentTransform #-}
-        vkCurrentTransform x
+         CanReadField "supportedTransforms" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, currentTransform})
-
-        {-# INLINE vkCurrentTransformByteOffset #-}
-        vkCurrentTransformByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, currentTransform}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedTransforms})
 
-        {-# INLINE readVkCurrentTransform #-}
-        readVkCurrentTransform p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, currentTransform}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
 
-        {-# INLINE writeVkCurrentTransform #-}
-        writeVkCurrentTransform p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, currentTransform}
+instance {-# OVERLAPPING #-}
+         CanWriteField "supportedTransforms" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
 
 instance {-# OVERLAPPING #-}
          HasField "currentTransform" VkSurfaceCapabilitiesKHR where
@@ -453,35 +344,22 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, currentTransform}
 
-instance CanReadField "currentTransform" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCurrentTransform
-
-        {-# INLINE readField #-}
-        readField = readVkCurrentTransform
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportedCompositeAlpha VkSurfaceCapabilitiesKHR where
-        type VkSupportedCompositeAlphaMType VkSurfaceCapabilitiesKHR =
-             VkCompositeAlphaFlagsKHR
-
-        {-# NOINLINE vkSupportedCompositeAlpha #-}
-        vkSupportedCompositeAlpha x
+         CanReadField "currentTransform" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha})
-
-        {-# INLINE vkSupportedCompositeAlphaByteOffset #-}
-        vkSupportedCompositeAlphaByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, currentTransform})
 
-        {-# INLINE readVkSupportedCompositeAlpha #-}
-        readVkSupportedCompositeAlpha p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, currentTransform}
 
-        {-# INLINE writeVkSupportedCompositeAlpha #-}
-        writeVkSupportedCompositeAlpha p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
+instance {-# OVERLAPPING #-}
+         CanWriteField "currentTransform" VkSurfaceCapabilitiesKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, currentTransform}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR where
@@ -504,36 +382,24 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
 
-instance CanReadField "supportedCompositeAlpha"
-           VkSurfaceCapabilitiesKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
          where
-        {-# INLINE getField #-}
-        getField = vkSupportedCompositeAlpha
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha})
 
         {-# INLINE readField #-}
-        readField = readVkSupportedCompositeAlpha
+        readField p
+          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
 
 instance {-# OVERLAPPING #-}
-         HasVkSupportedUsageFlags VkSurfaceCapabilitiesKHR where
-        type VkSupportedUsageFlagsMType VkSurfaceCapabilitiesKHR =
-             VkImageUsageFlags
-
-        {-# NOINLINE vkSupportedUsageFlags #-}
-        vkSupportedUsageFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags})
-
-        {-# INLINE vkSupportedUsageFlagsByteOffset #-}
-        vkSupportedUsageFlagsByteOffset ~_
-          = #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
-
-        {-# INLINE readVkSupportedUsageFlags #-}
-        readVkSupportedUsageFlags p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
-
-        {-# INLINE writeVkSupportedUsageFlags #-}
-        writeVkSupportedUsageFlags p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
+         CanWriteField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
 
 instance {-# OVERLAPPING #-}
          HasField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
@@ -553,52 +419,67 @@
         fieldOffset
           = #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
 
-instance CanReadField "supportedUsageFlags"
-           VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSupportedUsageFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags})
 
         {-# INLINE readField #-}
-        readField = readVkSupportedUsageFlags
+        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 "vkMinImageCount = " .
-                showsPrec d (vkMinImageCount x) .
+              showString "minImageCount = " .
+                showsPrec d (getField @"minImageCount" x) .
                   showString ", " .
-                    showString "vkMaxImageCount = " .
-                      showsPrec d (vkMaxImageCount x) .
+                    showString "maxImageCount = " .
+                      showsPrec d (getField @"maxImageCount" x) .
                         showString ", " .
-                          showString "vkCurrentExtent = " .
-                            showsPrec d (vkCurrentExtent x) .
+                          showString "currentExtent = " .
+                            showsPrec d (getField @"currentExtent" x) .
                               showString ", " .
-                                showString "vkMinImageExtent = " .
-                                  showsPrec d (vkMinImageExtent x) .
+                                showString "minImageExtent = " .
+                                  showsPrec d (getField @"minImageExtent" x) .
                                     showString ", " .
-                                      showString "vkMaxImageExtent = " .
-                                        showsPrec d (vkMaxImageExtent x) .
+                                      showString "maxImageExtent = " .
+                                        showsPrec d (getField @"maxImageExtent" x) .
                                           showString ", " .
-                                            showString "vkMaxImageArrayLayers = " .
-                                              showsPrec d (vkMaxImageArrayLayers x) .
+                                            showString "maxImageArrayLayers = " .
+                                              showsPrec d (getField @"maxImageArrayLayers" x) .
                                                 showString ", " .
-                                                  showString "vkSupportedTransforms = " .
-                                                    showsPrec d (vkSupportedTransforms x) .
+                                                  showString "supportedTransforms = " .
+                                                    showsPrec d (getField @"supportedTransforms" x)
+                                                      .
                                                       showString ", " .
-                                                        showString "vkCurrentTransform = " .
-                                                          showsPrec d (vkCurrentTransform x) .
+                                                        showString "currentTransform = " .
+                                                          showsPrec d
+                                                            (getField @"currentTransform" x)
+                                                            .
                                                             showString ", " .
                                                               showString
-                                                                "vkSupportedCompositeAlpha = "
+                                                                "supportedCompositeAlpha = "
                                                                 .
                                                                 showsPrec d
-                                                                  (vkSupportedCompositeAlpha x)
+                                                                  (getField
+                                                                     @"supportedCompositeAlpha"
+                                                                     x)
                                                                   .
                                                                   showString ", " .
                                                                     showString
-                                                                      "vkSupportedUsageFlags = "
+                                                                      "supportedUsageFlags = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkSupportedUsageFlags x)
+                                                                        (getField
+                                                                           @"supportedUsageFlags"
+                                                                           x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormat2KHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormat2KHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormat2KHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormat2KHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSurfaceFormat2KHR
        (VkSurfaceFormat2KHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkStructureType      (VkStructureType)
 import           Graphics.Vulkan.Types.Struct.VkSurfaceFormatKHR (VkSurfaceFormatKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSurfaceFormat2KHR {
@@ -23,7 +23,7 @@
 --   >     VkSurfaceFormatKHR surfaceFormat;
 --   > } VkSurfaceFormat2KHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSurfaceFormat2KHR.html VkSurfaceFormat2KHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSurfaceFormat2KHR.html VkSurfaceFormat2KHR registry at www.khronos.org>
 data VkSurfaceFormat2KHR = VkSurfaceFormat2KHR## Addr## ByteArray##
 
 instance Eq VkSurfaceFormat2KHR where
@@ -71,26 +71,6 @@
         type ReturnedOnly VkSurfaceFormat2KHR = 'True -- ' closing tick for hsc2hs
         type StructExtends VkSurfaceFormat2KHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSurfaceFormat2KHR where
-        type VkSTypeMType VkSurfaceFormat2KHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSurfaceFormat2KHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSurfaceFormat2KHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSurfaceFormat2KHR, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkSurfaceFormat2KHR
          where
         type FieldType "sType" VkSurfaceFormat2KHR = VkStructureType
@@ -105,32 +85,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSurfaceFormat2KHR, sType}
 
-instance CanReadField "sType" VkSurfaceFormat2KHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSurfaceFormat2KHR where
-        type VkPNextMType VkSurfaceFormat2KHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSurfaceFormat2KHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSurfaceFormat2KHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSurfaceFormat2KHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceFormat2KHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSurfaceFormat2KHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSurfaceFormat2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceFormat2KHR, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkSurfaceFormat2KHR
          where
@@ -146,33 +116,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSurfaceFormat2KHR, pNext}
 
-instance CanReadField "pNext" VkSurfaceFormat2KHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance {-# OVERLAPPING #-} HasVkSurfaceFormat VkSurfaceFormat2KHR
-         where
-        type VkSurfaceFormatMType VkSurfaceFormat2KHR = VkSurfaceFormatKHR
-
-        {-# NOINLINE vkSurfaceFormat #-}
-        vkSurfaceFormat x
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkSurfaceFormat2KHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, surfaceFormat})
-
-        {-# INLINE vkSurfaceFormatByteOffset #-}
-        vkSurfaceFormatByteOffset ~_
-          = #{offset VkSurfaceFormat2KHR, surfaceFormat}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, pNext})
 
-        {-# INLINE readVkSurfaceFormat #-}
-        readVkSurfaceFormat p
-          = peekByteOff p #{offset VkSurfaceFormat2KHR, surfaceFormat}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceFormat2KHR, pNext}
 
-        {-# INLINE writeVkSurfaceFormat #-}
-        writeVkSurfaceFormat p
-          = pokeByteOff p #{offset VkSurfaceFormat2KHR, surfaceFormat}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSurfaceFormat2KHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceFormat2KHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "surfaceFormat" VkSurfaceFormat2KHR where
@@ -190,21 +149,31 @@
         fieldOffset
           = #{offset VkSurfaceFormat2KHR, surfaceFormat}
 
-instance CanReadField "surfaceFormat" VkSurfaceFormat2KHR where
-        {-# INLINE getField #-}
-        getField = vkSurfaceFormat
+instance {-# OVERLAPPING #-}
+         CanReadField "surfaceFormat" VkSurfaceFormat2KHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, surfaceFormat})
 
         {-# INLINE readField #-}
-        readField = readVkSurfaceFormat
+        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 "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSurfaceFormat = " .
-                            showsPrec d (vkSurfaceFormat x) . showChar '}'
+                          showString "surfaceFormat = " .
+                            showsPrec d (getField @"surfaceFormat" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormatKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormatKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormatKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSurfaceFormatKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSurfaceFormatKHR
        (VkSurfaceFormatKHR(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkColorSpaceKHR (VkColorSpaceKHR)
 import           Graphics.Vulkan.Types.Enum.VkFormat        (VkFormat)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSurfaceFormatKHR {
@@ -22,7 +22,7 @@
 --   >     VkColorSpaceKHR                  colorSpace;
 --   > } VkSurfaceFormatKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSurfaceFormatKHR.html VkSurfaceFormatKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSurfaceFormatKHR.html VkSurfaceFormatKHR registry at www.khronos.org>
 data VkSurfaceFormatKHR = VkSurfaceFormatKHR## Addr## ByteArray##
 
 instance Eq VkSurfaceFormatKHR where
@@ -69,26 +69,6 @@
         type ReturnedOnly VkSurfaceFormatKHR = 'True -- ' closing tick for hsc2hs
         type StructExtends VkSurfaceFormatKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkFormat VkSurfaceFormatKHR where
-        type VkFormatMType VkSurfaceFormatKHR = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormatKHR, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkSurfaceFormatKHR, format}
-
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkSurfaceFormatKHR, format}
-
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkSurfaceFormatKHR, format}
-
 instance {-# OVERLAPPING #-} HasField "format" VkSurfaceFormatKHR
          where
         type FieldType "format" VkSurfaceFormatKHR = VkFormat
@@ -103,33 +83,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSurfaceFormatKHR, format}
 
-instance CanReadField "format" VkSurfaceFormatKHR where
-        {-# INLINE getField #-}
-        getField = vkFormat
-
-        {-# INLINE readField #-}
-        readField = readVkFormat
-
-instance {-# OVERLAPPING #-} HasVkColorSpace VkSurfaceFormatKHR
-         where
-        type VkColorSpaceMType VkSurfaceFormatKHR = VkColorSpaceKHR
-
-        {-# NOINLINE vkColorSpace #-}
-        vkColorSpace x
+instance {-# OVERLAPPING #-}
+         CanReadField "format" VkSurfaceFormatKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormatKHR, colorSpace})
-
-        {-# INLINE vkColorSpaceByteOffset #-}
-        vkColorSpaceByteOffset ~_
-          = #{offset VkSurfaceFormatKHR, colorSpace}
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormatKHR, format})
 
-        {-# INLINE readVkColorSpace #-}
-        readVkColorSpace p
-          = peekByteOff p #{offset VkSurfaceFormatKHR, colorSpace}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSurfaceFormatKHR, format}
 
-        {-# INLINE writeVkColorSpace #-}
-        writeVkColorSpace p
-          = pokeByteOff p #{offset VkSurfaceFormatKHR, colorSpace}
+instance {-# OVERLAPPING #-}
+         CanWriteField "format" VkSurfaceFormatKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSurfaceFormatKHR, format}
 
 instance {-# OVERLAPPING #-}
          HasField "colorSpace" VkSurfaceFormatKHR where
@@ -145,18 +114,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSurfaceFormatKHR, colorSpace}
 
-instance CanReadField "colorSpace" VkSurfaceFormatKHR where
-        {-# INLINE getField #-}
-        getField = vkColorSpace
+instance {-# OVERLAPPING #-}
+         CanReadField "colorSpace" VkSurfaceFormatKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormatKHR, colorSpace})
 
         {-# INLINE readField #-}
-        readField = readVkColorSpace
+        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 "vkFormat = " .
-                showsPrec d (vkFormat x) .
+              showString "format = " .
+                showsPrec d (getField @"format" x) .
                   showString ", " .
-                    showString "vkColorSpace = " .
-                      showsPrec d (vkColorSpace x) . showChar '}'
+                    showString "colorSpace = " .
+                      showsPrec d (getField @"colorSpace" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCounterCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCounterCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCounterCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCounterCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSwapchainCounterCreateInfoEXT
        (VkSwapchainCounterCreateInfoEXT(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
 import           Graphics.Vulkan.Types.Enum.VkSurfaceCounterFlagsEXT   (VkSurfaceCounterFlagsEXT)
 import           Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR (VkSwapchainCreateInfoKHR)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSwapchainCounterCreateInfoEXT {
@@ -24,7 +24,7 @@
 --   >     VkSurfaceCounterFlagsEXT         surfaceCounters;
 --   > } VkSwapchainCounterCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSwapchainCounterCreateInfoEXT.html VkSwapchainCounterCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSwapchainCounterCreateInfoEXT.html VkSwapchainCounterCreateInfoEXT registry at www.khronos.org>
 data VkSwapchainCounterCreateInfoEXT = VkSwapchainCounterCreateInfoEXT## Addr##
                                                                         ByteArray##
 
@@ -79,27 +79,6 @@
              '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkSwapchainCounterCreateInfoEXT where
-        type VkSTypeMType VkSwapchainCounterCreateInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSwapchainCounterCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkSwapchainCounterCreateInfoEXT where
         type FieldType "sType" VkSwapchainCounterCreateInfoEXT =
              VkStructureType
@@ -115,38 +94,22 @@
         fieldOffset
           = #{offset VkSwapchainCounterCreateInfoEXT, sType}
 
-instance CanReadField "sType" VkSwapchainCounterCreateInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkSwapchainCounterCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkSwapchainCounterCreateInfoEXT where
-        type VkPNextMType VkSwapchainCounterCreateInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkSwapchainCounterCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSwapchainCounterCreateInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSwapchainCounterCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSwapchainCounterCreateInfoEXT where
@@ -163,39 +126,22 @@
         fieldOffset
           = #{offset VkSwapchainCounterCreateInfoEXT, pNext}
 
-instance CanReadField "pNext" VkSwapchainCounterCreateInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkSwapchainCounterCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSurfaceCounters VkSwapchainCounterCreateInfoEXT where
-        type VkSurfaceCountersMType VkSwapchainCounterCreateInfoEXT =
-             VkSurfaceCounterFlagsEXT
-
-        {-# NOINLINE vkSurfaceCounters #-}
-        vkSurfaceCounters x
+         CanReadField "pNext" VkSwapchainCounterCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters})
-
-        {-# INLINE vkSurfaceCountersByteOffset #-}
-        vkSurfaceCountersByteOffset ~_
-          = #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, pNext})
 
-        {-# INLINE readVkSurfaceCounters #-}
-        readVkSurfaceCounters p
-          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, pNext}
 
-        {-# INLINE writeVkSurfaceCounters #-}
-        writeVkSurfaceCounters p
-          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSwapchainCounterCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "surfaceCounters" VkSwapchainCounterCreateInfoEXT where
@@ -217,29 +163,33 @@
         fieldOffset
           = #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
 
-instance CanReadField "surfaceCounters"
-           VkSwapchainCounterCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "surfaceCounters" VkSwapchainCounterCreateInfoEXT
          where
-        {-# INLINE getField #-}
-        getField = vkSurfaceCounters
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters})
 
         {-# INLINE readField #-}
-        readField = readVkSurfaceCounters
+        readField p
+          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
 
-instance CanWriteField "surfaceCounters"
-           VkSwapchainCounterCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "surfaceCounters" VkSwapchainCounterCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkSurfaceCounters
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
 
 instance Show VkSwapchainCounterCreateInfoEXT where
         showsPrec d x
           = showString "VkSwapchainCounterCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSurfaceCounters = " .
-                            showsPrec d (vkSurfaceCounters x) . showChar '}'
+                          showString "surfaceCounters = " .
+                            showsPrec d (getField @"surfaceCounters" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkSwapchainCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkSwapchainCreateInfoKHR
        (VkSwapchainCreateInfoKHR(..)) where
@@ -25,7 +26,6 @@
 import           Graphics.Vulkan.Types.Handles                         (VkSurfaceKHR,
                                                                         VkSwapchainKHR)
 import           Graphics.Vulkan.Types.Struct.VkExtent2D               (VkExtent2D)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSwapchainCreateInfoKHR {
@@ -49,7 +49,7 @@
 --   >     VkSwapchainKHR   oldSwapchain;
 --   > } VkSwapchainCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkSwapchainCreateInfoKHR.html VkSwapchainCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSwapchainCreateInfoKHR.html VkSwapchainCreateInfoKHR registry at www.khronos.org>
 data VkSwapchainCreateInfoKHR = VkSwapchainCreateInfoKHR## Addr##
                                                           ByteArray##
 
@@ -103,27 +103,6 @@
         type ReturnedOnly VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkSwapchainCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkSwapchainCreateInfoKHR
-         where
-        type VkSTypeMType VkSwapchainCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkSwapchainCreateInfoKHR where
         type FieldType "sType" VkSwapchainCreateInfoKHR = VkStructureType
@@ -138,37 +117,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSwapchainCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, sType}
 
-instance CanWriteField "sType" VkSwapchainCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkSwapchainCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkSwapchainCreateInfoKHR
-         where
-        type VkPNextMType VkSwapchainCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkSwapchainCreateInfoKHR where
@@ -184,38 +148,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSwapchainCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkSwapchainCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkSwapchainCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkSwapchainCreateInfoKHR
-         where
-        type VkFlagsMType VkSwapchainCreateInfoKHR =
-             VkSwapchainCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkSwapchainCreateInfoKHR where
@@ -232,37 +180,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkSwapchainCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, flags}
 
-instance CanWriteField "flags" VkSwapchainCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkSwapchainCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkSurface VkSwapchainCreateInfoKHR
-         where
-        type VkSurfaceMType VkSwapchainCreateInfoKHR = VkSurfaceKHR
-
-        {-# NOINLINE vkSurface #-}
-        vkSurface x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, surface})
-
-        {-# INLINE vkSurfaceByteOffset #-}
-        vkSurfaceByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, surface}
-
-        {-# INLINE readVkSurface #-}
-        readVkSurface p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, surface}
-
-        {-# INLINE writeVkSurface #-}
-        writeVkSurface p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, surface}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "surface" VkSwapchainCreateInfoKHR where
@@ -279,37 +212,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, surface}
 
-instance CanReadField "surface" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSurface
-
-        {-# INLINE readField #-}
-        readField = readVkSurface
-
-instance CanWriteField "surface" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSurface
-
 instance {-# OVERLAPPING #-}
-         HasVkMinImageCount VkSwapchainCreateInfoKHR where
-        type VkMinImageCountMType VkSwapchainCreateInfoKHR = Word32
-
-        {-# NOINLINE vkMinImageCount #-}
-        vkMinImageCount x
+         CanReadField "surface" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, minImageCount})
-
-        {-# INLINE vkMinImageCountByteOffset #-}
-        vkMinImageCountByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, minImageCount}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, surface})
 
-        {-# INLINE readVkMinImageCount #-}
-        readVkMinImageCount p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, minImageCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, surface}
 
-        {-# INLINE writeVkMinImageCount #-}
-        writeVkMinImageCount p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, minImageCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "surface" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, surface}
 
 instance {-# OVERLAPPING #-}
          HasField "minImageCount" VkSwapchainCreateInfoKHR where
@@ -327,39 +245,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, minImageCount}
 
-instance CanReadField "minImageCount" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkMinImageCount
-
-        {-# INLINE readField #-}
-        readField = readVkMinImageCount
-
-instance CanWriteField "minImageCount" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkMinImageCount
-
 instance {-# OVERLAPPING #-}
-         HasVkImageFormat VkSwapchainCreateInfoKHR where
-        type VkImageFormatMType VkSwapchainCreateInfoKHR = VkFormat
-
-        {-# NOINLINE vkImageFormat #-}
-        vkImageFormat x
+         CanReadField "minImageCount" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageFormat})
-
-        {-# INLINE vkImageFormatByteOffset #-}
-        vkImageFormatByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, imageFormat}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, minImageCount})
 
-        {-# INLINE readVkImageFormat #-}
-        readVkImageFormat p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageFormat}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, minImageCount}
 
-        {-# INLINE writeVkImageFormat #-}
-        writeVkImageFormat p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageFormat}
+instance {-# OVERLAPPING #-}
+         CanWriteField "minImageCount" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, minImageCount}
 
 instance {-# OVERLAPPING #-}
          HasField "imageFormat" VkSwapchainCreateInfoKHR where
@@ -376,38 +277,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, imageFormat}
 
-instance CanReadField "imageFormat" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkImageFormat
-
-        {-# INLINE readField #-}
-        readField = readVkImageFormat
-
-instance CanWriteField "imageFormat" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageFormat
-
 instance {-# OVERLAPPING #-}
-         HasVkImageColorSpace VkSwapchainCreateInfoKHR where
-        type VkImageColorSpaceMType VkSwapchainCreateInfoKHR =
-             VkColorSpaceKHR
-
-        {-# NOINLINE vkImageColorSpace #-}
-        vkImageColorSpace x
+         CanReadField "imageFormat" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageColorSpace})
-
-        {-# INLINE vkImageColorSpaceByteOffset #-}
-        vkImageColorSpaceByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageFormat})
 
-        {-# INLINE readVkImageColorSpace #-}
-        readVkImageColorSpace p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageFormat}
 
-        {-# INLINE writeVkImageColorSpace #-}
-        writeVkImageColorSpace p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageFormat" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageFormat}
 
 instance {-# OVERLAPPING #-}
          HasField "imageColorSpace" VkSwapchainCreateInfoKHR where
@@ -427,39 +312,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
 
-instance CanReadField "imageColorSpace" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImageColorSpace
-
-        {-# INLINE readField #-}
-        readField = readVkImageColorSpace
-
-instance CanWriteField "imageColorSpace" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageColorSpace
-
 instance {-# OVERLAPPING #-}
-         HasVkImageExtent VkSwapchainCreateInfoKHR where
-        type VkImageExtentMType VkSwapchainCreateInfoKHR = VkExtent2D
-
-        {-# NOINLINE vkImageExtent #-}
-        vkImageExtent x
+         CanReadField "imageColorSpace" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageExtent})
-
-        {-# INLINE vkImageExtentByteOffset #-}
-        vkImageExtentByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, imageExtent}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageColorSpace})
 
-        {-# INLINE readVkImageExtent #-}
-        readVkImageExtent p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageExtent}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
 
-        {-# INLINE writeVkImageExtent #-}
-        writeVkImageExtent p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageExtent}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageColorSpace" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
 
 instance {-# OVERLAPPING #-}
          HasField "imageExtent" VkSwapchainCreateInfoKHR where
@@ -476,37 +344,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, imageExtent}
 
-instance CanReadField "imageExtent" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkImageExtent
-
-        {-# INLINE readField #-}
-        readField = readVkImageExtent
-
-instance CanWriteField "imageExtent" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageExtent
-
 instance {-# OVERLAPPING #-}
-         HasVkImageArrayLayers VkSwapchainCreateInfoKHR where
-        type VkImageArrayLayersMType VkSwapchainCreateInfoKHR = Word32
-
-        {-# NOINLINE vkImageArrayLayers #-}
-        vkImageArrayLayers x
+         CanReadField "imageExtent" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageArrayLayers})
-
-        {-# INLINE vkImageArrayLayersByteOffset #-}
-        vkImageArrayLayersByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageExtent})
 
-        {-# INLINE readVkImageArrayLayers #-}
-        readVkImageArrayLayers p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageExtent}
 
-        {-# INLINE writeVkImageArrayLayers #-}
-        writeVkImageArrayLayers p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageExtent" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageExtent}
 
 instance {-# OVERLAPPING #-}
          HasField "imageArrayLayers" VkSwapchainCreateInfoKHR where
@@ -525,39 +378,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
 
-instance CanReadField "imageArrayLayers" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImageArrayLayers
-
-        {-# INLINE readField #-}
-        readField = readVkImageArrayLayers
-
-instance CanWriteField "imageArrayLayers" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageArrayLayers
-
 instance {-# OVERLAPPING #-}
-         HasVkImageUsage VkSwapchainCreateInfoKHR where
-        type VkImageUsageMType VkSwapchainCreateInfoKHR = VkImageUsageFlags
-
-        {-# NOINLINE vkImageUsage #-}
-        vkImageUsage x
+         CanReadField "imageArrayLayers" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageUsage})
-
-        {-# INLINE vkImageUsageByteOffset #-}
-        vkImageUsageByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, imageUsage}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageArrayLayers})
 
-        {-# INLINE readVkImageUsage #-}
-        readVkImageUsage p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageUsage}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
 
-        {-# INLINE writeVkImageUsage #-}
-        writeVkImageUsage p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageUsage}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageArrayLayers" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
 
 instance {-# OVERLAPPING #-}
          HasField "imageUsage" VkSwapchainCreateInfoKHR where
@@ -575,38 +411,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, imageUsage}
 
-instance CanReadField "imageUsage" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkImageUsage
-
-        {-# INLINE readField #-}
-        readField = readVkImageUsage
-
-instance CanWriteField "imageUsage" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageUsage
-
 instance {-# OVERLAPPING #-}
-         HasVkImageSharingMode VkSwapchainCreateInfoKHR where
-        type VkImageSharingModeMType VkSwapchainCreateInfoKHR =
-             VkSharingMode
-
-        {-# NOINLINE vkImageSharingMode #-}
-        vkImageSharingMode x
+         CanReadField "imageUsage" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageSharingMode})
-
-        {-# INLINE vkImageSharingModeByteOffset #-}
-        vkImageSharingModeByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageUsage})
 
-        {-# INLINE readVkImageSharingMode #-}
-        readVkImageSharingMode p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageUsage}
 
-        {-# INLINE writeVkImageSharingMode #-}
-        writeVkImageSharingMode p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageUsage" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageUsage}
 
 instance {-# OVERLAPPING #-}
          HasField "imageSharingMode" VkSwapchainCreateInfoKHR where
@@ -626,39 +446,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
 
-instance CanReadField "imageSharingMode" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkImageSharingMode
-
-        {-# INLINE readField #-}
-        readField = readVkImageSharingMode
-
-instance CanWriteField "imageSharingMode" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkImageSharingMode
-
 instance {-# OVERLAPPING #-}
-         HasVkQueueFamilyIndexCount VkSwapchainCreateInfoKHR where
-        type VkQueueFamilyIndexCountMType VkSwapchainCreateInfoKHR = Word32
-
-        {-# NOINLINE vkQueueFamilyIndexCount #-}
-        vkQueueFamilyIndexCount x
+         CanReadField "imageSharingMode" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount})
-
-        {-# INLINE vkQueueFamilyIndexCountByteOffset #-}
-        vkQueueFamilyIndexCountByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageSharingMode})
 
-        {-# INLINE readVkQueueFamilyIndexCount #-}
-        readVkQueueFamilyIndexCount p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
 
-        {-# INLINE writeVkQueueFamilyIndexCount #-}
-        writeVkQueueFamilyIndexCount p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "imageSharingMode" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
 
 instance {-# OVERLAPPING #-}
          HasField "queueFamilyIndexCount" VkSwapchainCreateInfoKHR where
@@ -678,42 +481,23 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
 
-instance CanReadField "queueFamilyIndexCount"
-           VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkQueueFamilyIndexCount
+instance {-# OVERLAPPING #-}
+         CanReadField "queueFamilyIndexCount" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount})
 
         {-# INLINE readField #-}
-        readField = readVkQueueFamilyIndexCount
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
 
-instance CanWriteField "queueFamilyIndexCount"
-           VkSwapchainCreateInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "queueFamilyIndexCount" VkSwapchainCreateInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkQueueFamilyIndexCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPQueueFamilyIndices VkSwapchainCreateInfoKHR where
-        type VkPQueueFamilyIndicesMType VkSwapchainCreateInfoKHR =
-             Ptr Word32
-
-        {-# NOINLINE vkPQueueFamilyIndices #-}
-        vkPQueueFamilyIndices x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices})
-
-        {-# INLINE vkPQueueFamilyIndicesByteOffset #-}
-        vkPQueueFamilyIndicesByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
-
-        {-# INLINE readVkPQueueFamilyIndices #-}
-        readVkPQueueFamilyIndices p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
-
-        {-# INLINE writeVkPQueueFamilyIndices #-}
-        writeVkPQueueFamilyIndices p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pQueueFamilyIndices" VkSwapchainCreateInfoKHR where
@@ -733,42 +517,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
 
-instance CanReadField "pQueueFamilyIndices"
-           VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPQueueFamilyIndices
-
-        {-# INLINE readField #-}
-        readField = readVkPQueueFamilyIndices
-
-instance CanWriteField "pQueueFamilyIndices"
-           VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPQueueFamilyIndices
-
 instance {-# OVERLAPPING #-}
-         HasVkPreTransform VkSwapchainCreateInfoKHR where
-        type VkPreTransformMType VkSwapchainCreateInfoKHR =
-             VkSurfaceTransformFlagBitsKHR
-
-        {-# NOINLINE vkPreTransform #-}
-        vkPreTransform x
+         CanReadField "pQueueFamilyIndices" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, preTransform})
-
-        {-# INLINE vkPreTransformByteOffset #-}
-        vkPreTransformByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, preTransform}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices})
 
-        {-# INLINE readVkPreTransform #-}
-        readVkPreTransform p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, preTransform}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
 
-        {-# INLINE writeVkPreTransform #-}
-        writeVkPreTransform p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, preTransform}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pQueueFamilyIndices" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
 
 instance {-# OVERLAPPING #-}
          HasField "preTransform" VkSwapchainCreateInfoKHR where
@@ -786,39 +550,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, preTransform}
 
-instance CanReadField "preTransform" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPreTransform
-
-        {-# INLINE readField #-}
-        readField = readVkPreTransform
-
-instance CanWriteField "preTransform" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPreTransform
-
 instance {-# OVERLAPPING #-}
-         HasVkCompositeAlpha VkSwapchainCreateInfoKHR where
-        type VkCompositeAlphaMType VkSwapchainCreateInfoKHR =
-             VkCompositeAlphaFlagBitsKHR
-
-        {-# NOINLINE vkCompositeAlpha #-}
-        vkCompositeAlpha x
+         CanReadField "preTransform" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, compositeAlpha})
-
-        {-# INLINE vkCompositeAlphaByteOffset #-}
-        vkCompositeAlphaByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, preTransform})
 
-        {-# INLINE readVkCompositeAlpha #-}
-        readVkCompositeAlpha p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, preTransform}
 
-        {-# INLINE writeVkCompositeAlpha #-}
-        writeVkCompositeAlpha p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
+instance {-# OVERLAPPING #-}
+         CanWriteField "preTransform" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, preTransform}
 
 instance {-# OVERLAPPING #-}
          HasField "compositeAlpha" VkSwapchainCreateInfoKHR where
@@ -838,39 +585,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
 
-instance CanReadField "compositeAlpha" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkCompositeAlpha
-
-        {-# INLINE readField #-}
-        readField = readVkCompositeAlpha
-
-instance CanWriteField "compositeAlpha" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkCompositeAlpha
-
 instance {-# OVERLAPPING #-}
-         HasVkPresentMode VkSwapchainCreateInfoKHR where
-        type VkPresentModeMType VkSwapchainCreateInfoKHR = VkPresentModeKHR
-
-        {-# NOINLINE vkPresentMode #-}
-        vkPresentMode x
+         CanReadField "compositeAlpha" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, presentMode})
-
-        {-# INLINE vkPresentModeByteOffset #-}
-        vkPresentModeByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, presentMode}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, compositeAlpha})
 
-        {-# INLINE readVkPresentMode #-}
-        readVkPresentMode p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, presentMode}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
 
-        {-# INLINE writeVkPresentMode #-}
-        writeVkPresentMode p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, presentMode}
+instance {-# OVERLAPPING #-}
+         CanWriteField "compositeAlpha" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
 
 instance {-# OVERLAPPING #-}
          HasField "presentMode" VkSwapchainCreateInfoKHR where
@@ -888,37 +618,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, presentMode}
 
-instance CanReadField "presentMode" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPresentMode
+instance {-# OVERLAPPING #-}
+         CanReadField "presentMode" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, presentMode})
 
         {-# INLINE readField #-}
-        readField = readVkPresentMode
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, presentMode}
 
-instance CanWriteField "presentMode" VkSwapchainCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "presentMode" VkSwapchainCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPresentMode
-
-instance {-# OVERLAPPING #-} HasVkClipped VkSwapchainCreateInfoKHR
-         where
-        type VkClippedMType VkSwapchainCreateInfoKHR = VkBool32
-
-        {-# NOINLINE vkClipped #-}
-        vkClipped x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, clipped})
-
-        {-# INLINE vkClippedByteOffset #-}
-        vkClippedByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, clipped}
-
-        {-# INLINE readVkClipped #-}
-        readVkClipped p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, clipped}
-
-        {-# INLINE writeVkClipped #-}
-        writeVkClipped p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, clipped}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, presentMode}
 
 instance {-# OVERLAPPING #-}
          HasField "clipped" VkSwapchainCreateInfoKHR where
@@ -935,37 +650,22 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, clipped}
 
-instance CanReadField "clipped" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkClipped
-
-        {-# INLINE readField #-}
-        readField = readVkClipped
-
-instance CanWriteField "clipped" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkClipped
-
 instance {-# OVERLAPPING #-}
-         HasVkOldSwapchain VkSwapchainCreateInfoKHR where
-        type VkOldSwapchainMType VkSwapchainCreateInfoKHR = VkSwapchainKHR
-
-        {-# NOINLINE vkOldSwapchain #-}
-        vkOldSwapchain x
+         CanReadField "clipped" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, oldSwapchain})
-
-        {-# INLINE vkOldSwapchainByteOffset #-}
-        vkOldSwapchainByteOffset ~_
-          = #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, clipped})
 
-        {-# INLINE readVkOldSwapchain #-}
-        readVkOldSwapchain p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, clipped}
 
-        {-# INLINE writeVkOldSwapchain #-}
-        writeVkOldSwapchain p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
+instance {-# OVERLAPPING #-}
+         CanWriteField "clipped" VkSwapchainCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, clipped}
 
 instance {-# OVERLAPPING #-}
          HasField "oldSwapchain" VkSwapchainCreateInfoKHR where
@@ -983,127 +683,145 @@
         fieldOffset
           = #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
 
-instance CanReadField "oldSwapchain" VkSwapchainCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkOldSwapchain
+instance {-# OVERLAPPING #-}
+         CanReadField "oldSwapchain" VkSwapchainCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, oldSwapchain})
 
         {-# INLINE readField #-}
-        readField = readVkOldSwapchain
+        readField p
+          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
 
-instance CanWriteField "oldSwapchain" VkSwapchainCreateInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "oldSwapchain" VkSwapchainCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkOldSwapchain
+        writeField p
+          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
 
 instance Show VkSwapchainCreateInfoKHR where
         showsPrec d x
           = showString "VkSwapchainCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkSurface = " .
-                                  showsPrec d (vkSurface x) .
+                                showString "surface = " .
+                                  showsPrec d (getField @"surface" x) .
                                     showString ", " .
-                                      showString "vkMinImageCount = " .
-                                        showsPrec d (vkMinImageCount x) .
+                                      showString "minImageCount = " .
+                                        showsPrec d (getField @"minImageCount" x) .
                                           showString ", " .
-                                            showString "vkImageFormat = " .
-                                              showsPrec d (vkImageFormat x) .
+                                            showString "imageFormat = " .
+                                              showsPrec d (getField @"imageFormat" x) .
                                                 showString ", " .
-                                                  showString "vkImageColorSpace = " .
-                                                    showsPrec d (vkImageColorSpace x) .
+                                                  showString "imageColorSpace = " .
+                                                    showsPrec d (getField @"imageColorSpace" x) .
                                                       showString ", " .
-                                                        showString "vkImageExtent = " .
-                                                          showsPrec d (vkImageExtent x) .
+                                                        showString "imageExtent = " .
+                                                          showsPrec d (getField @"imageExtent" x) .
                                                             showString ", " .
-                                                              showString "vkImageArrayLayers = " .
-                                                                showsPrec d (vkImageArrayLayers x) .
+                                                              showString "imageArrayLayers = " .
+                                                                showsPrec d
+                                                                  (getField @"imageArrayLayers" x)
+                                                                  .
                                                                   showString ", " .
-                                                                    showString "vkImageUsage = " .
-                                                                      showsPrec d (vkImageUsage x) .
+                                                                    showString "imageUsage = " .
+                                                                      showsPrec d
+                                                                        (getField @"imageUsage" x)
+                                                                        .
                                                                         showString ", " .
                                                                           showString
-                                                                            "vkImageSharingMode = "
+                                                                            "imageSharingMode = "
                                                                             .
                                                                             showsPrec d
-                                                                              (vkImageSharingMode x)
+                                                                              (getField
+                                                                                 @"imageSharingMode"
+                                                                                 x)
                                                                               .
                                                                               showString ", " .
                                                                                 showString
-                                                                                  "vkQueueFamilyIndexCount = "
+                                                                                  "queueFamilyIndexCount = "
                                                                                   .
                                                                                   showsPrec d
-                                                                                    (vkQueueFamilyIndexCount
+                                                                                    (getField
+                                                                                       @"queueFamilyIndexCount"
                                                                                        x)
                                                                                     .
                                                                                     showString ", "
                                                                                       .
                                                                                       showString
-                                                                                        "vkPQueueFamilyIndices = "
+                                                                                        "pQueueFamilyIndices = "
                                                                                         .
                                                                                         showsPrec d
-                                                                                          (vkPQueueFamilyIndices
+                                                                                          (getField
+                                                                                             @"pQueueFamilyIndices"
                                                                                              x)
                                                                                           .
                                                                                           showString
                                                                                             ", "
                                                                                             .
                                                                                             showString
-                                                                                              "vkPreTransform = "
+                                                                                              "preTransform = "
                                                                                               .
                                                                                               showsPrec
                                                                                                 d
-                                                                                                (vkPreTransform
+                                                                                                (getField
+                                                                                                   @"preTransform"
                                                                                                    x)
                                                                                                 .
                                                                                                 showString
                                                                                                   ", "
                                                                                                   .
                                                                                                   showString
-                                                                                                    "vkCompositeAlpha = "
+                                                                                                    "compositeAlpha = "
                                                                                                     .
                                                                                                     showsPrec
                                                                                                       d
-                                                                                                      (vkCompositeAlpha
+                                                                                                      (getField
+                                                                                                         @"compositeAlpha"
                                                                                                          x)
                                                                                                       .
                                                                                                       showString
                                                                                                         ", "
                                                                                                         .
                                                                                                         showString
-                                                                                                          "vkPresentMode = "
+                                                                                                          "presentMode = "
                                                                                                           .
                                                                                                           showsPrec
                                                                                                             d
-                                                                                                            (vkPresentMode
+                                                                                                            (getField
+                                                                                                               @"presentMode"
                                                                                                                x)
                                                                                                             .
                                                                                                             showString
                                                                                                               ", "
                                                                                                               .
                                                                                                               showString
-                                                                                                                "vkClipped = "
+                                                                                                                "clipped = "
                                                                                                                 .
                                                                                                                 showsPrec
                                                                                                                   d
-                                                                                                                  (vkClipped
+                                                                                                                  (getField
+                                                                                                                     @"clipped"
                                                                                                                      x)
                                                                                                                   .
                                                                                                                   showString
                                                                                                                     ", "
                                                                                                                     .
                                                                                                                     showString
-                                                                                                                      "vkOldSwapchain = "
+                                                                                                                      "oldSwapchain = "
                                                                                                                       .
                                                                                                                       showsPrec
                                                                                                                         d
-                                                                                                                        (vkOldSwapchain
+                                                                                                                        (getField
+                                                                                                                           @"oldSwapchain"
                                                                                                                            x)
                                                                                                                         .
                                                                                                                         showChar
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkTextureLODGatherFormatPropertiesAMD.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkTextureLODGatherFormatPropertiesAMD.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkTextureLODGatherFormatPropertiesAMD.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkTextureLODGatherFormatPropertiesAMD.hsc
@@ -5,18 +5,18 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkTextureLODGatherFormatPropertiesAMD
        (VkTextureLODGatherFormatPropertiesAMD(..)) where
-import           Foreign.Storable                                         (Storable (..))
+import           Foreign.Storable                                      (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.BaseTypes                          (VkBool32)
-import           Graphics.Vulkan.Types.Enum.VkStructureType               (VkStructureType)
-import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR (VkImageFormatProperties2KHR)
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
+import           Graphics.Vulkan.Types.BaseTypes                       (VkBool32)
+import           Graphics.Vulkan.Types.Enum.VkStructureType            (VkStructureType)
+import           Graphics.Vulkan.Types.Struct.VkImageFormatProperties2 (VkImageFormatProperties2)
+import           System.IO.Unsafe                                      (unsafeDupablePerformIO)
 
 -- | > typedef struct VkTextureLODGatherFormatPropertiesAMD {
 --   >     VkStructureType sType;
@@ -24,7 +24,7 @@
 --   >     VkBool32                         supportsTextureGatherLODBiasAMD;
 --   > } VkTextureLODGatherFormatPropertiesAMD;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkTextureLODGatherFormatPropertiesAMD.html VkTextureLODGatherFormatPropertiesAMD registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkTextureLODGatherFormatPropertiesAMD.html VkTextureLODGatherFormatPropertiesAMD registry at www.khronos.org>
 data VkTextureLODGatherFormatPropertiesAMD = VkTextureLODGatherFormatPropertiesAMD## Addr##
                                                                                     ByteArray##
 
@@ -79,29 +79,7 @@
         type CUnionType VkTextureLODGatherFormatPropertiesAMD = 'False -- ' closing tick for hsc2hs
         type ReturnedOnly VkTextureLODGatherFormatPropertiesAMD = 'True -- ' closing tick for hsc2hs
         type StructExtends VkTextureLODGatherFormatPropertiesAMD =
-             '[VkImageFormatProperties2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasVkSType VkTextureLODGatherFormatPropertiesAMD where
-        type VkSTypeMType VkTextureLODGatherFormatPropertiesAMD =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
+             '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkTextureLODGatherFormatPropertiesAMD where
@@ -121,34 +99,22 @@
         fieldOffset
           = #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
 
-instance CanReadField "sType" VkTextureLODGatherFormatPropertiesAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkTextureLODGatherFormatPropertiesAMD where
-        type VkPNextMType VkTextureLODGatherFormatPropertiesAMD = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkTextureLODGatherFormatPropertiesAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkTextureLODGatherFormatPropertiesAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkTextureLODGatherFormatPropertiesAMD where
@@ -168,38 +134,22 @@
         fieldOffset
           = #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
 
-instance CanReadField "pNext" VkTextureLODGatherFormatPropertiesAMD
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkSupportsTextureGatherLODBiasAMD
-           VkTextureLODGatherFormatPropertiesAMD
-         where
-        type VkSupportsTextureGatherLODBiasAMDMType
-               VkTextureLODGatherFormatPropertiesAMD
-             = VkBool32
-
-        {-# NOINLINE vkSupportsTextureGatherLODBiasAMD #-}
-        vkSupportsTextureGatherLODBiasAMD x
+         CanReadField "pNext" VkTextureLODGatherFormatPropertiesAMD where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD})
-
-        {-# INLINE vkSupportsTextureGatherLODBiasAMDByteOffset #-}
-        vkSupportsTextureGatherLODBiasAMDByteOffset ~_
-          = #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
+              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, pNext})
 
-        {-# INLINE readVkSupportsTextureGatherLODBiasAMD #-}
-        readVkSupportsTextureGatherLODBiasAMD p
-          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
 
-        {-# INLINE writeVkSupportsTextureGatherLODBiasAMD #-}
-        writeVkSupportsTextureGatherLODBiasAMD p
-          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkTextureLODGatherFormatPropertiesAMD where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "supportsTextureGatherLODBiasAMD"
@@ -226,23 +176,36 @@
         fieldOffset
           = #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
 
-instance CanReadField "supportsTextureGatherLODBiasAMD"
+instance {-# OVERLAPPING #-}
+         CanReadField "supportsTextureGatherLODBiasAMD"
            VkTextureLODGatherFormatPropertiesAMD
          where
-        {-# INLINE getField #-}
-        getField = vkSupportsTextureGatherLODBiasAMD
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD})
 
         {-# INLINE readField #-}
-        readField = readVkSupportsTextureGatherLODBiasAMD
+        readField p
+          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
 
+instance {-# OVERLAPPING #-}
+         CanWriteField "supportsTextureGatherLODBiasAMD"
+           VkTextureLODGatherFormatPropertiesAMD
+         where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
+
 instance Show VkTextureLODGatherFormatPropertiesAMD where
         showsPrec d x
           = showString "VkTextureLODGatherFormatPropertiesAMD {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkSupportsTextureGatherLODBiasAMD = " .
-                            showsPrec d (vkSupportsTextureGatherLODBiasAMD x) . showChar '}'
+                          showString "supportsTextureGatherLODBiasAMD = " .
+                            showsPrec d (getField @"supportsTextureGatherLODBiasAMD" x) .
+                              showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkValidationCacheCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkValidationCacheCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkValidationCacheCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkValidationCacheCreateInfoEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkValidationCacheCreateInfoEXT
        (VkValidationCacheCreateInfoEXT(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkValidationCacheCreateFlagsEXT)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkValidationCacheCreateInfoEXT {
@@ -25,7 +25,7 @@
 --   >     const void*            pInitialData;
 --   > } VkValidationCacheCreateInfoEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkValidationCacheCreateInfoEXT.html VkValidationCacheCreateInfoEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkValidationCacheCreateInfoEXT.html VkValidationCacheCreateInfoEXT registry at www.khronos.org>
 data VkValidationCacheCreateInfoEXT = VkValidationCacheCreateInfoEXT## Addr##
                                                                       ByteArray##
 
@@ -79,27 +79,6 @@
         type StructExtends VkValidationCacheCreateInfoEXT = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkValidationCacheCreateInfoEXT where
-        type VkSTypeMType VkValidationCacheCreateInfoEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkValidationCacheCreateInfoEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkValidationCacheCreateInfoEXT where
         type FieldType "sType" VkValidationCacheCreateInfoEXT =
              VkStructureType
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkValidationCacheCreateInfoEXT, sType}
 
-instance CanReadField "sType" VkValidationCacheCreateInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkValidationCacheCreateInfoEXT where
-        type VkPNextMType VkValidationCacheCreateInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkValidationCacheCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkValidationCacheCreateInfoEXT, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkValidationCacheCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkValidationCacheCreateInfoEXT where
@@ -162,38 +126,22 @@
         fieldOffset
           = #{offset VkValidationCacheCreateInfoEXT, pNext}
 
-instance CanReadField "pNext" VkValidationCacheCreateInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkValidationCacheCreateInfoEXT where
-        type VkFlagsMType VkValidationCacheCreateInfoEXT =
-             VkValidationCacheCreateFlagsEXT
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkValidationCacheCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkValidationCacheCreateInfoEXT, flags}
+              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkValidationCacheCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkValidationCacheCreateInfoEXT where
@@ -211,37 +159,22 @@
         fieldOffset
           = #{offset VkValidationCacheCreateInfoEXT, flags}
 
-instance CanReadField "flags" VkValidationCacheCreateInfoEXT where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkInitialDataSize VkValidationCacheCreateInfoEXT where
-        type VkInitialDataSizeMType VkValidationCacheCreateInfoEXT = CSize
-
-        {-# NOINLINE vkInitialDataSize #-}
-        vkInitialDataSize x
+         CanReadField "flags" VkValidationCacheCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, initialDataSize})
-
-        {-# INLINE vkInitialDataSizeByteOffset #-}
-        vkInitialDataSizeByteOffset ~_
-          = #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
+              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, flags})
 
-        {-# INLINE readVkInitialDataSize #-}
-        readVkInitialDataSize p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, flags}
 
-        {-# INLINE writeVkInitialDataSize #-}
-        writeVkInitialDataSize p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkValidationCacheCreateInfoEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "initialDataSize" VkValidationCacheCreateInfoEXT where
@@ -261,41 +194,23 @@
         fieldOffset
           = #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
 
-instance CanReadField "initialDataSize"
-           VkValidationCacheCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkInitialDataSize
+instance {-# OVERLAPPING #-}
+         CanReadField "initialDataSize" VkValidationCacheCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, initialDataSize})
 
         {-# INLINE readField #-}
-        readField = readVkInitialDataSize
+        readField p
+          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
 
-instance CanWriteField "initialDataSize"
-           VkValidationCacheCreateInfoEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "initialDataSize" VkValidationCacheCreateInfoEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkInitialDataSize
-
-instance {-# OVERLAPPING #-}
-         HasVkPInitialData VkValidationCacheCreateInfoEXT where
-        type VkPInitialDataMType VkValidationCacheCreateInfoEXT = Ptr Void
-
-        {-# NOINLINE vkPInitialData #-}
-        vkPInitialData x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, pInitialData})
-
-        {-# INLINE vkPInitialDataByteOffset #-}
-        vkPInitialDataByteOffset ~_
-          = #{offset VkValidationCacheCreateInfoEXT, pInitialData}
-
-        {-# INLINE readVkPInitialData #-}
-        readVkPInitialData p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, pInitialData}
-
-        {-# INLINE writeVkPInitialData #-}
-        writeVkPInitialData p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, pInitialData}
+        writeField p
+          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
 
 instance {-# OVERLAPPING #-}
          HasField "pInitialData" VkValidationCacheCreateInfoEXT where
@@ -315,34 +230,37 @@
         fieldOffset
           = #{offset VkValidationCacheCreateInfoEXT, pInitialData}
 
-instance CanReadField "pInitialData" VkValidationCacheCreateInfoEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPInitialData
+instance {-# OVERLAPPING #-}
+         CanReadField "pInitialData" VkValidationCacheCreateInfoEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, pInitialData})
 
         {-# INLINE readField #-}
-        readField = readVkPInitialData
+        readField p
+          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, pInitialData}
 
-instance CanWriteField "pInitialData"
-           VkValidationCacheCreateInfoEXT
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pInitialData" VkValidationCacheCreateInfoEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkPInitialData
+        writeField p
+          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, pInitialData}
 
 instance Show VkValidationCacheCreateInfoEXT where
         showsPrec d x
           = showString "VkValidationCacheCreateInfoEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkInitialDataSize = " .
-                                  showsPrec d (vkInitialDataSize x) .
+                                showString "initialDataSize = " .
+                                  showsPrec d (getField @"initialDataSize" x) .
                                     showString ", " .
-                                      showString "vkPInitialData = " .
-                                        showsPrec d (vkPInitialData x) . showChar '}'
+                                      showString "pInitialData = " .
+                                        showsPrec d (getField @"pInitialData" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkValidationFlagsEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkValidationFlagsEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkValidationFlagsEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkValidationFlagsEXT.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkValidationFlagsEXT
        (VkValidationFlagsEXT(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType        (VkStructureType)
 import           Graphics.Vulkan.Types.Enum.VkValidationCheckEXT   (VkValidationCheckEXT)
 import           Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo (VkInstanceCreateInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkValidationFlagsEXT {
@@ -25,7 +25,7 @@
 --   >     VkValidationCheckEXT* pDisabledValidationChecks;
 --   > } VkValidationFlagsEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkValidationFlagsEXT.html VkValidationFlagsEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkValidationFlagsEXT.html VkValidationFlagsEXT registry at www.khronos.org>
 data VkValidationFlagsEXT = VkValidationFlagsEXT## Addr## ByteArray##
 
 instance Eq VkValidationFlagsEXT where
@@ -74,26 +74,6 @@
         type ReturnedOnly VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkValidationFlagsEXT = '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkValidationFlagsEXT where
-        type VkSTypeMType VkValidationFlagsEXT = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkValidationFlagsEXT, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkValidationFlagsEXT, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkValidationFlagsEXT
          where
         type FieldType "sType" VkValidationFlagsEXT = VkStructureType
@@ -108,36 +88,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkValidationFlagsEXT, sType}
 
-instance CanReadField "sType" VkValidationFlagsEXT where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkValidationFlagsEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkValidationFlagsEXT, sType}
 
-instance CanWriteField "sType" VkValidationFlagsEXT where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkValidationFlagsEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkValidationFlagsEXT where
-        type VkPNextMType VkValidationFlagsEXT = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkValidationFlagsEXT, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkValidationFlagsEXT, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkValidationFlagsEXT, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkValidationFlagsEXT
          where
@@ -153,38 +119,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkValidationFlagsEXT, pNext}
 
-instance CanReadField "pNext" VkValidationFlagsEXT where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkValidationFlagsEXT where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkDisabledValidationCheckCount VkValidationFlagsEXT where
-        type VkDisabledValidationCheckCountMType VkValidationFlagsEXT =
-             Word32
-
-        {-# NOINLINE vkDisabledValidationCheckCount #-}
-        vkDisabledValidationCheckCount x
+         CanReadField "pNext" VkValidationFlagsEXT where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, disabledValidationCheckCount})
-
-        {-# INLINE vkDisabledValidationCheckCountByteOffset #-}
-        vkDisabledValidationCheckCountByteOffset ~_
-          = #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
+              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, pNext})
 
-        {-# INLINE readVkDisabledValidationCheckCount #-}
-        readVkDisabledValidationCheckCount p
-          = peekByteOff p #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkValidationFlagsEXT, pNext}
 
-        {-# INLINE writeVkDisabledValidationCheckCount #-}
-        writeVkDisabledValidationCheckCount p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkValidationFlagsEXT where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkValidationFlagsEXT, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "disabledValidationCheckCount" VkValidationFlagsEXT where
@@ -208,42 +158,24 @@
         fieldOffset
           = #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
 
-instance CanReadField "disabledValidationCheckCount"
-           VkValidationFlagsEXT
+instance {-# OVERLAPPING #-}
+         CanReadField "disabledValidationCheckCount" VkValidationFlagsEXT
          where
-        {-# INLINE getField #-}
-        getField = vkDisabledValidationCheckCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, disabledValidationCheckCount})
 
         {-# INLINE readField #-}
-        readField = readVkDisabledValidationCheckCount
+        readField p
+          = peekByteOff p #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
 
-instance CanWriteField "disabledValidationCheckCount"
-           VkValidationFlagsEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "disabledValidationCheckCount" VkValidationFlagsEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkDisabledValidationCheckCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPDisabledValidationChecks VkValidationFlagsEXT where
-        type VkPDisabledValidationChecksMType VkValidationFlagsEXT =
-             Ptr VkValidationCheckEXT
-
-        {-# NOINLINE vkPDisabledValidationChecks #-}
-        vkPDisabledValidationChecks x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, pDisabledValidationChecks})
-
-        {-# INLINE vkPDisabledValidationChecksByteOffset #-}
-        vkPDisabledValidationChecksByteOffset ~_
-          = #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
-
-        {-# INLINE readVkPDisabledValidationChecks #-}
-        readVkPDisabledValidationChecks p
-          = peekByteOff p #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
-
-        {-# INLINE writeVkPDisabledValidationChecks #-}
-        writeVkPDisabledValidationChecks p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
+        writeField p
+          = pokeByteOff p #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pDisabledValidationChecks" VkValidationFlagsEXT where
@@ -263,32 +195,36 @@
         fieldOffset
           = #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
 
-instance CanReadField "pDisabledValidationChecks"
-           VkValidationFlagsEXT
-         where
-        {-# INLINE getField #-}
-        getField = vkPDisabledValidationChecks
+instance {-# OVERLAPPING #-}
+         CanReadField "pDisabledValidationChecks" VkValidationFlagsEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, pDisabledValidationChecks})
 
         {-# INLINE readField #-}
-        readField = readVkPDisabledValidationChecks
+        readField p
+          = peekByteOff p #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
 
-instance CanWriteField "pDisabledValidationChecks"
-           VkValidationFlagsEXT
+instance {-# OVERLAPPING #-}
+         CanWriteField "pDisabledValidationChecks" VkValidationFlagsEXT
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPDisabledValidationChecks
+        writeField p
+          = pokeByteOff p #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
 
 instance Show VkValidationFlagsEXT where
         showsPrec d x
           = showString "VkValidationFlagsEXT {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDisabledValidationCheckCount = " .
-                            showsPrec d (vkDisabledValidationCheckCount x) .
+                          showString "disabledValidationCheckCount = " .
+                            showsPrec d (getField @"disabledValidationCheckCount" x) .
                               showString ", " .
-                                showString "vkPDisabledValidationChecks = " .
-                                  showsPrec d (vkPDisabledValidationChecks x) . showChar '}'
+                                showString "pDisabledValidationChecks = " .
+                                  showsPrec d (getField @"pDisabledValidationChecks" x) .
+                                    showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputAttributeDescription.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputAttributeDescription.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputAttributeDescription.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputAttributeDescription.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription
        (VkVertexInputAttributeDescription(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkFormat (VkFormat)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                    (unsafeDupablePerformIO)
 
 -- | > typedef struct VkVertexInputAttributeDescription {
@@ -23,7 +23,7 @@
 --   >     uint32_t               offset;
 --   > } VkVertexInputAttributeDescription;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkVertexInputAttributeDescription.html VkVertexInputAttributeDescription registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkVertexInputAttributeDescription.html VkVertexInputAttributeDescription registry at www.khronos.org>
 data VkVertexInputAttributeDescription = VkVertexInputAttributeDescription## Addr##
                                                                             ByteArray##
 
@@ -78,27 +78,6 @@
         type StructExtends VkVertexInputAttributeDescription = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkLocation VkVertexInputAttributeDescription where
-        type VkLocationMType VkVertexInputAttributeDescription = Word32
-
-        {-# NOINLINE vkLocation #-}
-        vkLocation x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, location})
-
-        {-# INLINE vkLocationByteOffset #-}
-        vkLocationByteOffset ~_
-          = #{offset VkVertexInputAttributeDescription, location}
-
-        {-# INLINE readVkLocation #-}
-        readVkLocation p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, location}
-
-        {-# INLINE writeVkLocation #-}
-        writeVkLocation p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, location}
-
-instance {-# OVERLAPPING #-}
          HasField "location" VkVertexInputAttributeDescription where
         type FieldType "location" VkVertexInputAttributeDescription =
              Word32
@@ -116,39 +95,22 @@
         fieldOffset
           = #{offset VkVertexInputAttributeDescription, location}
 
-instance CanReadField "location" VkVertexInputAttributeDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkLocation
-
-        {-# INLINE readField #-}
-        readField = readVkLocation
-
-instance CanWriteField "location" VkVertexInputAttributeDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkLocation
-
 instance {-# OVERLAPPING #-}
-         HasVkBinding VkVertexInputAttributeDescription where
-        type VkBindingMType VkVertexInputAttributeDescription = Word32
-
-        {-# NOINLINE vkBinding #-}
-        vkBinding x
+         CanReadField "location" VkVertexInputAttributeDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, binding})
-
-        {-# INLINE vkBindingByteOffset #-}
-        vkBindingByteOffset ~_
-          = #{offset VkVertexInputAttributeDescription, binding}
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, location})
 
-        {-# INLINE readVkBinding #-}
-        readVkBinding p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, binding}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkVertexInputAttributeDescription, location}
 
-        {-# INLINE writeVkBinding #-}
-        writeVkBinding p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, binding}
+instance {-# OVERLAPPING #-}
+         CanWriteField "location" VkVertexInputAttributeDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputAttributeDescription, location}
 
 instance {-# OVERLAPPING #-}
          HasField "binding" VkVertexInputAttributeDescription where
@@ -167,39 +129,22 @@
         fieldOffset
           = #{offset VkVertexInputAttributeDescription, binding}
 
-instance CanReadField "binding" VkVertexInputAttributeDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkBinding
-
-        {-# INLINE readField #-}
-        readField = readVkBinding
-
-instance CanWriteField "binding" VkVertexInputAttributeDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBinding
-
 instance {-# OVERLAPPING #-}
-         HasVkFormat VkVertexInputAttributeDescription where
-        type VkFormatMType VkVertexInputAttributeDescription = VkFormat
-
-        {-# NOINLINE vkFormat #-}
-        vkFormat x
+         CanReadField "binding" VkVertexInputAttributeDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, format})
-
-        {-# INLINE vkFormatByteOffset #-}
-        vkFormatByteOffset ~_
-          = #{offset VkVertexInputAttributeDescription, format}
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, binding})
 
-        {-# INLINE readVkFormat #-}
-        readVkFormat p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, format}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkVertexInputAttributeDescription, binding}
 
-        {-# INLINE writeVkFormat #-}
-        writeVkFormat p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, format}
+instance {-# OVERLAPPING #-}
+         CanWriteField "binding" VkVertexInputAttributeDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputAttributeDescription, binding}
 
 instance {-# OVERLAPPING #-}
          HasField "format" VkVertexInputAttributeDescription where
@@ -219,39 +164,22 @@
         fieldOffset
           = #{offset VkVertexInputAttributeDescription, format}
 
-instance CanReadField "format" VkVertexInputAttributeDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkFormat
-
-        {-# INLINE readField #-}
-        readField = readVkFormat
-
-instance CanWriteField "format" VkVertexInputAttributeDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkFormat
-
 instance {-# OVERLAPPING #-}
-         HasVkOffset VkVertexInputAttributeDescription where
-        type VkOffsetMType VkVertexInputAttributeDescription = Word32
-
-        {-# NOINLINE vkOffset #-}
-        vkOffset x
+         CanReadField "format" VkVertexInputAttributeDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, offset})
-
-        {-# INLINE vkOffsetByteOffset #-}
-        vkOffsetByteOffset ~_
-          = #{offset VkVertexInputAttributeDescription, offset}
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, format})
 
-        {-# INLINE readVkOffset #-}
-        readVkOffset p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, offset}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkVertexInputAttributeDescription, format}
 
-        {-# INLINE writeVkOffset #-}
-        writeVkOffset p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, offset}
+instance {-# OVERLAPPING #-}
+         CanWriteField "format" VkVertexInputAttributeDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputAttributeDescription, format}
 
 instance {-# OVERLAPPING #-}
          HasField "offset" VkVertexInputAttributeDescription where
@@ -270,29 +198,34 @@
         fieldOffset
           = #{offset VkVertexInputAttributeDescription, offset}
 
-instance CanReadField "offset" VkVertexInputAttributeDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkOffset
+instance {-# OVERLAPPING #-}
+         CanReadField "offset" VkVertexInputAttributeDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, offset})
 
         {-# INLINE readField #-}
-        readField = readVkOffset
+        readField p
+          = peekByteOff p #{offset VkVertexInputAttributeDescription, offset}
 
-instance CanWriteField "offset" VkVertexInputAttributeDescription
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "offset" VkVertexInputAttributeDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkOffset
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputAttributeDescription, offset}
 
 instance Show VkVertexInputAttributeDescription where
         showsPrec d x
           = showString "VkVertexInputAttributeDescription {" .
-              showString "vkLocation = " .
-                showsPrec d (vkLocation x) .
+              showString "location = " .
+                showsPrec d (getField @"location" x) .
                   showString ", " .
-                    showString "vkBinding = " .
-                      showsPrec d (vkBinding x) .
+                    showString "binding = " .
+                      showsPrec d (getField @"binding" x) .
                         showString ", " .
-                          showString "vkFormat = " .
-                            showsPrec d (vkFormat x) .
+                          showString "format = " .
+                            showsPrec d (getField @"format" x) .
                               showString ", " .
-                                showString "vkOffset = " . showsPrec d (vkOffset x) . showChar '}'
+                                showString "offset = " .
+                                  showsPrec d (getField @"offset" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDescription.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDescription.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDescription.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDescription.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription
        (VkVertexInputBindingDescription(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkVertexInputRate (VkVertexInputRate)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkVertexInputBindingDescription {
@@ -22,7 +22,7 @@
 --   >     VkVertexInputRate      inputRate;
 --   > } VkVertexInputBindingDescription;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkVertexInputBindingDescription.html VkVertexInputBindingDescription registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkVertexInputBindingDescription.html VkVertexInputBindingDescription registry at www.khronos.org>
 data VkVertexInputBindingDescription = VkVertexInputBindingDescription## Addr##
                                                                         ByteArray##
 
@@ -76,27 +76,6 @@
         type StructExtends VkVertexInputBindingDescription = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkBinding VkVertexInputBindingDescription where
-        type VkBindingMType VkVertexInputBindingDescription = Word32
-
-        {-# NOINLINE vkBinding #-}
-        vkBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, binding})
-
-        {-# INLINE vkBindingByteOffset #-}
-        vkBindingByteOffset ~_
-          = #{offset VkVertexInputBindingDescription, binding}
-
-        {-# INLINE readVkBinding #-}
-        readVkBinding p
-          = peekByteOff p #{offset VkVertexInputBindingDescription, binding}
-
-        {-# INLINE writeVkBinding #-}
-        writeVkBinding p
-          = pokeByteOff p #{offset VkVertexInputBindingDescription, binding}
-
-instance {-# OVERLAPPING #-}
          HasField "binding" VkVertexInputBindingDescription where
         type FieldType "binding" VkVertexInputBindingDescription = Word32
         type FieldOptional "binding" VkVertexInputBindingDescription =
@@ -113,39 +92,22 @@
         fieldOffset
           = #{offset VkVertexInputBindingDescription, binding}
 
-instance CanReadField "binding" VkVertexInputBindingDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkBinding
-
-        {-# INLINE readField #-}
-        readField = readVkBinding
-
-instance CanWriteField "binding" VkVertexInputBindingDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkBinding
-
 instance {-# OVERLAPPING #-}
-         HasVkStride VkVertexInputBindingDescription where
-        type VkStrideMType VkVertexInputBindingDescription = Word32
-
-        {-# NOINLINE vkStride #-}
-        vkStride x
+         CanReadField "binding" VkVertexInputBindingDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, stride})
-
-        {-# INLINE vkStrideByteOffset #-}
-        vkStrideByteOffset ~_
-          = #{offset VkVertexInputBindingDescription, stride}
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, binding})
 
-        {-# INLINE readVkStride #-}
-        readVkStride p
-          = peekByteOff p #{offset VkVertexInputBindingDescription, stride}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkVertexInputBindingDescription, binding}
 
-        {-# INLINE writeVkStride #-}
-        writeVkStride p
-          = pokeByteOff p #{offset VkVertexInputBindingDescription, stride}
+instance {-# OVERLAPPING #-}
+         CanWriteField "binding" VkVertexInputBindingDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputBindingDescription, binding}
 
 instance {-# OVERLAPPING #-}
          HasField "stride" VkVertexInputBindingDescription where
@@ -163,40 +125,22 @@
         fieldOffset
           = #{offset VkVertexInputBindingDescription, stride}
 
-instance CanReadField "stride" VkVertexInputBindingDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkStride
-
-        {-# INLINE readField #-}
-        readField = readVkStride
-
-instance CanWriteField "stride" VkVertexInputBindingDescription
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkStride
-
 instance {-# OVERLAPPING #-}
-         HasVkInputRate VkVertexInputBindingDescription where
-        type VkInputRateMType VkVertexInputBindingDescription =
-             VkVertexInputRate
-
-        {-# NOINLINE vkInputRate #-}
-        vkInputRate x
+         CanReadField "stride" VkVertexInputBindingDescription where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, inputRate})
-
-        {-# INLINE vkInputRateByteOffset #-}
-        vkInputRateByteOffset ~_
-          = #{offset VkVertexInputBindingDescription, inputRate}
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, stride})
 
-        {-# INLINE readVkInputRate #-}
-        readVkInputRate p
-          = peekByteOff p #{offset VkVertexInputBindingDescription, inputRate}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkVertexInputBindingDescription, stride}
 
-        {-# INLINE writeVkInputRate #-}
-        writeVkInputRate p
-          = pokeByteOff p #{offset VkVertexInputBindingDescription, inputRate}
+instance {-# OVERLAPPING #-}
+         CanWriteField "stride" VkVertexInputBindingDescription where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputBindingDescription, stride}
 
 instance {-# OVERLAPPING #-}
          HasField "inputRate" VkVertexInputBindingDescription where
@@ -216,27 +160,31 @@
         fieldOffset
           = #{offset VkVertexInputBindingDescription, inputRate}
 
-instance CanReadField "inputRate" VkVertexInputBindingDescription
-         where
-        {-# INLINE getField #-}
-        getField = vkInputRate
+instance {-# OVERLAPPING #-}
+         CanReadField "inputRate" VkVertexInputBindingDescription where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, inputRate})
 
         {-# INLINE readField #-}
-        readField = readVkInputRate
+        readField p
+          = peekByteOff p #{offset VkVertexInputBindingDescription, inputRate}
 
-instance CanWriteField "inputRate" VkVertexInputBindingDescription
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "inputRate" VkVertexInputBindingDescription where
         {-# INLINE writeField #-}
-        writeField = writeVkInputRate
+        writeField p
+          = pokeByteOff p #{offset VkVertexInputBindingDescription, inputRate}
 
 instance Show VkVertexInputBindingDescription where
         showsPrec d x
           = showString "VkVertexInputBindingDescription {" .
-              showString "vkBinding = " .
-                showsPrec d (vkBinding x) .
+              showString "binding = " .
+                showsPrec d (getField @"binding" x) .
                   showString ", " .
-                    showString "vkStride = " .
-                      showsPrec d (vkStride x) .
+                    showString "stride = " .
+                      showsPrec d (getField @"stride" x) .
                         showString ", " .
-                          showString "vkInputRate = " .
-                            showsPrec d (vkInputRate x) . showChar '}'
+                          showString "inputRate = " .
+                            showsPrec d (getField @"inputRate" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDivisorDescriptionEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDivisorDescriptionEXT.hsc
new file mode 100644
--- /dev/null
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkVertexInputBindingDivisorDescriptionEXT.hsc
@@ -0,0 +1,172 @@
+#include "vulkan/vulkan.h"
+
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MagicHash             #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.VkVertexInputBindingDivisorDescriptionEXT
+       (VkVertexInputBindingDivisorDescriptionEXT(..)) where
+import           Foreign.Storable                 (Storable (..))
+import           GHC.Prim
+import           Graphics.Vulkan.Marshal
+import           Graphics.Vulkan.Marshal.Internal
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
+
+-- | > typedef struct VkVertexInputBindingDivisorDescriptionEXT {
+--   >     uint32_t          binding;
+--   >     uint32_t          divisor;
+--   > } VkVertexInputBindingDivisorDescriptionEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkVertexInputBindingDivisorDescriptionEXT.html VkVertexInputBindingDivisorDescriptionEXT registry at www.khronos.org>
+data VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescriptionEXT## Addr##
+                                                                                            ByteArray##
+
+instance Eq VkVertexInputBindingDivisorDescriptionEXT where
+        (VkVertexInputBindingDivisorDescriptionEXT## a _) ==
+          x@(VkVertexInputBindingDivisorDescriptionEXT## b _)
+          = EQ == cmpBytes## (sizeOf x) a b
+
+        {-# INLINE (==) #-}
+
+instance Ord VkVertexInputBindingDivisorDescriptionEXT where
+        (VkVertexInputBindingDivisorDescriptionEXT## a _) `compare`
+          x@(VkVertexInputBindingDivisorDescriptionEXT## b _)
+          = cmpBytes## (sizeOf x) a 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 VulkanMarshalPrim
+           VkVertexInputBindingDivisorDescriptionEXT
+         where
+        unsafeAddr (VkVertexInputBindingDivisorDescriptionEXT## a _) = a
+
+        {-# INLINE unsafeAddr #-}
+        unsafeByteArray (VkVertexInputBindingDivisorDescriptionEXT## _ b)
+          = b
+
+        {-# INLINE unsafeByteArray #-}
+        unsafeFromByteArrayOffset off b
+          = VkVertexInputBindingDivisorDescriptionEXT##
+              (plusAddr## (byteArrayContents## b) off)
+              b
+
+        {-# INLINE unsafeFromByteArrayOffset #-}
+
+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 '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkViSurfaceCreateInfoNN.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkViSurfaceCreateInfoNN.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkViSurfaceCreateInfoNN.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkViSurfaceCreateInfoNN.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkViSurfaceCreateInfoNN
        (VkViSurfaceCreateInfoNN(..)) where
@@ -14,7 +15,6 @@
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Bitmasks             (VkViSurfaceCreateFlagsNN)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkViSurfaceCreateInfoNN {
@@ -24,7 +24,7 @@
 --   >     void*                            window;
 --   > } VkViSurfaceCreateInfoNN;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkViSurfaceCreateInfoNN.html VkViSurfaceCreateInfoNN registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkViSurfaceCreateInfoNN.html VkViSurfaceCreateInfoNN registry at www.khronos.org>
 data VkViSurfaceCreateInfoNN = VkViSurfaceCreateInfoNN## Addr##
                                                         ByteArray##
 
@@ -73,27 +73,6 @@
         type ReturnedOnly VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
         type StructExtends VkViSurfaceCreateInfoNN = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkViSurfaceCreateInfoNN
-         where
-        type VkSTypeMType VkViSurfaceCreateInfoNN = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkViSurfaceCreateInfoNN, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkViSurfaceCreateInfoNN where
         type FieldType "sType" VkViSurfaceCreateInfoNN = VkStructureType
@@ -108,37 +87,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViSurfaceCreateInfoNN, sType}
 
-instance CanReadField "sType" VkViSurfaceCreateInfoNN where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkViSurfaceCreateInfoNN where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, sType}
 
-instance CanWriteField "sType" VkViSurfaceCreateInfoNN where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkViSurfaceCreateInfoNN where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkViSurfaceCreateInfoNN
-         where
-        type VkPNextMType VkViSurfaceCreateInfoNN = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkViSurfaceCreateInfoNN, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkViSurfaceCreateInfoNN where
@@ -154,38 +118,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViSurfaceCreateInfoNN, pNext}
 
-instance CanReadField "pNext" VkViSurfaceCreateInfoNN where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkViSurfaceCreateInfoNN where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, pNext}
 
-instance CanWriteField "pNext" VkViSurfaceCreateInfoNN where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkViSurfaceCreateInfoNN where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkViSurfaceCreateInfoNN
-         where
-        type VkFlagsMType VkViSurfaceCreateInfoNN =
-             VkViSurfaceCreateFlagsNN
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkViSurfaceCreateInfoNN, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, flags}
+        writeField p
+          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkViSurfaceCreateInfoNN where
@@ -202,37 +150,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViSurfaceCreateInfoNN, flags}
 
-instance CanReadField "flags" VkViSurfaceCreateInfoNN where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkViSurfaceCreateInfoNN where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, flags}
 
-instance CanWriteField "flags" VkViSurfaceCreateInfoNN where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkViSurfaceCreateInfoNN where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkWindow VkViSurfaceCreateInfoNN
-         where
-        type VkWindowMType VkViSurfaceCreateInfoNN = Ptr Void
-
-        {-# NOINLINE vkWindow #-}
-        vkWindow x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, window})
-
-        {-# INLINE vkWindowByteOffset #-}
-        vkWindowByteOffset ~_
-          = #{offset VkViSurfaceCreateInfoNN, window}
-
-        {-# INLINE readVkWindow #-}
-        readVkWindow p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, window}
-
-        {-# INLINE writeVkWindow #-}
-        writeVkWindow p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, window}
+        writeField p
+          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "window" VkViSurfaceCreateInfoNN where
@@ -248,27 +181,34 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViSurfaceCreateInfoNN, window}
 
-instance CanReadField "window" VkViSurfaceCreateInfoNN where
-        {-# INLINE getField #-}
-        getField = vkWindow
+instance {-# OVERLAPPING #-}
+         CanReadField "window" VkViSurfaceCreateInfoNN where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, window})
 
         {-# INLINE readField #-}
-        readField = readVkWindow
+        readField p
+          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, window}
 
-instance CanWriteField "window" VkViSurfaceCreateInfoNN where
+instance {-# OVERLAPPING #-}
+         CanWriteField "window" VkViSurfaceCreateInfoNN where
         {-# INLINE writeField #-}
-        writeField = writeVkWindow
+        writeField p
+          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, window}
 
 instance Show VkViSurfaceCreateInfoNN where
         showsPrec d x
           = showString "VkViSurfaceCreateInfoNN {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkWindow = " . showsPrec d (vkWindow x) . showChar '}'
+                                showString "window = " .
+                                  showsPrec d (getField @"window" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkViewport.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkViewport.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkViewport.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkViewport.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkViewport (VkViewport(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkViewport {
 --   >     float          x;
@@ -24,7 +24,7 @@
 --   >     float          maxDepth;
 --   > } VkViewport;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkViewport.html VkViewport registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkViewport.html VkViewport registry at www.khronos.org>
 data VkViewport = VkViewport## Addr## ByteArray##
 
 instance Eq VkViewport where
@@ -72,23 +72,6 @@
         type ReturnedOnly VkViewport = 'False -- ' closing tick for hsc2hs
         type StructExtends VkViewport = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkViewport where
-        type VkXMType VkViewport = #{type float}
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_ = #{offset VkViewport, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p = peekByteOff p #{offset VkViewport, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p = pokeByteOff p #{offset VkViewport, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkViewport where
         type FieldType "x" VkViewport = #{type float}
         type FieldOptional "x" VkViewport = 'False -- ' closing tick for hsc2hs
@@ -102,33 +85,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewport, x}
 
-instance CanReadField "x" VkViewport where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-} CanReadField "x" VkViewport where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewport, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p = peekByteOff p #{offset VkViewport, x}
 
-instance CanWriteField "x" VkViewport where
+instance {-# OVERLAPPING #-} CanWriteField "x" VkViewport where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkViewport where
-        type VkYMType VkViewport = #{type float}
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_ = #{offset VkViewport, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p = peekByteOff p #{offset VkViewport, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p = pokeByteOff p #{offset VkViewport, y}
+        writeField p = pokeByteOff p #{offset VkViewport, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkViewport where
         type FieldType "y" VkViewport = #{type float}
@@ -143,35 +111,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewport, y}
 
-instance CanReadField "y" VkViewport where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-} CanReadField "y" VkViewport where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewport, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p = peekByteOff p #{offset VkViewport, y}
 
-instance CanWriteField "y" VkViewport where
+instance {-# OVERLAPPING #-} CanWriteField "y" VkViewport where
         {-# INLINE writeField #-}
-        writeField = writeVkY
-
-instance {-# OVERLAPPING #-} HasVkWidth VkViewport where
-        type VkWidthMType VkViewport = #{type float}
-
-        {-# NOINLINE vkWidth #-}
-        vkWidth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, width})
-
-        {-# INLINE vkWidthByteOffset #-}
-        vkWidthByteOffset ~_ = #{offset VkViewport, width}
-
-        {-# INLINE readVkWidth #-}
-        readVkWidth p
-          = peekByteOff p #{offset VkViewport, width}
-
-        {-# INLINE writeVkWidth #-}
-        writeVkWidth p
-          = pokeByteOff p #{offset VkViewport, width}
+        writeField p = pokeByteOff p #{offset VkViewport, y}
 
 instance {-# OVERLAPPING #-} HasField "width" VkViewport where
         type FieldType "width" VkViewport = #{type float}
@@ -186,35 +137,19 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewport, width}
 
-instance CanReadField "width" VkViewport where
-        {-# INLINE getField #-}
-        getField = vkWidth
+instance {-# OVERLAPPING #-} CanReadField "width" VkViewport where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewport, width})
 
         {-# INLINE readField #-}
-        readField = readVkWidth
+        readField p = peekByteOff p #{offset VkViewport, width}
 
-instance CanWriteField "width" VkViewport where
+instance {-# OVERLAPPING #-} CanWriteField "width" VkViewport where
         {-# INLINE writeField #-}
-        writeField = writeVkWidth
-
-instance {-# OVERLAPPING #-} HasVkHeight VkViewport where
-        type VkHeightMType VkViewport = #{type float}
-
-        {-# NOINLINE vkHeight #-}
-        vkHeight x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, height})
-
-        {-# INLINE vkHeightByteOffset #-}
-        vkHeightByteOffset ~_ = #{offset VkViewport, height}
-
-        {-# INLINE readVkHeight #-}
-        readVkHeight p
-          = peekByteOff p #{offset VkViewport, height}
-
-        {-# INLINE writeVkHeight #-}
-        writeVkHeight p
-          = pokeByteOff p #{offset VkViewport, height}
+        writeField p
+          = pokeByteOff p #{offset VkViewport, width}
 
 instance {-# OVERLAPPING #-} HasField "height" VkViewport where
         type FieldType "height" VkViewport = #{type float}
@@ -229,36 +164,21 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewport, height}
 
-instance CanReadField "height" VkViewport where
-        {-# INLINE getField #-}
-        getField = vkHeight
+instance {-# OVERLAPPING #-} CanReadField "height" VkViewport where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewport, height})
 
         {-# INLINE readField #-}
-        readField = readVkHeight
+        readField p
+          = peekByteOff p #{offset VkViewport, height}
 
-instance CanWriteField "height" VkViewport where
+instance {-# OVERLAPPING #-} CanWriteField "height" VkViewport
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkHeight
-
-instance {-# OVERLAPPING #-} HasVkMinDepth VkViewport where
-        type VkMinDepthMType VkViewport = #{type float}
-
-        {-# NOINLINE vkMinDepth #-}
-        vkMinDepth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, minDepth})
-
-        {-# INLINE vkMinDepthByteOffset #-}
-        vkMinDepthByteOffset ~_
-          = #{offset VkViewport, minDepth}
-
-        {-# INLINE readVkMinDepth #-}
-        readVkMinDepth p
-          = peekByteOff p #{offset VkViewport, minDepth}
-
-        {-# INLINE writeVkMinDepth #-}
-        writeVkMinDepth p
-          = pokeByteOff p #{offset VkViewport, minDepth}
+        writeField p
+          = pokeByteOff p #{offset VkViewport, height}
 
 instance {-# OVERLAPPING #-} HasField "minDepth" VkViewport where
         type FieldType "minDepth" VkViewport = #{type float}
@@ -273,36 +193,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewport, minDepth}
 
-instance CanReadField "minDepth" VkViewport where
-        {-# INLINE getField #-}
-        getField = vkMinDepth
+instance {-# OVERLAPPING #-} CanReadField "minDepth" VkViewport
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewport, minDepth})
 
         {-# INLINE readField #-}
-        readField = readVkMinDepth
+        readField p
+          = peekByteOff p #{offset VkViewport, minDepth}
 
-instance CanWriteField "minDepth" VkViewport where
+instance {-# OVERLAPPING #-} CanWriteField "minDepth" VkViewport
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkMinDepth
-
-instance {-# OVERLAPPING #-} HasVkMaxDepth VkViewport where
-        type VkMaxDepthMType VkViewport = #{type float}
-
-        {-# NOINLINE vkMaxDepth #-}
-        vkMaxDepth x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, maxDepth})
-
-        {-# INLINE vkMaxDepthByteOffset #-}
-        vkMaxDepthByteOffset ~_
-          = #{offset VkViewport, maxDepth}
-
-        {-# INLINE readVkMaxDepth #-}
-        readVkMaxDepth p
-          = peekByteOff p #{offset VkViewport, maxDepth}
-
-        {-# INLINE writeVkMaxDepth #-}
-        writeVkMaxDepth p
-          = pokeByteOff p #{offset VkViewport, maxDepth}
+        writeField p
+          = pokeByteOff p #{offset VkViewport, minDepth}
 
 instance {-# OVERLAPPING #-} HasField "maxDepth" VkViewport where
         type FieldType "maxDepth" VkViewport = #{type float}
@@ -317,34 +223,40 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewport, maxDepth}
 
-instance CanReadField "maxDepth" VkViewport where
-        {-# INLINE getField #-}
-        getField = vkMaxDepth
+instance {-# OVERLAPPING #-} CanReadField "maxDepth" VkViewport
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewport, maxDepth})
 
         {-# INLINE readField #-}
-        readField = readVkMaxDepth
+        readField p
+          = peekByteOff p #{offset VkViewport, maxDepth}
 
-instance CanWriteField "maxDepth" VkViewport where
+instance {-# OVERLAPPING #-} CanWriteField "maxDepth" VkViewport
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkMaxDepth
+        writeField p
+          = pokeByteOff p #{offset VkViewport, maxDepth}
 
 instance Show VkViewport where
         showsPrec d x
           = showString "VkViewport {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " .
-                      showsPrec d (vkY x) .
+                    showString "y = " .
+                      showsPrec d (getField @"y" x) .
                         showString ", " .
-                          showString "vkWidth = " .
-                            showsPrec d (vkWidth x) .
+                          showString "width = " .
+                            showsPrec d (getField @"width" x) .
                               showString ", " .
-                                showString "vkHeight = " .
-                                  showsPrec d (vkHeight x) .
+                                showString "height = " .
+                                  showsPrec d (getField @"height" x) .
                                     showString ", " .
-                                      showString "vkMinDepth = " .
-                                        showsPrec d (vkMinDepth x) .
+                                      showString "minDepth = " .
+                                        showsPrec d (getField @"minDepth" x) .
                                           showString ", " .
-                                            showString "vkMaxDepth = " .
-                                              showsPrec d (vkMaxDepth x) . showChar '}'
+                                            showString "maxDepth = " .
+                                              showsPrec d (getField @"maxDepth" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkViewportSwizzleNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkViewportSwizzleNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkViewportSwizzleNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkViewportSwizzleNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkViewportSwizzleNV
        (VkViewportSwizzleNV(..)) where
@@ -13,7 +14,6 @@
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
 import           Graphics.Vulkan.Types.Enum.VkViewportCoordinateSwizzleNV (VkViewportCoordinateSwizzleNV)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkViewportSwizzleNV {
@@ -23,7 +23,7 @@
 --   >     VkViewportCoordinateSwizzleNV          w;
 --   > } VkViewportSwizzleNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkViewportSwizzleNV.html VkViewportSwizzleNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkViewportSwizzleNV.html VkViewportSwizzleNV registry at www.khronos.org>
 data VkViewportSwizzleNV = VkViewportSwizzleNV## Addr## ByteArray##
 
 instance Eq VkViewportSwizzleNV where
@@ -70,25 +70,6 @@
         type ReturnedOnly VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
         type StructExtends VkViewportSwizzleNV = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkViewportSwizzleNV where
-        type VkXMType VkViewportSwizzleNV = VkViewportCoordinateSwizzleNV
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_ = #{offset VkViewportSwizzleNV, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p
-          = peekByteOff p #{offset VkViewportSwizzleNV, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkViewportSwizzleNV where
         type FieldType "x" VkViewportSwizzleNV =
              VkViewportCoordinateSwizzleNV
@@ -103,35 +84,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewportSwizzleNV, x}
 
-instance CanReadField "x" VkViewportSwizzleNV where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-} CanReadField "x" VkViewportSwizzleNV
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p
+          = peekByteOff p #{offset VkViewportSwizzleNV, x}
 
-instance CanWriteField "x" VkViewportSwizzleNV where
+instance {-# OVERLAPPING #-} CanWriteField "x" VkViewportSwizzleNV
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkViewportSwizzleNV where
-        type VkYMType VkViewportSwizzleNV = VkViewportCoordinateSwizzleNV
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_ = #{offset VkViewportSwizzleNV, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p
-          = peekByteOff p #{offset VkViewportSwizzleNV, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, y}
+        writeField p
+          = pokeByteOff p #{offset VkViewportSwizzleNV, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkViewportSwizzleNV where
         type FieldType "y" VkViewportSwizzleNV =
@@ -147,35 +115,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewportSwizzleNV, y}
 
-instance CanReadField "y" VkViewportSwizzleNV where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-} CanReadField "y" VkViewportSwizzleNV
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p
+          = peekByteOff p #{offset VkViewportSwizzleNV, y}
 
-instance CanWriteField "y" VkViewportSwizzleNV where
+instance {-# OVERLAPPING #-} CanWriteField "y" VkViewportSwizzleNV
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkY
-
-instance {-# OVERLAPPING #-} HasVkZ VkViewportSwizzleNV where
-        type VkZMType VkViewportSwizzleNV = VkViewportCoordinateSwizzleNV
-
-        {-# NOINLINE vkZ #-}
-        vkZ x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, z})
-
-        {-# INLINE vkZByteOffset #-}
-        vkZByteOffset ~_ = #{offset VkViewportSwizzleNV, z}
-
-        {-# INLINE readVkZ #-}
-        readVkZ p
-          = peekByteOff p #{offset VkViewportSwizzleNV, z}
-
-        {-# INLINE writeVkZ #-}
-        writeVkZ p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, z}
+        writeField p
+          = pokeByteOff p #{offset VkViewportSwizzleNV, y}
 
 instance {-# OVERLAPPING #-} HasField "z" VkViewportSwizzleNV where
         type FieldType "z" VkViewportSwizzleNV =
@@ -191,35 +146,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewportSwizzleNV, z}
 
-instance CanReadField "z" VkViewportSwizzleNV where
-        {-# INLINE getField #-}
-        getField = vkZ
+instance {-# OVERLAPPING #-} CanReadField "z" VkViewportSwizzleNV
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, z})
 
         {-# INLINE readField #-}
-        readField = readVkZ
+        readField p
+          = peekByteOff p #{offset VkViewportSwizzleNV, z}
 
-instance CanWriteField "z" VkViewportSwizzleNV where
+instance {-# OVERLAPPING #-} CanWriteField "z" VkViewportSwizzleNV
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkZ
-
-instance {-# OVERLAPPING #-} HasVkW VkViewportSwizzleNV where
-        type VkWMType VkViewportSwizzleNV = VkViewportCoordinateSwizzleNV
-
-        {-# NOINLINE vkW #-}
-        vkW x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, w})
-
-        {-# INLINE vkWByteOffset #-}
-        vkWByteOffset ~_ = #{offset VkViewportSwizzleNV, w}
-
-        {-# INLINE readVkW #-}
-        readVkW p
-          = peekByteOff p #{offset VkViewportSwizzleNV, w}
-
-        {-# INLINE writeVkW #-}
-        writeVkW p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, w}
+        writeField p
+          = pokeByteOff p #{offset VkViewportSwizzleNV, z}
 
 instance {-# OVERLAPPING #-} HasField "w" VkViewportSwizzleNV where
         type FieldType "w" VkViewportSwizzleNV =
@@ -235,27 +177,33 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewportSwizzleNV, w}
 
-instance CanReadField "w" VkViewportSwizzleNV where
-        {-# INLINE getField #-}
-        getField = vkW
+instance {-# OVERLAPPING #-} CanReadField "w" VkViewportSwizzleNV
+         where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, w})
 
         {-# INLINE readField #-}
-        readField = readVkW
+        readField p
+          = peekByteOff p #{offset VkViewportSwizzleNV, w}
 
-instance CanWriteField "w" VkViewportSwizzleNV where
+instance {-# OVERLAPPING #-} CanWriteField "w" VkViewportSwizzleNV
+         where
         {-# INLINE writeField #-}
-        writeField = writeVkW
+        writeField p
+          = pokeByteOff p #{offset VkViewportSwizzleNV, w}
 
 instance Show VkViewportSwizzleNV where
         showsPrec d x
           = showString "VkViewportSwizzleNV {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " .
-                      showsPrec d (vkY x) .
+                    showString "y = " .
+                      showsPrec d (getField @"y" x) .
                         showString ", " .
-                          showString "vkZ = " .
-                            showsPrec d (vkZ x) .
+                          showString "z = " .
+                            showsPrec d (getField @"z" x) .
                               showString ", " .
-                                showString "vkW = " . showsPrec d (vkW x) . showChar '}'
+                                showString "w = " . showsPrec d (getField @"w" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkViewportWScalingNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkViewportWScalingNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkViewportWScalingNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkViewportWScalingNV.hsc
@@ -5,22 +5,22 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkViewportWScalingNV
        (VkViewportWScalingNV(..)) where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkViewportWScalingNV {
 --   >     float          xcoeff;
 --   >     float          ycoeff;
 --   > } VkViewportWScalingNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkViewportWScalingNV.html VkViewportWScalingNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkViewportWScalingNV.html VkViewportWScalingNV registry at www.khronos.org>
 data VkViewportWScalingNV = VkViewportWScalingNV## Addr## ByteArray##
 
 instance Eq VkViewportWScalingNV where
@@ -67,26 +67,6 @@
         type ReturnedOnly VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
         type StructExtends VkViewportWScalingNV = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkXcoeff VkViewportWScalingNV where
-        type VkXcoeffMType VkViewportWScalingNV = #{type float}
-
-        {-# NOINLINE vkXcoeff #-}
-        vkXcoeff x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportWScalingNV, xcoeff})
-
-        {-# INLINE vkXcoeffByteOffset #-}
-        vkXcoeffByteOffset ~_
-          = #{offset VkViewportWScalingNV, xcoeff}
-
-        {-# INLINE readVkXcoeff #-}
-        readVkXcoeff p
-          = peekByteOff p #{offset VkViewportWScalingNV, xcoeff}
-
-        {-# INLINE writeVkXcoeff #-}
-        writeVkXcoeff p
-          = pokeByteOff p #{offset VkViewportWScalingNV, xcoeff}
-
 instance {-# OVERLAPPING #-} HasField "xcoeff" VkViewportWScalingNV
          where
         type FieldType "xcoeff" VkViewportWScalingNV =
@@ -102,36 +82,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewportWScalingNV, xcoeff}
 
-instance CanReadField "xcoeff" VkViewportWScalingNV where
-        {-# INLINE getField #-}
-        getField = vkXcoeff
+instance {-# OVERLAPPING #-}
+         CanReadField "xcoeff" VkViewportWScalingNV where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewportWScalingNV, xcoeff})
 
         {-# INLINE readField #-}
-        readField = readVkXcoeff
+        readField p
+          = peekByteOff p #{offset VkViewportWScalingNV, xcoeff}
 
-instance CanWriteField "xcoeff" VkViewportWScalingNV where
+instance {-# OVERLAPPING #-}
+         CanWriteField "xcoeff" VkViewportWScalingNV where
         {-# INLINE writeField #-}
-        writeField = writeVkXcoeff
-
-instance {-# OVERLAPPING #-} HasVkYcoeff VkViewportWScalingNV where
-        type VkYcoeffMType VkViewportWScalingNV = #{type float}
-
-        {-# NOINLINE vkYcoeff #-}
-        vkYcoeff x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportWScalingNV, ycoeff})
-
-        {-# INLINE vkYcoeffByteOffset #-}
-        vkYcoeffByteOffset ~_
-          = #{offset VkViewportWScalingNV, ycoeff}
-
-        {-# INLINE readVkYcoeff #-}
-        readVkYcoeff p
-          = peekByteOff p #{offset VkViewportWScalingNV, ycoeff}
-
-        {-# INLINE writeVkYcoeff #-}
-        writeVkYcoeff p
-          = pokeByteOff p #{offset VkViewportWScalingNV, ycoeff}
+        writeField p
+          = pokeByteOff p #{offset VkViewportWScalingNV, xcoeff}
 
 instance {-# OVERLAPPING #-} HasField "ycoeff" VkViewportWScalingNV
          where
@@ -148,21 +114,28 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkViewportWScalingNV, ycoeff}
 
-instance CanReadField "ycoeff" VkViewportWScalingNV where
-        {-# INLINE getField #-}
-        getField = vkYcoeff
+instance {-# OVERLAPPING #-}
+         CanReadField "ycoeff" VkViewportWScalingNV where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkViewportWScalingNV, ycoeff})
 
         {-# INLINE readField #-}
-        readField = readVkYcoeff
+        readField p
+          = peekByteOff p #{offset VkViewportWScalingNV, ycoeff}
 
-instance CanWriteField "ycoeff" VkViewportWScalingNV where
+instance {-# OVERLAPPING #-}
+         CanWriteField "ycoeff" VkViewportWScalingNV where
         {-# INLINE writeField #-}
-        writeField = writeVkYcoeff
+        writeField p
+          = pokeByteOff p #{offset VkViewportWScalingNV, ycoeff}
 
 instance Show VkViewportWScalingNV where
         showsPrec d x
           = showString "VkViewportWScalingNV {" .
-              showString "vkXcoeff = " .
-                showsPrec d (vkXcoeff x) .
+              showString "xcoeff = " .
+                showsPrec d (getField @"xcoeff" x) .
                   showString ", " .
-                    showString "vkYcoeff = " . showsPrec d (vkYcoeff x) . showChar '}'
+                    showString "ycoeff = " .
+                      showsPrec d (getField @"ycoeff" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkWaylandSurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkWaylandSurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkWaylandSurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkWaylandSurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkWaylandSurfaceCreateInfoKHR
        (VkWaylandSurfaceCreateInfoKHR(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Include              (WlDisplay,
                                                              WlSurface)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWaylandSurfaceCreateInfoKHR {
@@ -27,7 +27,7 @@
 --   >     struct wl_surface*               surface;
 --   > } VkWaylandSurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkWaylandSurfaceCreateInfoKHR.html VkWaylandSurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkWaylandSurfaceCreateInfoKHR.html VkWaylandSurfaceCreateInfoKHR registry at www.khronos.org>
 data VkWaylandSurfaceCreateInfoKHR = VkWaylandSurfaceCreateInfoKHR## Addr##
                                                                     ByteArray##
 
@@ -81,27 +81,6 @@
         type StructExtends VkWaylandSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkWaylandSurfaceCreateInfoKHR where
-        type VkSTypeMType VkWaylandSurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkWaylandSurfaceCreateInfoKHR where
         type FieldType "sType" VkWaylandSurfaceCreateInfoKHR =
              VkStructureType
@@ -117,37 +96,22 @@
         fieldOffset
           = #{offset VkWaylandSurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkWaylandSurfaceCreateInfoKHR where
-        type VkPNextMType VkWaylandSurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkWaylandSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkWaylandSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkWaylandSurfaceCreateInfoKHR where
@@ -164,38 +128,22 @@
         fieldOffset
           = #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkFlags VkWaylandSurfaceCreateInfoKHR where
-        type VkFlagsMType VkWaylandSurfaceCreateInfoKHR =
-             VkWaylandSurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
+         CanReadField "pNext" VkWaylandSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkWaylandSurfaceCreateInfoKHR, flags}
+              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, pNext})
 
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, flags}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
 
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, flags}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkWaylandSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkWaylandSurfaceCreateInfoKHR where
@@ -213,37 +161,22 @@
         fieldOffset
           = #{offset VkWaylandSurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkDisplay VkWaylandSurfaceCreateInfoKHR where
-        type VkDisplayMType VkWaylandSurfaceCreateInfoKHR = Ptr WlDisplay
-
-        {-# NOINLINE vkDisplay #-}
-        vkDisplay x
+         CanReadField "flags" VkWaylandSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, display})
-
-        {-# INLINE vkDisplayByteOffset #-}
-        vkDisplayByteOffset ~_
-          = #{offset VkWaylandSurfaceCreateInfoKHR, display}
+              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, flags})
 
-        {-# INLINE readVkDisplay #-}
-        readVkDisplay p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, display}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, flags}
 
-        {-# INLINE writeVkDisplay #-}
-        writeVkDisplay p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, display}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkWaylandSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "display" VkWaylandSurfaceCreateInfoKHR where
@@ -261,38 +194,22 @@
         fieldOffset
           = #{offset VkWaylandSurfaceCreateInfoKHR, display}
 
-instance CanReadField "display" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkDisplay
-
-        {-# INLINE readField #-}
-        readField = readVkDisplay
-
-instance CanWriteField "display" VkWaylandSurfaceCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkDisplay
-
 instance {-# OVERLAPPING #-}
-         HasVkSurface VkWaylandSurfaceCreateInfoKHR where
-        type VkSurfaceMType VkWaylandSurfaceCreateInfoKHR = Ptr WlSurface
-
-        {-# NOINLINE vkSurface #-}
-        vkSurface x
+         CanReadField "display" VkWaylandSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, surface})
-
-        {-# INLINE vkSurfaceByteOffset #-}
-        vkSurfaceByteOffset ~_
-          = #{offset VkWaylandSurfaceCreateInfoKHR, surface}
+              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, display})
 
-        {-# INLINE readVkSurface #-}
-        readVkSurface p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, surface}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, display}
 
-        {-# INLINE writeVkSurface #-}
-        writeVkSurface p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, surface}
+instance {-# OVERLAPPING #-}
+         CanWriteField "display" VkWaylandSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, display}
 
 instance {-# OVERLAPPING #-}
          HasField "surface" VkWaylandSurfaceCreateInfoKHR where
@@ -310,32 +227,37 @@
         fieldOffset
           = #{offset VkWaylandSurfaceCreateInfoKHR, surface}
 
-instance CanReadField "surface" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSurface
+instance {-# OVERLAPPING #-}
+         CanReadField "surface" VkWaylandSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, surface})
 
         {-# INLINE readField #-}
-        readField = readVkSurface
+        readField p
+          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, surface}
 
-instance CanWriteField "surface" VkWaylandSurfaceCreateInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "surface" VkWaylandSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSurface
+        writeField p
+          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, surface}
 
 instance Show VkWaylandSurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkWaylandSurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDisplay = " .
-                                  showsPrec d (vkDisplay x) .
+                                showString "display = " .
+                                  showsPrec d (getField @"display" x) .
                                     showString ", " .
-                                      showString "vkSurface = " .
-                                        showsPrec d (vkSurface x) . showChar '}'
+                                      showString "surface = " .
+                                        showsPrec d (getField @"surface" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkWin32KeyedMutexAcquireReleaseInfoKHR
        (VkWin32KeyedMutexAcquireReleaseInfoKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkDeviceMemory)
 import           Graphics.Vulkan.Types.Struct.VkSubmitInfo  (VkSubmitInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
@@ -30,7 +30,7 @@
 --   >     const uint64_t* pReleaseKeys;
 --   > } VkWin32KeyedMutexAcquireReleaseInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html VkWin32KeyedMutexAcquireReleaseInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html VkWin32KeyedMutexAcquireReleaseInfoKHR registry at www.khronos.org>
 data VkWin32KeyedMutexAcquireReleaseInfoKHR = VkWin32KeyedMutexAcquireReleaseInfoKHR## Addr##
                                                                                       ByteArray##
 
@@ -90,28 +90,6 @@
              '[VkSubmitInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkSTypeMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR where
         type FieldType "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR =
              VkStructureType
@@ -129,41 +107,22 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
 
-instance CanReadField "sType"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkPNextMType VkWin32KeyedMutexAcquireReleaseInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR where
@@ -183,42 +142,22 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
 
-instance CanReadField "pNext"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkAcquireCount VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkAcquireCountMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Word32
-
-        {-# NOINLINE vkAcquireCount #-}
-        vkAcquireCount x
+         CanReadField "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount})
-
-        {-# INLINE vkAcquireCountByteOffset #-}
-        vkAcquireCountByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext})
 
-        {-# INLINE readVkAcquireCount #-}
-        readVkAcquireCount p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
 
-        {-# INLINE writeVkAcquireCount #-}
-        writeVkAcquireCount p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -244,42 +183,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
 
-instance CanReadField "acquireCount"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkAcquireCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount})
 
         {-# INLINE readField #-}
-        readField = readVkAcquireCount
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
 
-instance CanWriteField "acquireCount"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAcquireCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPAcquireSyncs VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkPAcquireSyncsMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Ptr VkDeviceMemory
-
-        {-# NOINLINE vkPAcquireSyncs #-}
-        vkPAcquireSyncs x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs})
-
-        {-# INLINE vkPAcquireSyncsByteOffset #-}
-        vkPAcquireSyncsByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
-
-        {-# INLINE readVkPAcquireSyncs #-}
-        readVkPAcquireSyncs p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
-
-        {-# INLINE writeVkPAcquireSyncs #-}
-        writeVkPAcquireSyncs p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -305,42 +226,25 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
 
-instance CanReadField "pAcquireSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPAcquireSyncs
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs})
 
         {-# INLINE readField #-}
-        readField = readVkPAcquireSyncs
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
 
-instance CanWriteField "pAcquireSyncs"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAcquireSyncs"
            VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAcquireSyncs
-
-instance {-# OVERLAPPING #-}
-         HasVkPAcquireKeys VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkPAcquireKeysMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Ptr Word64
-
-        {-# NOINLINE vkPAcquireKeys #-}
-        vkPAcquireKeys x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys})
-
-        {-# INLINE vkPAcquireKeysByteOffset #-}
-        vkPAcquireKeysByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
-
-        {-# INLINE readVkPAcquireKeys #-}
-        readVkPAcquireKeys p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
-
-        {-# INLINE writeVkPAcquireKeys #-}
-        writeVkPAcquireKeys p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
 
 instance {-# OVERLAPPING #-}
          HasField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -366,42 +270,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
 
-instance CanReadField "pAcquireKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPAcquireKeys
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys})
 
         {-# INLINE readField #-}
-        readField = readVkPAcquireKeys
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
 
-instance CanWriteField "pAcquireKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAcquireKeys
-
-instance {-# OVERLAPPING #-}
-         HasVkPAcquireTimeouts VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkPAcquireTimeoutsMType VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Ptr Word32
-
-        {-# NOINLINE vkPAcquireTimeouts #-}
-        vkPAcquireTimeouts x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts})
-
-        {-# INLINE vkPAcquireTimeoutsByteOffset #-}
-        vkPAcquireTimeoutsByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
-
-        {-# INLINE readVkPAcquireTimeouts #-}
-        readVkPAcquireTimeouts p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
-
-        {-# INLINE writeVkPAcquireTimeouts #-}
-        writeVkPAcquireTimeouts p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
 
 instance {-# OVERLAPPING #-}
          HasField "pAcquireTimeouts" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -427,42 +313,26 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
 
-instance CanReadField "pAcquireTimeouts"
+instance {-# OVERLAPPING #-}
+         CanReadField "pAcquireTimeouts"
            VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPAcquireTimeouts
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts})
 
         {-# INLINE readField #-}
-        readField = readVkPAcquireTimeouts
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
 
-instance CanWriteField "pAcquireTimeouts"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAcquireTimeouts"
            VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAcquireTimeouts
-
-instance {-# OVERLAPPING #-}
-         HasVkReleaseCount VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkReleaseCountMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Word32
-
-        {-# NOINLINE vkReleaseCount #-}
-        vkReleaseCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount})
-
-        {-# INLINE vkReleaseCountByteOffset #-}
-        vkReleaseCountByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
-
-        {-# INLINE readVkReleaseCount #-}
-        readVkReleaseCount p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
-
-        {-# INLINE writeVkReleaseCount #-}
-        writeVkReleaseCount p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
 
 instance {-# OVERLAPPING #-}
          HasField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -488,42 +358,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
 
-instance CanReadField "releaseCount"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkReleaseCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount})
 
         {-# INLINE readField #-}
-        readField = readVkReleaseCount
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
 
-instance CanWriteField "releaseCount"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkReleaseCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPReleaseSyncs VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkPReleaseSyncsMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Ptr VkDeviceMemory
-
-        {-# NOINLINE vkPReleaseSyncs #-}
-        vkPReleaseSyncs x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs})
-
-        {-# INLINE vkPReleaseSyncsByteOffset #-}
-        vkPReleaseSyncsByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
-
-        {-# INLINE readVkPReleaseSyncs #-}
-        readVkPReleaseSyncs p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
-
-        {-# INLINE writeVkPReleaseSyncs #-}
-        writeVkPReleaseSyncs p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -549,42 +401,25 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
 
-instance CanReadField "pReleaseSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPReleaseSyncs
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs})
 
         {-# INLINE readField #-}
-        readField = readVkPReleaseSyncs
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
 
-instance CanWriteField "pReleaseSyncs"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pReleaseSyncs"
            VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPReleaseSyncs
-
-instance {-# OVERLAPPING #-}
-         HasVkPReleaseKeys VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type VkPReleaseKeysMType VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Ptr Word64
-
-        {-# NOINLINE vkPReleaseKeys #-}
-        vkPReleaseKeys x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys})
-
-        {-# INLINE vkPReleaseKeysByteOffset #-}
-        vkPReleaseKeysByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
-
-        {-# INLINE readVkPReleaseKeys #-}
-        readVkPReleaseKeys p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
-
-        {-# INLINE writeVkPReleaseKeys #-}
-        writeVkPReleaseKeys p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
 
 instance {-# OVERLAPPING #-}
          HasField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
@@ -610,48 +445,54 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
 
-instance CanReadField "pReleaseKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanReadField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
-        {-# INLINE getField #-}
-        getField = vkPReleaseKeys
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys})
 
         {-# INLINE readField #-}
-        readField = readVkPReleaseKeys
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
 
-instance CanWriteField "pReleaseKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
+instance {-# OVERLAPPING #-}
+         CanWriteField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPReleaseKeys
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
 
 instance Show VkWin32KeyedMutexAcquireReleaseInfoKHR where
         showsPrec d x
           = showString "VkWin32KeyedMutexAcquireReleaseInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkAcquireCount = " .
-                            showsPrec d (vkAcquireCount x) .
+                          showString "acquireCount = " .
+                            showsPrec d (getField @"acquireCount" x) .
                               showString ", " .
-                                showString "vkPAcquireSyncs = " .
-                                  showsPrec d (vkPAcquireSyncs x) .
+                                showString "pAcquireSyncs = " .
+                                  showsPrec d (getField @"pAcquireSyncs" x) .
                                     showString ", " .
-                                      showString "vkPAcquireKeys = " .
-                                        showsPrec d (vkPAcquireKeys x) .
+                                      showString "pAcquireKeys = " .
+                                        showsPrec d (getField @"pAcquireKeys" x) .
                                           showString ", " .
-                                            showString "vkPAcquireTimeouts = " .
-                                              showsPrec d (vkPAcquireTimeouts x) .
+                                            showString "pAcquireTimeouts = " .
+                                              showsPrec d (getField @"pAcquireTimeouts" x) .
                                                 showString ", " .
-                                                  showString "vkReleaseCount = " .
-                                                    showsPrec d (vkReleaseCount x) .
+                                                  showString "releaseCount = " .
+                                                    showsPrec d (getField @"releaseCount" x) .
                                                       showString ", " .
-                                                        showString "vkPReleaseSyncs = " .
-                                                          showsPrec d (vkPReleaseSyncs x) .
+                                                        showString "pReleaseSyncs = " .
+                                                          showsPrec d (getField @"pReleaseSyncs" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkPReleaseKeys = " .
-                                                                showsPrec d (vkPReleaseKeys x) .
-                                                                  showChar '}'
+                                                              showString "pReleaseKeys = " .
+                                                                showsPrec d
+                                                                  (getField @"pReleaseKeys" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoNV.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoNV.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoNV.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkWin32KeyedMutexAcquireReleaseInfoNV.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkWin32KeyedMutexAcquireReleaseInfoNV
        (VkWin32KeyedMutexAcquireReleaseInfoNV(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Handles              (VkDeviceMemory)
 import           Graphics.Vulkan.Types.Struct.VkSubmitInfo  (VkSubmitInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
@@ -30,7 +30,7 @@
 --   >     const uint64_t*                  pReleaseKeys;
 --   > } VkWin32KeyedMutexAcquireReleaseInfoNV;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html VkWin32KeyedMutexAcquireReleaseInfoNV registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html VkWin32KeyedMutexAcquireReleaseInfoNV registry at www.khronos.org>
 data VkWin32KeyedMutexAcquireReleaseInfoNV = VkWin32KeyedMutexAcquireReleaseInfoNV## Addr##
                                                                                     ByteArray##
 
@@ -90,28 +90,6 @@
              '[VkSubmitInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
-         HasVkSType VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkSTypeMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
          HasField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV where
         type FieldType "sType" VkWin32KeyedMutexAcquireReleaseInfoNV =
              VkStructureType
@@ -129,40 +107,22 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
 
-instance CanReadField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkSType
-
-        {-# INLINE readField #-}
-        readField = readVkSType
-
-instance CanWriteField "sType"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkSType
-
 instance {-# OVERLAPPING #-}
-         HasVkPNext VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkPNextMType VkWin32KeyedMutexAcquireReleaseInfoNV = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
+         CanReadField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType})
 
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
 
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV where
@@ -182,41 +142,22 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
 
-instance CanReadField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE getField #-}
-        getField = vkPNext
-
-        {-# INLINE readField #-}
-        readField = readVkPNext
-
-instance CanWriteField "pNext"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
 instance {-# OVERLAPPING #-}
-         HasVkAcquireCount VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkAcquireCountMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Word32
-
-        {-# NOINLINE vkAcquireCount #-}
-        vkAcquireCount x
+         CanReadField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount})
-
-        {-# INLINE vkAcquireCountByteOffset #-}
-        vkAcquireCountByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext})
 
-        {-# INLINE readVkAcquireCount #-}
-        readVkAcquireCount p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
 
-        {-# INLINE writeVkAcquireCount #-}
-        writeVkAcquireCount p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV where
@@ -240,42 +181,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
 
-instance CanReadField "acquireCount"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkAcquireCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount})
 
         {-# INLINE readField #-}
-        readField = readVkAcquireCount
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
 
-instance CanWriteField "acquireCount"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkAcquireCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPAcquireSyncs VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkPAcquireSyncsMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Ptr VkDeviceMemory
-
-        {-# NOINLINE vkPAcquireSyncs #-}
-        vkPAcquireSyncs x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs})
-
-        {-# INLINE vkPAcquireSyncsByteOffset #-}
-        vkPAcquireSyncsByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
-
-        {-# INLINE readVkPAcquireSyncs #-}
-        readVkPAcquireSyncs p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
-
-        {-# INLINE writeVkPAcquireSyncs #-}
-        writeVkPAcquireSyncs p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
@@ -301,42 +224,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
 
-instance CanReadField "pAcquireSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPAcquireSyncs
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs})
 
         {-# INLINE readField #-}
-        readField = readVkPAcquireSyncs
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
 
-instance CanWriteField "pAcquireSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAcquireSyncs
-
-instance {-# OVERLAPPING #-}
-         HasVkPAcquireKeys VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkPAcquireKeysMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Ptr Word64
-
-        {-# NOINLINE vkPAcquireKeys #-}
-        vkPAcquireKeys x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys})
-
-        {-# INLINE vkPAcquireKeysByteOffset #-}
-        vkPAcquireKeysByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
-
-        {-# INLINE readVkPAcquireKeys #-}
-        readVkPAcquireKeys p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
-
-        {-# INLINE writeVkPAcquireKeys #-}
-        writeVkPAcquireKeys p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
 
 instance {-# OVERLAPPING #-}
          HasField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV where
@@ -360,45 +265,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
 
-instance CanReadField "pAcquireKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPAcquireKeys
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys})
 
         {-# INLINE readField #-}
-        readField = readVkPAcquireKeys
-
-instance CanWriteField "pAcquireKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField = writeVkPAcquireKeys
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
 
 instance {-# OVERLAPPING #-}
-         HasVkPAcquireTimeoutMilliseconds
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+         CanWriteField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        type VkPAcquireTimeoutMillisecondsMType
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Ptr Word32
-
-        {-# NOINLINE vkPAcquireTimeoutMilliseconds #-}
-        vkPAcquireTimeoutMilliseconds x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds})
-
-        {-# INLINE vkPAcquireTimeoutMillisecondsByteOffset #-}
-        vkPAcquireTimeoutMillisecondsByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
-
-        {-# INLINE readVkPAcquireTimeoutMilliseconds #-}
-        readVkPAcquireTimeoutMilliseconds p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
-
-        {-# INLINE writeVkPAcquireTimeoutMilliseconds #-}
-        writeVkPAcquireTimeoutMilliseconds p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
 
 instance {-# OVERLAPPING #-}
          HasField "pAcquireTimeoutMilliseconds"
@@ -425,42 +309,26 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
 
-instance CanReadField "pAcquireTimeoutMilliseconds"
+instance {-# OVERLAPPING #-}
+         CanReadField "pAcquireTimeoutMilliseconds"
            VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPAcquireTimeoutMilliseconds
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds})
 
         {-# INLINE readField #-}
-        readField = readVkPAcquireTimeoutMilliseconds
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
 
-instance CanWriteField "pAcquireTimeoutMilliseconds"
+instance {-# OVERLAPPING #-}
+         CanWriteField "pAcquireTimeoutMilliseconds"
            VkWin32KeyedMutexAcquireReleaseInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPAcquireTimeoutMilliseconds
-
-instance {-# OVERLAPPING #-}
-         HasVkReleaseCount VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkReleaseCountMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Word32
-
-        {-# NOINLINE vkReleaseCount #-}
-        vkReleaseCount x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount})
-
-        {-# INLINE vkReleaseCountByteOffset #-}
-        vkReleaseCountByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
-
-        {-# INLINE readVkReleaseCount #-}
-        readVkReleaseCount p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
-
-        {-# INLINE writeVkReleaseCount #-}
-        writeVkReleaseCount p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
 
 instance {-# OVERLAPPING #-}
          HasField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV where
@@ -484,42 +352,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
 
-instance CanReadField "releaseCount"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkReleaseCount
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount})
 
         {-# INLINE readField #-}
-        readField = readVkReleaseCount
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
 
-instance CanWriteField "releaseCount"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkReleaseCount
-
-instance {-# OVERLAPPING #-}
-         HasVkPReleaseSyncs VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkPReleaseSyncsMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Ptr VkDeviceMemory
-
-        {-# NOINLINE vkPReleaseSyncs #-}
-        vkPReleaseSyncs x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs})
-
-        {-# INLINE vkPReleaseSyncsByteOffset #-}
-        vkPReleaseSyncsByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
-
-        {-# INLINE readVkPReleaseSyncs #-}
-        readVkPReleaseSyncs p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
-
-        {-# INLINE writeVkPReleaseSyncs #-}
-        writeVkPReleaseSyncs p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
 
 instance {-# OVERLAPPING #-}
          HasField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
@@ -545,42 +395,24 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
 
-instance CanReadField "pReleaseSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPReleaseSyncs
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs})
 
         {-# INLINE readField #-}
-        readField = readVkPReleaseSyncs
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
 
-instance CanWriteField "pReleaseSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPReleaseSyncs
-
-instance {-# OVERLAPPING #-}
-         HasVkPReleaseKeys VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type VkPReleaseKeysMType VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Ptr Word64
-
-        {-# NOINLINE vkPReleaseKeys #-}
-        vkPReleaseKeys x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys})
-
-        {-# INLINE vkPReleaseKeysByteOffset #-}
-        vkPReleaseKeysByteOffset ~_
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
-
-        {-# INLINE readVkPReleaseKeys #-}
-        readVkPReleaseKeys p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
-
-        {-# INLINE writeVkPReleaseKeys #-}
-        writeVkPReleaseKeys p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
 
 instance {-# OVERLAPPING #-}
          HasField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV where
@@ -604,48 +436,56 @@
         fieldOffset
           = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
 
-instance CanReadField "pReleaseKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanReadField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
-        {-# INLINE getField #-}
-        getField = vkPReleaseKeys
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys})
 
         {-# INLINE readField #-}
-        readField = readVkPReleaseKeys
+        readField p
+          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
 
-instance CanWriteField "pReleaseKeys"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
+instance {-# OVERLAPPING #-}
+         CanWriteField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
          where
         {-# INLINE writeField #-}
-        writeField = writeVkPReleaseKeys
+        writeField p
+          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
 
 instance Show VkWin32KeyedMutexAcquireReleaseInfoNV where
         showsPrec d x
           = showString "VkWin32KeyedMutexAcquireReleaseInfoNV {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkAcquireCount = " .
-                            showsPrec d (vkAcquireCount x) .
+                          showString "acquireCount = " .
+                            showsPrec d (getField @"acquireCount" x) .
                               showString ", " .
-                                showString "vkPAcquireSyncs = " .
-                                  showsPrec d (vkPAcquireSyncs x) .
+                                showString "pAcquireSyncs = " .
+                                  showsPrec d (getField @"pAcquireSyncs" x) .
                                     showString ", " .
-                                      showString "vkPAcquireKeys = " .
-                                        showsPrec d (vkPAcquireKeys x) .
+                                      showString "pAcquireKeys = " .
+                                        showsPrec d (getField @"pAcquireKeys" x) .
                                           showString ", " .
-                                            showString "vkPAcquireTimeoutMilliseconds = " .
-                                              showsPrec d (vkPAcquireTimeoutMilliseconds x) .
+                                            showString "pAcquireTimeoutMilliseconds = " .
+                                              showsPrec d
+                                                (getField @"pAcquireTimeoutMilliseconds" x)
+                                                .
                                                 showString ", " .
-                                                  showString "vkReleaseCount = " .
-                                                    showsPrec d (vkReleaseCount x) .
+                                                  showString "releaseCount = " .
+                                                    showsPrec d (getField @"releaseCount" x) .
                                                       showString ", " .
-                                                        showString "vkPReleaseSyncs = " .
-                                                          showsPrec d (vkPReleaseSyncs x) .
+                                                        showString "pReleaseSyncs = " .
+                                                          showsPrec d (getField @"pReleaseSyncs" x)
+                                                            .
                                                             showString ", " .
-                                                              showString "vkPReleaseKeys = " .
-                                                                showsPrec d (vkPReleaseKeys x) .
-                                                                  showChar '}'
+                                                              showString "pReleaseKeys = " .
+                                                                showsPrec d
+                                                                  (getField @"pReleaseKeys" x)
+                                                                  . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkWin32SurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkWin32SurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkWin32SurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkWin32SurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkWin32SurfaceCreateInfoKHR
        (VkWin32SurfaceCreateInfoKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Bitmasks             (VkWin32SurfaceCreateFlagsKHR)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Include              (HINSTANCE, HWND)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWin32SurfaceCreateInfoKHR {
@@ -26,7 +26,7 @@
 --   >     HWND                             hwnd;
 --   > } VkWin32SurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkWin32SurfaceCreateInfoKHR.html VkWin32SurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkWin32SurfaceCreateInfoKHR.html VkWin32SurfaceCreateInfoKHR registry at www.khronos.org>
 data VkWin32SurfaceCreateInfoKHR = VkWin32SurfaceCreateInfoKHR## Addr##
                                                                 ByteArray##
 
@@ -78,27 +78,6 @@
         type ReturnedOnly VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkWin32SurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkWin32SurfaceCreateInfoKHR
-         where
-        type VkSTypeMType VkWin32SurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkWin32SurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkWin32SurfaceCreateInfoKHR where
         type FieldType "sType" VkWin32SurfaceCreateInfoKHR =
@@ -115,37 +94,22 @@
         fieldOffset
           = #{offset VkWin32SurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkWin32SurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, sType}
 
-instance CanWriteField "sType" VkWin32SurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkWin32SurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkWin32SurfaceCreateInfoKHR
-         where
-        type VkPNextMType VkWin32SurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkWin32SurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkWin32SurfaceCreateInfoKHR where
@@ -162,38 +126,22 @@
         fieldOffset
           = #{offset VkWin32SurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkWin32SurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkWin32SurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkWin32SurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkWin32SurfaceCreateInfoKHR
-         where
-        type VkFlagsMType VkWin32SurfaceCreateInfoKHR =
-             VkWin32SurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkWin32SurfaceCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkWin32SurfaceCreateInfoKHR where
@@ -211,37 +159,22 @@
         fieldOffset
           = #{offset VkWin32SurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkHinstance VkWin32SurfaceCreateInfoKHR where
-        type VkHinstanceMType VkWin32SurfaceCreateInfoKHR = HINSTANCE
-
-        {-# NOINLINE vkHinstance #-}
-        vkHinstance x
+         CanReadField "flags" VkWin32SurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, hinstance})
-
-        {-# INLINE vkHinstanceByteOffset #-}
-        vkHinstanceByteOffset ~_
-          = #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
+              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, flags})
 
-        {-# INLINE readVkHinstance #-}
-        readVkHinstance p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, flags}
 
-        {-# INLINE writeVkHinstance #-}
-        writeVkHinstance p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkWin32SurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "hinstance" VkWin32SurfaceCreateInfoKHR where
@@ -258,38 +191,22 @@
         fieldOffset
           = #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
 
-instance CanReadField "hinstance" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHinstance
+instance {-# OVERLAPPING #-}
+         CanReadField "hinstance" VkWin32SurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, hinstance})
 
         {-# INLINE readField #-}
-        readField = readVkHinstance
+        readField p
+          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
 
-instance CanWriteField "hinstance" VkWin32SurfaceCreateInfoKHR
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "hinstance" VkWin32SurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHinstance
-
-instance {-# OVERLAPPING #-} HasVkHwnd VkWin32SurfaceCreateInfoKHR
-         where
-        type VkHwndMType VkWin32SurfaceCreateInfoKHR = HWND
-
-        {-# NOINLINE vkHwnd #-}
-        vkHwnd x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, hwnd})
-
-        {-# INLINE vkHwndByteOffset #-}
-        vkHwndByteOffset ~_
-          = #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
-
-        {-# INLINE readVkHwnd #-}
-        readVkHwnd p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
-
-        {-# INLINE writeVkHwnd #-}
-        writeVkHwnd p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
+        writeField p
+          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
 
 instance {-# OVERLAPPING #-}
          HasField "hwnd" VkWin32SurfaceCreateInfoKHR where
@@ -306,30 +223,37 @@
         fieldOffset
           = #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
 
-instance CanReadField "hwnd" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkHwnd
+instance {-# OVERLAPPING #-}
+         CanReadField "hwnd" VkWin32SurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, hwnd})
 
         {-# INLINE readField #-}
-        readField = readVkHwnd
+        readField p
+          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
 
-instance CanWriteField "hwnd" VkWin32SurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "hwnd" VkWin32SurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkHwnd
+        writeField p
+          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
 
 instance Show VkWin32SurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkWin32SurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkHinstance = " .
-                                  showsPrec d (vkHinstance x) .
+                                showString "hinstance = " .
+                                  showsPrec d (getField @"hinstance" x) .
                                     showString ", " .
-                                      showString "vkHwnd = " . showsPrec d (vkHwnd x) . showChar '}'
+                                      showString "hwnd = " .
+                                        showsPrec d (getField @"hwnd" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkWriteDescriptorSet.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkWriteDescriptorSet.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkWriteDescriptorSet.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkWriteDescriptorSet.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet
        (VkWriteDescriptorSet(..)) where
@@ -18,7 +19,6 @@
                                                                       VkDescriptorSet)
 import           Graphics.Vulkan.Types.Struct.VkDescriptorBufferInfo (VkDescriptorBufferInfo)
 import           Graphics.Vulkan.Types.Struct.VkDescriptorImageInfo  (VkDescriptorImageInfo)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                                    (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWriteDescriptorSet {
@@ -34,7 +34,7 @@
 --   >     const VkBufferView*    pTexelBufferView;
 --   > } VkWriteDescriptorSet;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkWriteDescriptorSet.html VkWriteDescriptorSet registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkWriteDescriptorSet.html VkWriteDescriptorSet registry at www.khronos.org>
 data VkWriteDescriptorSet = VkWriteDescriptorSet## Addr## ByteArray##
 
 instance Eq VkWriteDescriptorSet where
@@ -84,26 +84,6 @@
         type ReturnedOnly VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
         type StructExtends VkWriteDescriptorSet = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkWriteDescriptorSet where
-        type VkSTypeMType VkWriteDescriptorSet = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkWriteDescriptorSet, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkWriteDescriptorSet, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, sType}
-
 instance {-# OVERLAPPING #-} HasField "sType" VkWriteDescriptorSet
          where
         type FieldType "sType" VkWriteDescriptorSet = VkStructureType
@@ -118,36 +98,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkWriteDescriptorSet, sType}
 
-instance CanReadField "sType" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, sType}
 
-instance CanWriteField "sType" VkWriteDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkWriteDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkWriteDescriptorSet where
-        type VkPNextMType VkWriteDescriptorSet = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkWriteDescriptorSet, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, sType}
 
 instance {-# OVERLAPPING #-} HasField "pNext" VkWriteDescriptorSet
          where
@@ -163,36 +129,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkWriteDescriptorSet, pNext}
 
-instance CanReadField "pNext" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, pNext}
 
-instance CanWriteField "pNext" VkWriteDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkWriteDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkDstSet VkWriteDescriptorSet where
-        type VkDstSetMType VkWriteDescriptorSet = VkDescriptorSet
-
-        {-# NOINLINE vkDstSet #-}
-        vkDstSet x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstSet})
-
-        {-# INLINE vkDstSetByteOffset #-}
-        vkDstSetByteOffset ~_
-          = #{offset VkWriteDescriptorSet, dstSet}
-
-        {-# INLINE readVkDstSet #-}
-        readVkDstSet p
-          = peekByteOff p #{offset VkWriteDescriptorSet, dstSet}
-
-        {-# INLINE writeVkDstSet #-}
-        writeVkDstSet p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, dstSet}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, pNext}
 
 instance {-# OVERLAPPING #-} HasField "dstSet" VkWriteDescriptorSet
          where
@@ -208,37 +160,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkWriteDescriptorSet, dstSet}
 
-instance CanReadField "dstSet" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDstSet
+instance {-# OVERLAPPING #-}
+         CanReadField "dstSet" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstSet})
 
         {-# INLINE readField #-}
-        readField = readVkDstSet
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, dstSet}
 
-instance CanWriteField "dstSet" VkWriteDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstSet" VkWriteDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkDstSet
-
-instance {-# OVERLAPPING #-} HasVkDstBinding VkWriteDescriptorSet
-         where
-        type VkDstBindingMType VkWriteDescriptorSet = Word32
-
-        {-# NOINLINE vkDstBinding #-}
-        vkDstBinding x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstBinding})
-
-        {-# INLINE vkDstBindingByteOffset #-}
-        vkDstBindingByteOffset ~_
-          = #{offset VkWriteDescriptorSet, dstBinding}
-
-        {-# INLINE readVkDstBinding #-}
-        readVkDstBinding p
-          = peekByteOff p #{offset VkWriteDescriptorSet, dstBinding}
-
-        {-# INLINE writeVkDstBinding #-}
-        writeVkDstBinding p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, dstBinding}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, dstSet}
 
 instance {-# OVERLAPPING #-}
          HasField "dstBinding" VkWriteDescriptorSet where
@@ -255,37 +192,22 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, dstBinding}
 
-instance CanReadField "dstBinding" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDstBinding
-
-        {-# INLINE readField #-}
-        readField = readVkDstBinding
-
-instance CanWriteField "dstBinding" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstBinding
-
 instance {-# OVERLAPPING #-}
-         HasVkDstArrayElement VkWriteDescriptorSet where
-        type VkDstArrayElementMType VkWriteDescriptorSet = Word32
-
-        {-# NOINLINE vkDstArrayElement #-}
-        vkDstArrayElement x
+         CanReadField "dstBinding" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstArrayElement})
-
-        {-# INLINE vkDstArrayElementByteOffset #-}
-        vkDstArrayElementByteOffset ~_
-          = #{offset VkWriteDescriptorSet, dstArrayElement}
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstBinding})
 
-        {-# INLINE readVkDstArrayElement #-}
-        readVkDstArrayElement p
-          = peekByteOff p #{offset VkWriteDescriptorSet, dstArrayElement}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, dstBinding}
 
-        {-# INLINE writeVkDstArrayElement #-}
-        writeVkDstArrayElement p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, dstArrayElement}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstBinding" VkWriteDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, dstBinding}
 
 instance {-# OVERLAPPING #-}
          HasField "dstArrayElement" VkWriteDescriptorSet where
@@ -302,37 +224,22 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, dstArrayElement}
 
-instance CanReadField "dstArrayElement" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDstArrayElement
-
-        {-# INLINE readField #-}
-        readField = readVkDstArrayElement
-
-instance CanWriteField "dstArrayElement" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkDstArrayElement
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorCount VkWriteDescriptorSet where
-        type VkDescriptorCountMType VkWriteDescriptorSet = Word32
-
-        {-# NOINLINE vkDescriptorCount #-}
-        vkDescriptorCount x
+         CanReadField "dstArrayElement" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, descriptorCount})
-
-        {-# INLINE vkDescriptorCountByteOffset #-}
-        vkDescriptorCountByteOffset ~_
-          = #{offset VkWriteDescriptorSet, descriptorCount}
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstArrayElement})
 
-        {-# INLINE readVkDescriptorCount #-}
-        readVkDescriptorCount p
-          = peekByteOff p #{offset VkWriteDescriptorSet, descriptorCount}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, dstArrayElement}
 
-        {-# INLINE writeVkDescriptorCount #-}
-        writeVkDescriptorCount p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, descriptorCount}
+instance {-# OVERLAPPING #-}
+         CanWriteField "dstArrayElement" VkWriteDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, dstArrayElement}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorCount" VkWriteDescriptorSet where
@@ -349,37 +256,22 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, descriptorCount}
 
-instance CanReadField "descriptorCount" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDescriptorCount
-
-        {-# INLINE readField #-}
-        readField = readVkDescriptorCount
-
-instance CanWriteField "descriptorCount" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkDescriptorCount
-
 instance {-# OVERLAPPING #-}
-         HasVkDescriptorType VkWriteDescriptorSet where
-        type VkDescriptorTypeMType VkWriteDescriptorSet = VkDescriptorType
-
-        {-# NOINLINE vkDescriptorType #-}
-        vkDescriptorType x
+         CanReadField "descriptorCount" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, descriptorType})
-
-        {-# INLINE vkDescriptorTypeByteOffset #-}
-        vkDescriptorTypeByteOffset ~_
-          = #{offset VkWriteDescriptorSet, descriptorType}
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, descriptorCount})
 
-        {-# INLINE readVkDescriptorType #-}
-        readVkDescriptorType p
-          = peekByteOff p #{offset VkWriteDescriptorSet, descriptorType}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, descriptorCount}
 
-        {-# INLINE writeVkDescriptorType #-}
-        writeVkDescriptorType p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, descriptorType}
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorCount" VkWriteDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, descriptorCount}
 
 instance {-# OVERLAPPING #-}
          HasField "descriptorType" VkWriteDescriptorSet where
@@ -397,38 +289,22 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, descriptorType}
 
-instance CanReadField "descriptorType" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkDescriptorType
+instance {-# OVERLAPPING #-}
+         CanReadField "descriptorType" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, descriptorType})
 
         {-# INLINE readField #-}
-        readField = readVkDescriptorType
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, descriptorType}
 
-instance CanWriteField "descriptorType" VkWriteDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "descriptorType" VkWriteDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkDescriptorType
-
-instance {-# OVERLAPPING #-} HasVkPImageInfo VkWriteDescriptorSet
-         where
-        type VkPImageInfoMType VkWriteDescriptorSet =
-             Ptr VkDescriptorImageInfo
-
-        {-# NOINLINE vkPImageInfo #-}
-        vkPImageInfo x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pImageInfo})
-
-        {-# INLINE vkPImageInfoByteOffset #-}
-        vkPImageInfoByteOffset ~_
-          = #{offset VkWriteDescriptorSet, pImageInfo}
-
-        {-# INLINE readVkPImageInfo #-}
-        readVkPImageInfo p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pImageInfo}
-
-        {-# INLINE writeVkPImageInfo #-}
-        writeVkPImageInfo p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pImageInfo}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, descriptorType}
 
 instance {-# OVERLAPPING #-}
          HasField "pImageInfo" VkWriteDescriptorSet where
@@ -446,38 +322,22 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, pImageInfo}
 
-instance CanReadField "pImageInfo" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkPImageInfo
+instance {-# OVERLAPPING #-}
+         CanReadField "pImageInfo" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pImageInfo})
 
         {-# INLINE readField #-}
-        readField = readVkPImageInfo
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, pImageInfo}
 
-instance CanWriteField "pImageInfo" VkWriteDescriptorSet where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pImageInfo" VkWriteDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkPImageInfo
-
-instance {-# OVERLAPPING #-} HasVkPBufferInfo VkWriteDescriptorSet
-         where
-        type VkPBufferInfoMType VkWriteDescriptorSet =
-             Ptr VkDescriptorBufferInfo
-
-        {-# NOINLINE vkPBufferInfo #-}
-        vkPBufferInfo x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pBufferInfo})
-
-        {-# INLINE vkPBufferInfoByteOffset #-}
-        vkPBufferInfoByteOffset ~_
-          = #{offset VkWriteDescriptorSet, pBufferInfo}
-
-        {-# INLINE readVkPBufferInfo #-}
-        readVkPBufferInfo p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pBufferInfo}
-
-        {-# INLINE writeVkPBufferInfo #-}
-        writeVkPBufferInfo p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pBufferInfo}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, pImageInfo}
 
 instance {-# OVERLAPPING #-}
          HasField "pBufferInfo" VkWriteDescriptorSet where
@@ -495,38 +355,22 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, pBufferInfo}
 
-instance CanReadField "pBufferInfo" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkPBufferInfo
-
-        {-# INLINE readField #-}
-        readField = readVkPBufferInfo
-
-instance CanWriteField "pBufferInfo" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField = writeVkPBufferInfo
-
 instance {-# OVERLAPPING #-}
-         HasVkPTexelBufferView VkWriteDescriptorSet where
-        type VkPTexelBufferViewMType VkWriteDescriptorSet =
-             Ptr VkBufferView
-
-        {-# NOINLINE vkPTexelBufferView #-}
-        vkPTexelBufferView x
+         CanReadField "pBufferInfo" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pTexelBufferView})
-
-        {-# INLINE vkPTexelBufferViewByteOffset #-}
-        vkPTexelBufferViewByteOffset ~_
-          = #{offset VkWriteDescriptorSet, pTexelBufferView}
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pBufferInfo})
 
-        {-# INLINE readVkPTexelBufferView #-}
-        readVkPTexelBufferView p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pTexelBufferView}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, pBufferInfo}
 
-        {-# INLINE writeVkPTexelBufferView #-}
-        writeVkPTexelBufferView p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pTexelBufferView}
+instance {-# OVERLAPPING #-}
+         CanWriteField "pBufferInfo" VkWriteDescriptorSet where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, pBufferInfo}
 
 instance {-# OVERLAPPING #-}
          HasField "pTexelBufferView" VkWriteDescriptorSet where
@@ -544,51 +388,59 @@
         fieldOffset
           = #{offset VkWriteDescriptorSet, pTexelBufferView}
 
-instance CanReadField "pTexelBufferView" VkWriteDescriptorSet where
-        {-# INLINE getField #-}
-        getField = vkPTexelBufferView
+instance {-# OVERLAPPING #-}
+         CanReadField "pTexelBufferView" VkWriteDescriptorSet where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pTexelBufferView})
 
         {-# INLINE readField #-}
-        readField = readVkPTexelBufferView
+        readField p
+          = peekByteOff p #{offset VkWriteDescriptorSet, pTexelBufferView}
 
-instance CanWriteField "pTexelBufferView" VkWriteDescriptorSet
-         where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pTexelBufferView" VkWriteDescriptorSet where
         {-# INLINE writeField #-}
-        writeField = writeVkPTexelBufferView
+        writeField p
+          = pokeByteOff p #{offset VkWriteDescriptorSet, pTexelBufferView}
 
 instance Show VkWriteDescriptorSet where
         showsPrec d x
           = showString "VkWriteDescriptorSet {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkDstSet = " .
-                            showsPrec d (vkDstSet x) .
+                          showString "dstSet = " .
+                            showsPrec d (getField @"dstSet" x) .
                               showString ", " .
-                                showString "vkDstBinding = " .
-                                  showsPrec d (vkDstBinding x) .
+                                showString "dstBinding = " .
+                                  showsPrec d (getField @"dstBinding" x) .
                                     showString ", " .
-                                      showString "vkDstArrayElement = " .
-                                        showsPrec d (vkDstArrayElement x) .
+                                      showString "dstArrayElement = " .
+                                        showsPrec d (getField @"dstArrayElement" x) .
                                           showString ", " .
-                                            showString "vkDescriptorCount = " .
-                                              showsPrec d (vkDescriptorCount x) .
+                                            showString "descriptorCount = " .
+                                              showsPrec d (getField @"descriptorCount" x) .
                                                 showString ", " .
-                                                  showString "vkDescriptorType = " .
-                                                    showsPrec d (vkDescriptorType x) .
+                                                  showString "descriptorType = " .
+                                                    showsPrec d (getField @"descriptorType" x) .
                                                       showString ", " .
-                                                        showString "vkPImageInfo = " .
-                                                          showsPrec d (vkPImageInfo x) .
+                                                        showString "pImageInfo = " .
+                                                          showsPrec d (getField @"pImageInfo" x) .
                                                             showString ", " .
-                                                              showString "vkPBufferInfo = " .
-                                                                showsPrec d (vkPBufferInfo x) .
+                                                              showString "pBufferInfo = " .
+                                                                showsPrec d
+                                                                  (getField @"pBufferInfo" x)
+                                                                  .
                                                                   showString ", " .
-                                                                    showString
-                                                                      "vkPTexelBufferView = "
+                                                                    showString "pTexelBufferView = "
                                                                       .
                                                                       showsPrec d
-                                                                        (vkPTexelBufferView x)
+                                                                        (getField
+                                                                           @"pTexelBufferView"
+                                                                           x)
                                                                         . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkXYColorEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkXYColorEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkXYColorEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkXYColorEXT.hsc
@@ -5,15 +5,15 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkXYColorEXT (VkXYColorEXT(..))
        where
-import           Foreign.Storable                    (Storable (..))
+import           Foreign.Storable                 (Storable (..))
 import           GHC.Prim
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
-import           Graphics.Vulkan.Types.StructMembers
-import           System.IO.Unsafe                    (unsafeDupablePerformIO)
+import           System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | Chromaticity coordinate
 --
@@ -22,7 +22,7 @@
 --   >     float   y;
 --   > } VkXYColorEXT;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkXYColorEXT.html VkXYColorEXT registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkXYColorEXT.html VkXYColorEXT registry at www.khronos.org>
 data VkXYColorEXT = VkXYColorEXT## Addr## ByteArray##
 
 instance Eq VkXYColorEXT where
@@ -69,23 +69,6 @@
         type ReturnedOnly VkXYColorEXT = 'False -- ' closing tick for hsc2hs
         type StructExtends VkXYColorEXT = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkX VkXYColorEXT where
-        type VkXMType VkXYColorEXT = #{type float}
-
-        {-# NOINLINE vkX #-}
-        vkX x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXYColorEXT, x})
-
-        {-# INLINE vkXByteOffset #-}
-        vkXByteOffset ~_ = #{offset VkXYColorEXT, x}
-
-        {-# INLINE readVkX #-}
-        readVkX p = peekByteOff p #{offset VkXYColorEXT, x}
-
-        {-# INLINE writeVkX #-}
-        writeVkX p = pokeByteOff p #{offset VkXYColorEXT, x}
-
 instance {-# OVERLAPPING #-} HasField "x" VkXYColorEXT where
         type FieldType "x" VkXYColorEXT = #{type float}
         type FieldOptional "x" VkXYColorEXT = 'False -- ' closing tick for hsc2hs
@@ -99,33 +82,18 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkXYColorEXT, x}
 
-instance CanReadField "x" VkXYColorEXT where
-        {-# INLINE getField #-}
-        getField = vkX
+instance {-# OVERLAPPING #-} CanReadField "x" VkXYColorEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXYColorEXT, x})
 
         {-# INLINE readField #-}
-        readField = readVkX
+        readField p = peekByteOff p #{offset VkXYColorEXT, x}
 
-instance CanWriteField "x" VkXYColorEXT where
+instance {-# OVERLAPPING #-} CanWriteField "x" VkXYColorEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkX
-
-instance {-# OVERLAPPING #-} HasVkY VkXYColorEXT where
-        type VkYMType VkXYColorEXT = #{type float}
-
-        {-# NOINLINE vkY #-}
-        vkY x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXYColorEXT, y})
-
-        {-# INLINE vkYByteOffset #-}
-        vkYByteOffset ~_ = #{offset VkXYColorEXT, y}
-
-        {-# INLINE readVkY #-}
-        readVkY p = peekByteOff p #{offset VkXYColorEXT, y}
-
-        {-# INLINE writeVkY #-}
-        writeVkY p = pokeByteOff p #{offset VkXYColorEXT, y}
+        writeField p = pokeByteOff p #{offset VkXYColorEXT, x}
 
 instance {-# OVERLAPPING #-} HasField "y" VkXYColorEXT where
         type FieldType "y" VkXYColorEXT = #{type float}
@@ -140,21 +108,23 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkXYColorEXT, y}
 
-instance CanReadField "y" VkXYColorEXT where
-        {-# INLINE getField #-}
-        getField = vkY
+instance {-# OVERLAPPING #-} CanReadField "y" VkXYColorEXT where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXYColorEXT, y})
 
         {-# INLINE readField #-}
-        readField = readVkY
+        readField p = peekByteOff p #{offset VkXYColorEXT, y}
 
-instance CanWriteField "y" VkXYColorEXT where
+instance {-# OVERLAPPING #-} CanWriteField "y" VkXYColorEXT where
         {-# INLINE writeField #-}
-        writeField = writeVkY
+        writeField p = pokeByteOff p #{offset VkXYColorEXT, y}
 
 instance Show VkXYColorEXT where
         showsPrec d x
           = showString "VkXYColorEXT {" .
-              showString "vkX = " .
-                showsPrec d (vkX x) .
+              showString "x = " .
+                showsPrec d (getField @"x" x) .
                   showString ", " .
-                    showString "vkY = " . showsPrec d (vkY x) . showChar '}'
+                    showString "y = " . showsPrec d (getField @"y" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkXcbSurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkXcbSurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkXcbSurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkXcbSurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkXcbSurfaceCreateInfoKHR
        (VkXcbSurfaceCreateInfoKHR(..)) where
@@ -16,7 +17,6 @@
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Include              (XcbConnectionT,
                                                              XcbWindowT)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkXcbSurfaceCreateInfoKHR {
@@ -27,7 +27,7 @@
 --   >     xcb_window_t                     window;
 --   > } VkXcbSurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkXcbSurfaceCreateInfoKHR.html VkXcbSurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkXcbSurfaceCreateInfoKHR.html VkXcbSurfaceCreateInfoKHR registry at www.khronos.org>
 data VkXcbSurfaceCreateInfoKHR = VkXcbSurfaceCreateInfoKHR## Addr##
                                                             ByteArray##
 
@@ -77,27 +77,6 @@
         type ReturnedOnly VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkXcbSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkXcbSurfaceCreateInfoKHR
-         where
-        type VkSTypeMType VkXcbSurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkXcbSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkXcbSurfaceCreateInfoKHR where
         type FieldType "sType" VkXcbSurfaceCreateInfoKHR = VkStructureType
@@ -113,37 +92,22 @@
         fieldOffset
           = #{offset VkXcbSurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkXcbSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, sType}
 
-instance CanWriteField "sType" VkXcbSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkXcbSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkXcbSurfaceCreateInfoKHR
-         where
-        type VkPNextMType VkXcbSurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkXcbSurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkXcbSurfaceCreateInfoKHR where
@@ -160,38 +124,22 @@
         fieldOffset
           = #{offset VkXcbSurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkXcbSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkXcbSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkXcbSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkXcbSurfaceCreateInfoKHR
-         where
-        type VkFlagsMType VkXcbSurfaceCreateInfoKHR =
-             VkXcbSurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkXcbSurfaceCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkXcbSurfaceCreateInfoKHR where
@@ -209,38 +157,22 @@
         fieldOffset
           = #{offset VkXcbSurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
-
-        {-# INLINE readField #-}
-        readField = readVkFlags
-
-instance CanWriteField "flags" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
 instance {-# OVERLAPPING #-}
-         HasVkConnection VkXcbSurfaceCreateInfoKHR where
-        type VkConnectionMType VkXcbSurfaceCreateInfoKHR =
-             Ptr XcbConnectionT
-
-        {-# NOINLINE vkConnection #-}
-        vkConnection x
+         CanReadField "flags" VkXcbSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
           = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, connection})
-
-        {-# INLINE vkConnectionByteOffset #-}
-        vkConnectionByteOffset ~_
-          = #{offset VkXcbSurfaceCreateInfoKHR, connection}
+              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, flags})
 
-        {-# INLINE readVkConnection #-}
-        readVkConnection p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, connection}
+        {-# INLINE readField #-}
+        readField p
+          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, flags}
 
-        {-# INLINE writeVkConnection #-}
-        writeVkConnection p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, connection}
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkXcbSurfaceCreateInfoKHR where
+        {-# INLINE writeField #-}
+        writeField p
+          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "connection" VkXcbSurfaceCreateInfoKHR where
@@ -258,37 +190,22 @@
         fieldOffset
           = #{offset VkXcbSurfaceCreateInfoKHR, connection}
 
-instance CanReadField "connection" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkConnection
+instance {-# OVERLAPPING #-}
+         CanReadField "connection" VkXcbSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, connection})
 
         {-# INLINE readField #-}
-        readField = readVkConnection
+        readField p
+          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, connection}
 
-instance CanWriteField "connection" VkXcbSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "connection" VkXcbSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkConnection
-
-instance {-# OVERLAPPING #-} HasVkWindow VkXcbSurfaceCreateInfoKHR
-         where
-        type VkWindowMType VkXcbSurfaceCreateInfoKHR = XcbWindowT
-
-        {-# NOINLINE vkWindow #-}
-        vkWindow x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, window})
-
-        {-# INLINE vkWindowByteOffset #-}
-        vkWindowByteOffset ~_
-          = #{offset VkXcbSurfaceCreateInfoKHR, window}
-
-        {-# INLINE readVkWindow #-}
-        readVkWindow p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, window}
-
-        {-# INLINE writeVkWindow #-}
-        writeVkWindow p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, window}
+        writeField p
+          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, connection}
 
 instance {-# OVERLAPPING #-}
          HasField "window" VkXcbSurfaceCreateInfoKHR where
@@ -305,31 +222,37 @@
         fieldOffset
           = #{offset VkXcbSurfaceCreateInfoKHR, window}
 
-instance CanReadField "window" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkWindow
+instance {-# OVERLAPPING #-}
+         CanReadField "window" VkXcbSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, window})
 
         {-# INLINE readField #-}
-        readField = readVkWindow
+        readField p
+          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, window}
 
-instance CanWriteField "window" VkXcbSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "window" VkXcbSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkWindow
+        writeField p
+          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, window}
 
 instance Show VkXcbSurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkXcbSurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkConnection = " .
-                                  showsPrec d (vkConnection x) .
+                                showString "connection = " .
+                                  showsPrec d (getField @"connection" x) .
                                     showString ", " .
-                                      showString "vkWindow = " .
-                                        showsPrec d (vkWindow x) . showChar '}'
+                                      showString "window = " .
+                                        showsPrec d (getField @"window" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VkXlibSurfaceCreateInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VkXlibSurfaceCreateInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VkXlibSurfaceCreateInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VkXlibSurfaceCreateInfoKHR.hsc
@@ -5,6 +5,7 @@
 {-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VkXlibSurfaceCreateInfoKHR
        (VkXlibSurfaceCreateInfoKHR(..)) where
@@ -15,7 +16,6 @@
 import           Graphics.Vulkan.Types.Bitmasks             (VkXlibSurfaceCreateFlagsKHR)
 import           Graphics.Vulkan.Types.Enum.VkStructureType (VkStructureType)
 import           Graphics.Vulkan.Types.Include              (Display, Window)
-import           Graphics.Vulkan.Types.StructMembers
 import           System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkXlibSurfaceCreateInfoKHR {
@@ -26,7 +26,7 @@
 --   >     Window                           window;
 --   > } VkXlibSurfaceCreateInfoKHR;
 --
---   <https://www.khronos.org/registry/vulkan/specs/1.0-extensions/man/html/VkXlibSurfaceCreateInfoKHR.html VkXlibSurfaceCreateInfoKHR registry at www.khronos.org>
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkXlibSurfaceCreateInfoKHR.html VkXlibSurfaceCreateInfoKHR registry at www.khronos.org>
 data VkXlibSurfaceCreateInfoKHR = VkXlibSurfaceCreateInfoKHR## Addr##
                                                               ByteArray##
 
@@ -78,27 +78,6 @@
         type ReturnedOnly VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
         type StructExtends VkXlibSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
 
-instance {-# OVERLAPPING #-} HasVkSType VkXlibSurfaceCreateInfoKHR
-         where
-        type VkSTypeMType VkXlibSurfaceCreateInfoKHR = VkStructureType
-
-        {-# NOINLINE vkSType #-}
-        vkSType x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE vkSTypeByteOffset #-}
-        vkSTypeByteOffset ~_
-          = #{offset VkXlibSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE readVkSType #-}
-        readVkSType p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, sType}
-
-        {-# INLINE writeVkSType #-}
-        writeVkSType p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, sType}
-
 instance {-# OVERLAPPING #-}
          HasField "sType" VkXlibSurfaceCreateInfoKHR where
         type FieldType "sType" VkXlibSurfaceCreateInfoKHR = VkStructureType
@@ -114,37 +93,22 @@
         fieldOffset
           = #{offset VkXlibSurfaceCreateInfoKHR, sType}
 
-instance CanReadField "sType" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkSType
+instance {-# OVERLAPPING #-}
+         CanReadField "sType" VkXlibSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, sType})
 
         {-# INLINE readField #-}
-        readField = readVkSType
+        readField p
+          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, sType}
 
-instance CanWriteField "sType" VkXlibSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "sType" VkXlibSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkSType
-
-instance {-# OVERLAPPING #-} HasVkPNext VkXlibSurfaceCreateInfoKHR
-         where
-        type VkPNextMType VkXlibSurfaceCreateInfoKHR = Ptr Void
-
-        {-# NOINLINE vkPNext #-}
-        vkPNext x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE vkPNextByteOffset #-}
-        vkPNextByteOffset ~_
-          = #{offset VkXlibSurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE readVkPNext #-}
-        readVkPNext p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, pNext}
-
-        {-# INLINE writeVkPNext #-}
-        writeVkPNext p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, pNext}
+        writeField p
+          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, sType}
 
 instance {-# OVERLAPPING #-}
          HasField "pNext" VkXlibSurfaceCreateInfoKHR where
@@ -161,38 +125,22 @@
         fieldOffset
           = #{offset VkXlibSurfaceCreateInfoKHR, pNext}
 
-instance CanReadField "pNext" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkPNext
+instance {-# OVERLAPPING #-}
+         CanReadField "pNext" VkXlibSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, pNext})
 
         {-# INLINE readField #-}
-        readField = readVkPNext
+        readField p
+          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, pNext}
 
-instance CanWriteField "pNext" VkXlibSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "pNext" VkXlibSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkPNext
-
-instance {-# OVERLAPPING #-} HasVkFlags VkXlibSurfaceCreateInfoKHR
-         where
-        type VkFlagsMType VkXlibSurfaceCreateInfoKHR =
-             VkXlibSurfaceCreateFlagsKHR
-
-        {-# NOINLINE vkFlags #-}
-        vkFlags x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE vkFlagsByteOffset #-}
-        vkFlagsByteOffset ~_
-          = #{offset VkXlibSurfaceCreateInfoKHR, flags}
-
-        {-# INLINE readVkFlags #-}
-        readVkFlags p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, flags}
-
-        {-# INLINE writeVkFlags #-}
-        writeVkFlags p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, flags}
+        writeField p
+          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, pNext}
 
 instance {-# OVERLAPPING #-}
          HasField "flags" VkXlibSurfaceCreateInfoKHR where
@@ -210,37 +158,22 @@
         fieldOffset
           = #{offset VkXlibSurfaceCreateInfoKHR, flags}
 
-instance CanReadField "flags" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkFlags
+instance {-# OVERLAPPING #-}
+         CanReadField "flags" VkXlibSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, flags})
 
         {-# INLINE readField #-}
-        readField = readVkFlags
+        readField p
+          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, flags}
 
-instance CanWriteField "flags" VkXlibSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "flags" VkXlibSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkFlags
-
-instance {-# OVERLAPPING #-} HasVkDpy VkXlibSurfaceCreateInfoKHR
-         where
-        type VkDpyMType VkXlibSurfaceCreateInfoKHR = Ptr Display
-
-        {-# NOINLINE vkDpy #-}
-        vkDpy x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, dpy})
-
-        {-# INLINE vkDpyByteOffset #-}
-        vkDpyByteOffset ~_
-          = #{offset VkXlibSurfaceCreateInfoKHR, dpy}
-
-        {-# INLINE readVkDpy #-}
-        readVkDpy p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, dpy}
-
-        {-# INLINE writeVkDpy #-}
-        writeVkDpy p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, dpy}
+        writeField p
+          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, flags}
 
 instance {-# OVERLAPPING #-}
          HasField "dpy" VkXlibSurfaceCreateInfoKHR where
@@ -256,37 +189,22 @@
         {-# INLINE fieldOffset #-}
         fieldOffset = #{offset VkXlibSurfaceCreateInfoKHR, dpy}
 
-instance CanReadField "dpy" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkDpy
+instance {-# OVERLAPPING #-}
+         CanReadField "dpy" VkXlibSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, dpy})
 
         {-# INLINE readField #-}
-        readField = readVkDpy
+        readField p
+          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, dpy}
 
-instance CanWriteField "dpy" VkXlibSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "dpy" VkXlibSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkDpy
-
-instance {-# OVERLAPPING #-} HasVkWindow VkXlibSurfaceCreateInfoKHR
-         where
-        type VkWindowMType VkXlibSurfaceCreateInfoKHR = Window
-
-        {-# NOINLINE vkWindow #-}
-        vkWindow x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, window})
-
-        {-# INLINE vkWindowByteOffset #-}
-        vkWindowByteOffset ~_
-          = #{offset VkXlibSurfaceCreateInfoKHR, window}
-
-        {-# INLINE readVkWindow #-}
-        readVkWindow p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, window}
-
-        {-# INLINE writeVkWindow #-}
-        writeVkWindow p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, window}
+        writeField p
+          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, dpy}
 
 instance {-# OVERLAPPING #-}
          HasField "window" VkXlibSurfaceCreateInfoKHR where
@@ -303,31 +221,37 @@
         fieldOffset
           = #{offset VkXlibSurfaceCreateInfoKHR, window}
 
-instance CanReadField "window" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE getField #-}
-        getField = vkWindow
+instance {-# OVERLAPPING #-}
+         CanReadField "window" VkXlibSurfaceCreateInfoKHR where
+        {-# NOINLINE getField #-}
+        getField x
+          = unsafeDupablePerformIO
+              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, window})
 
         {-# INLINE readField #-}
-        readField = readVkWindow
+        readField p
+          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, window}
 
-instance CanWriteField "window" VkXlibSurfaceCreateInfoKHR where
+instance {-# OVERLAPPING #-}
+         CanWriteField "window" VkXlibSurfaceCreateInfoKHR where
         {-# INLINE writeField #-}
-        writeField = writeVkWindow
+        writeField p
+          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, window}
 
 instance Show VkXlibSurfaceCreateInfoKHR where
         showsPrec d x
           = showString "VkXlibSurfaceCreateInfoKHR {" .
-              showString "vkSType = " .
-                showsPrec d (vkSType x) .
+              showString "sType = " .
+                showsPrec d (getField @"sType" x) .
                   showString ", " .
-                    showString "vkPNext = " .
-                      showsPrec d (vkPNext x) .
+                    showString "pNext = " .
+                      showsPrec d (getField @"pNext" x) .
                         showString ", " .
-                          showString "vkFlags = " .
-                            showsPrec d (vkFlags x) .
+                          showString "flags = " .
+                            showsPrec d (getField @"flags" x) .
                               showString ", " .
-                                showString "vkDpy = " .
-                                  showsPrec d (vkDpy x) .
+                                showString "dpy = " .
+                                  showsPrec d (getField @"dpy" x) .
                                     showString ", " .
-                                      showString "vkWindow = " .
-                                        showsPrec d (vkWindow x) . showChar '}'
+                                      showString "window = " .
+                                        showsPrec d (getField @"window" x) . showChar '}'
diff --git a/src-gen/Graphics/Vulkan/Types/StructMembers.hs b/src-gen/Graphics/Vulkan/Types/StructMembers.hs
deleted file mode 100644
--- a/src-gen/Graphics/Vulkan/Types/StructMembers.hs
+++ /dev/null
@@ -1,17303 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-methods#-}
-{-# LANGUAGE DataKinds            #-}
-{-# LANGUAGE FlexibleContexts     #-}
-{-# LANGUAGE FlexibleInstances    #-}
-{-# LANGUAGE Strict               #-}
-{-# LANGUAGE TypeFamilies         #-}
-{-# LANGUAGE TypeOperators        #-}
-{-# LANGUAGE UndecidableInstances #-}
-module Graphics.Vulkan.Types.StructMembers
-       (HasVkA(..), HasVkAcquireCount(..), HasVkActualPresentTime(..),
-        HasVkAddressModeU(..), HasVkAddressModeV(..),
-        HasVkAddressModeW(..), HasVkAdvancedBlendAllOperations(..),
-        HasVkAdvancedBlendCoherentOperations(..),
-        HasVkAdvancedBlendCorrelatedOverlap(..),
-        HasVkAdvancedBlendIndependentBlend(..),
-        HasVkAdvancedBlendMaxColorAttachments(..),
-        HasVkAdvancedBlendNonPremultipliedDstColor(..),
-        HasVkAdvancedBlendNonPremultipliedSrcColor(..), HasVkAlignment(..),
-        HasVkAllocationSize(..), HasVkAlphaBlendOp(..), HasVkAlphaMode(..),
-        HasVkAlphaToCoverageEnable(..), HasVkAlphaToOne(..),
-        HasVkAlphaToOneEnable(..), HasVkAnisotropyEnable(..),
-        HasVkApiVersion(..), HasVkApplicationVersion(..),
-        HasVkArrayLayer(..), HasVkArrayLayers(..), HasVkArrayPitch(..),
-        HasVkAspectMask(..), HasVkAspectReferenceCount(..),
-        HasVkAttachment(..), HasVkAttachmentCount(..),
-        HasVkAttachmentIndex(..),
-        HasVkAttachmentInitialSampleLocationsCount(..), HasVkB(..),
-        HasVkBack(..), HasVkBaseArrayLayer(..), HasVkBaseMipLevel(..),
-        HasVkBasePipelineHandle(..), HasVkBasePipelineIndex(..),
-        HasVkBindCount(..), HasVkBinding(..), HasVkBindingCount(..),
-        HasVkBindingUnit(..), HasVkBlendConstantsArray(..),
-        HasVkBlendEnable(..), HasVkBlendOverlap(..), HasVkBorderColor(..),
-        HasVkBuffer(..), HasVkBufferBindCount(..), HasVkBufferFeatures(..),
-        HasVkBufferImageGranularity(..), HasVkBufferImageHeight(..),
-        HasVkBufferOffset(..), HasVkBufferRowLength(..),
-        HasVkChromaFilter(..), HasVkClearValue(..),
-        HasVkClearValueCount(..), HasVkClipped(..), HasVkCodeSize(..),
-        HasVkColor(..), HasVkColorArray(..), HasVkColorAttachment(..),
-        HasVkColorAttachmentCount(..), HasVkColorBlendOp(..),
-        HasVkColorSpace(..), HasVkColorWriteMask(..),
-        HasVkCombinedImageSamplerDescriptorCount(..),
-        HasVkCommandBufferCount(..), HasVkCommandPool(..),
-        HasVkCompareEnable(..), HasVkCompareMask(..), HasVkCompareOp(..),
-        HasVkCompatibleHandleTypes(..), HasVkComponents(..),
-        HasVkCompositeAlpha(..), HasVkComputeBindingPointSupport(..),
-        HasVkComputeWorkGroupSizeArray(..), HasVkConnection(..),
-        HasVkConservativePointAndLineRasterization(..),
-        HasVkConservativeRasterizationMode(..),
-        HasVkConservativeRasterizationPostDepthCoverage(..),
-        HasVkConstantID(..), HasVkConversion(..),
-        HasVkCorrelationMaskCount(..), HasVkCoverageModulationMode(..),
-        HasVkCoverageModulationTableCount(..),
-        HasVkCoverageModulationTableEnable(..),
-        HasVkCoverageToColorEnable(..), HasVkCoverageToColorLocation(..),
-        HasVkCullMode(..), HasVkCurrentDisplay(..), HasVkCurrentExtent(..),
-        HasVkCurrentStackIndex(..), HasVkCurrentTransform(..),
-        HasVkDataSize(..), HasVkDedicatedAllocation(..),
-        HasVkDegenerateLinesRasterized(..),
-        HasVkDegenerateTrianglesRasterized(..), HasVkDependencyCount(..),
-        HasVkDependencyFlags(..), HasVkDepth(..), HasVkDepthBiasClamp(..),
-        HasVkDepthBiasConstantFactor(..), HasVkDepthBiasEnable(..),
-        HasVkDepthBiasSlopeFactor(..), HasVkDepthBounds(..),
-        HasVkDepthBoundsTestEnable(..), HasVkDepthClamp(..),
-        HasVkDepthClampEnable(..), HasVkDepthCompareOp(..),
-        HasVkDepthFailOp(..), HasVkDepthPitch(..), HasVkDepthStencil(..),
-        HasVkDepthTestEnable(..), HasVkDepthWriteEnable(..),
-        HasVkDescriptionArray(..), HasVkDescriptorCount(..),
-        HasVkDescriptorPool(..), HasVkDescriptorSet(..),
-        HasVkDescriptorSetCount(..), HasVkDescriptorSetLayout(..),
-        HasVkDescriptorType(..), HasVkDescriptorUpdateEntryCount(..),
-        HasVkDesiredPresentTime(..), HasVkDeviceEvent(..),
-        HasVkDeviceID(..), HasVkDeviceIndexCount(..),
-        HasVkDeviceLUIDArray(..), HasVkDeviceLUIDValid(..),
-        HasVkDeviceMask(..), HasVkDeviceNameArray(..),
-        HasVkDeviceNodeMask(..), HasVkDeviceRenderAreaCount(..),
-        HasVkDeviceType(..), HasVkDeviceUUIDArray(..),
-        HasVkDisabledValidationCheckCount(..),
-        HasVkDiscardRectangleCount(..), HasVkDiscardRectangleMode(..),
-        HasVkDiscreteQueuePriorities(..), HasVkDisplay(..),
-        HasVkDisplayEvent(..), HasVkDisplayMode(..), HasVkDisplayName(..),
-        HasVkDisplayPrimaryBlue(..), HasVkDisplayPrimaryGreen(..),
-        HasVkDisplayPrimaryRed(..), HasVkDivisor(..),
-        HasVkDomainOrigin(..), HasVkDpy(..),
-        HasVkDrawIndirectFirstInstance(..), HasVkDriverUUIDArray(..),
-        HasVkDriverVersion(..), HasVkDstAccessMask(..),
-        HasVkDstAlphaBlendFactor(..), HasVkDstArrayElement(..),
-        HasVkDstBinding(..), HasVkDstColorBlendFactor(..),
-        HasVkDstOffset(..), HasVkDstOffsetsArray(..),
-        HasVkDstPremultiplied(..), HasVkDstQueueFamilyIndex(..),
-        HasVkDstRect(..), HasVkDstSet(..), HasVkDstStageMask(..),
-        HasVkDstSubpass(..), HasVkDstSubresource(..),
-        HasVkDualSrcBlend(..), HasVkDwAccess(..), HasVkDynamicCount(..),
-        HasVkDynamicStateCount(..), HasVkEarliestPresentTime(..),
-        HasVkEnabledExtensionCount(..), HasVkEnabledLayerCount(..),
-        HasVkEngineVersion(..), HasVkExportFromImportedHandleTypes(..),
-        HasVkExtensionNameArray(..), HasVkExtent(..),
-        HasVkExternalFenceFeatures(..), HasVkExternalMemoryFeatures(..),
-        HasVkExternalMemoryProperties(..),
-        HasVkExternalSemaphoreFeatures(..),
-        HasVkExtraPrimitiveOverestimationSize(..),
-        HasVkExtraPrimitiveOverestimationSizeGranularity(..),
-        HasVkFailOp(..), HasVkFd(..), HasVkFeatures(..), HasVkFence(..),
-        HasVkFillModeNonSolid(..),
-        HasVkFilterMinmaxImageComponentMapping(..),
-        HasVkFilterMinmaxSingleComponentFormats(..), HasVkFinalLayout(..),
-        HasVkFirstIndex(..), HasVkFirstInstance(..), HasVkFirstVertex(..),
-        HasVkFlags(..), HasVkFloat32Array(..),
-        HasVkForceExplicitReconstruction(..), HasVkFormat(..),
-        HasVkFormatProperties(..), HasVkFragmentStoresAndAtomics(..),
-        HasVkFramebuffer(..), HasVkFramebufferColorSampleCounts(..),
-        HasVkFramebufferDepthSampleCounts(..),
-        HasVkFramebufferNoAttachmentsSampleCounts(..),
-        HasVkFramebufferStencilSampleCounts(..), HasVkFront(..),
-        HasVkFrontFace(..), HasVkFullDrawIndexUint32(..),
-        HasVkFullyCoveredFragmentShaderInputVariable(..), HasVkG(..),
-        HasVkGeometryShader(..), HasVkGlobalAlpha(..),
-        HasVkGlobalPriority(..), HasVkHandle(..), HasVkHandleType(..),
-        HasVkHandleTypes(..), HasVkHeapIndex(..), HasVkHeight(..),
-        HasVkHinstance(..), HasVkHwnd(..), HasVkImage(..),
-        HasVkImageArrayLayers(..), HasVkImageBindCount(..),
-        HasVkImageColorSpace(..), HasVkImageCubeArray(..),
-        HasVkImageExtent(..), HasVkImageFormat(..),
-        HasVkImageFormatProperties(..), HasVkImageGranularity(..),
-        HasVkImageIndex(..), HasVkImageLayout(..),
-        HasVkImageMipTailFirstLod(..), HasVkImageMipTailOffset(..),
-        HasVkImageMipTailSize(..), HasVkImageMipTailStride(..),
-        HasVkImageOffset(..), HasVkImageOpaqueBindCount(..),
-        HasVkImageSharingMode(..), HasVkImageSubresource(..),
-        HasVkImageType(..), HasVkImageUsage(..), HasVkImageView(..),
-        HasVkImplementationVersion(..), HasVkIndependentBlend(..),
-        HasVkIndexCount(..), HasVkIndexType(..),
-        HasVkIndirectCommandsLayout(..),
-        HasVkIndirectCommandsTokenCount(..), HasVkInheritedQueries(..),
-        HasVkInitialDataSize(..), HasVkInitialLayout(..),
-        HasVkInputAttachmentCount(..), HasVkInputAttachmentIndex(..),
-        HasVkInputRate(..), HasVkInstanceCount(..), HasVkInt32Array(..),
-        HasVkLargePoints(..), HasVkLayer(..), HasVkLayerCount(..),
-        HasVkLayerNameArray(..), HasVkLayers(..), HasVkLayout(..),
-        HasVkLdsSizePerLocalWorkGroup(..), HasVkLdsUsageSizeInBytes(..),
-        HasVkLevel(..), HasVkLevelCount(..), HasVkLimits(..),
-        HasVkLineWidth(..), HasVkLineWidthGranularity(..),
-        HasVkLineWidthRangeArray(..), HasVkLinearTilingFeatures(..),
-        HasVkLoadOp(..), HasVkLocation(..), HasVkLogicOp(..),
-        HasVkLogicOpEnable(..), HasVkMagFilter(..), HasVkMapEntryCount(..),
-        HasVkMaxAnisotropy(..), HasVkMaxArrayLayers(..),
-        HasVkMaxBoundDescriptorSets(..), HasVkMaxClipDistances(..),
-        HasVkMaxColorAttachments(..),
-        HasVkMaxCombinedClipAndCullDistances(..),
-        HasVkMaxComputeSharedMemorySize(..),
-        HasVkMaxComputeWorkGroupCountArray(..),
-        HasVkMaxComputeWorkGroupInvocations(..),
-        HasVkMaxComputeWorkGroupSizeArray(..),
-        HasVkMaxContentLightLevel(..), HasVkMaxCullDistances(..),
-        HasVkMaxDepth(..), HasVkMaxDepthBounds(..),
-        HasVkMaxDescriptorSetInputAttachments(..),
-        HasVkMaxDescriptorSetSampledImages(..),
-        HasVkMaxDescriptorSetSamplers(..),
-        HasVkMaxDescriptorSetStorageBuffers(..),
-        HasVkMaxDescriptorSetStorageBuffersDynamic(..),
-        HasVkMaxDescriptorSetStorageImages(..),
-        HasVkMaxDescriptorSetUniformBuffers(..),
-        HasVkMaxDescriptorSetUniformBuffersDynamic(..),
-        HasVkMaxDiscardRectangles(..), HasVkMaxDrawIndexedIndexValue(..),
-        HasVkMaxDrawIndirectCount(..), HasVkMaxDstExtent(..),
-        HasVkMaxDstPosition(..), HasVkMaxExtent(..),
-        HasVkMaxExtraPrimitiveOverestimationSize(..),
-        HasVkMaxFragmentCombinedOutputResources(..),
-        HasVkMaxFragmentDualSrcAttachments(..),
-        HasVkMaxFragmentInputComponents(..),
-        HasVkMaxFragmentOutputAttachments(..),
-        HasVkMaxFrameAverageLightLevel(..), HasVkMaxFramebufferHeight(..),
-        HasVkMaxFramebufferLayers(..), HasVkMaxFramebufferWidth(..),
-        HasVkMaxGeometryInputComponents(..),
-        HasVkMaxGeometryOutputComponents(..),
-        HasVkMaxGeometryOutputVertices(..),
-        HasVkMaxGeometryShaderInvocations(..),
-        HasVkMaxGeometryTotalOutputComponents(..),
-        HasVkMaxImageArrayLayers(..), HasVkMaxImageCount(..),
-        HasVkMaxImageDimension1D(..), HasVkMaxImageDimension2D(..),
-        HasVkMaxImageDimension3D(..), HasVkMaxImageDimensionCube(..),
-        HasVkMaxImageExtent(..),
-        HasVkMaxIndirectCommandsLayoutTokenCount(..),
-        HasVkMaxInterpolationOffset(..), HasVkMaxLod(..),
-        HasVkMaxLuminance(..), HasVkMaxMemoryAllocationCount(..),
-        HasVkMaxMipLevels(..), HasVkMaxMultiviewInstanceIndex(..),
-        HasVkMaxMultiviewViewCount(..), HasVkMaxObjectEntryCounts(..),
-        HasVkMaxPerStageDescriptorInputAttachments(..),
-        HasVkMaxPerStageDescriptorSampledImages(..),
-        HasVkMaxPerStageDescriptorSamplers(..),
-        HasVkMaxPerStageDescriptorStorageBuffers(..),
-        HasVkMaxPerStageDescriptorStorageImages(..),
-        HasVkMaxPerStageDescriptorUniformBuffers(..),
-        HasVkMaxPerStageResources(..), HasVkMaxPipelineLayouts(..),
-        HasVkMaxPushConstantsSize(..), HasVkMaxPushDescriptors(..),
-        HasVkMaxResourceSize(..), HasVkMaxSampleLocationGridSize(..),
-        HasVkMaxSampleMaskWords(..),
-        HasVkMaxSampledImagesPerDescriptor(..),
-        HasVkMaxSamplerAllocationCount(..), HasVkMaxSamplerAnisotropy(..),
-        HasVkMaxSamplerLodBias(..), HasVkMaxSequencesCount(..),
-        HasVkMaxSets(..), HasVkMaxSrcExtent(..), HasVkMaxSrcPosition(..),
-        HasVkMaxStorageBufferRange(..),
-        HasVkMaxStorageBuffersPerDescriptor(..),
-        HasVkMaxStorageImagesPerDescriptor(..),
-        HasVkMaxTessellationControlPerPatchOutputComponents(..),
-        HasVkMaxTessellationControlPerVertexInputComponents(..),
-        HasVkMaxTessellationControlPerVertexOutputComponents(..),
-        HasVkMaxTessellationControlTotalOutputComponents(..),
-        HasVkMaxTessellationEvaluationInputComponents(..),
-        HasVkMaxTessellationEvaluationOutputComponents(..),
-        HasVkMaxTessellationGenerationLevel(..),
-        HasVkMaxTessellationPatchSize(..), HasVkMaxTexelBufferElements(..),
-        HasVkMaxTexelGatherOffset(..), HasVkMaxTexelOffset(..),
-        HasVkMaxUniformBufferRange(..),
-        HasVkMaxUniformBuffersPerDescriptor(..),
-        HasVkMaxVertexInputAttributeOffset(..),
-        HasVkMaxVertexInputAttributes(..),
-        HasVkMaxVertexInputBindingStride(..),
-        HasVkMaxVertexInputBindings(..),
-        HasVkMaxVertexOutputComponents(..),
-        HasVkMaxViewportDimensionsArray(..), HasVkMaxViewports(..),
-        HasVkMemory(..), HasVkMemoryDeviceIndex(..),
-        HasVkMemoryHeapCount(..), HasVkMemoryHeapsArray(..),
-        HasVkMemoryOffset(..), HasVkMemoryProperties(..),
-        HasVkMemoryRequirements(..), HasVkMemoryTypeBits(..),
-        HasVkMemoryTypeCount(..), HasVkMemoryTypeIndex(..),
-        HasVkMemoryTypesArray(..),
-        HasVkMinCommandsTokenBufferOffsetAlignment(..), HasVkMinDepth(..),
-        HasVkMinDepthBounds(..), HasVkMinDstExtent(..),
-        HasVkMinDstPosition(..), HasVkMinFilter(..),
-        HasVkMinImageCount(..), HasVkMinImageExtent(..),
-        HasVkMinImageTransferGranularity(..),
-        HasVkMinImportedHostPointerAlignment(..),
-        HasVkMinInterpolationOffset(..), HasVkMinLod(..),
-        HasVkMinLuminance(..), HasVkMinMemoryMapAlignment(..),
-        HasVkMinSampleShading(..),
-        HasVkMinSequenceCountBufferOffsetAlignment(..),
-        HasVkMinSequenceIndexBufferOffsetAlignment(..),
-        HasVkMinSrcExtent(..), HasVkMinSrcPosition(..),
-        HasVkMinStorageBufferOffsetAlignment(..),
-        HasVkMinTexelBufferOffsetAlignment(..),
-        HasVkMinTexelGatherOffset(..), HasVkMinTexelOffset(..),
-        HasVkMinUniformBufferOffsetAlignment(..), HasVkMipLevel(..),
-        HasVkMipLevels(..), HasVkMipLodBias(..), HasVkMipmapMode(..),
-        HasVkMipmapPrecisionBits(..), HasVkMirSurface(..), HasVkMode(..),
-        HasVkModes(..), HasVkModule(..), HasVkMultiDrawIndirect(..),
-        HasVkMultiViewport(..), HasVkMultiview(..),
-        HasVkMultiviewGeometryShader(..),
-        HasVkMultiviewTessellationShader(..), HasVkName(..),
-        HasVkNewLayout(..), HasVkNonCoherentAtomSize(..),
-        HasVkNumAvailableSgprs(..), HasVkNumAvailableVgprs(..),
-        HasVkNumPhysicalSgprs(..), HasVkNumPhysicalVgprs(..),
-        HasVkNumUsedSgprs(..), HasVkNumUsedVgprs(..), HasVkObject(..),
-        HasVkObjectCount(..), HasVkObjectTable(..), HasVkObjectType(..),
-        HasVkOcclusionQueryEnable(..), HasVkOcclusionQueryPrecise(..),
-        HasVkOffset(..), HasVkOldLayout(..), HasVkOldSwapchain(..),
-        HasVkOptimalBufferCopyOffsetAlignment(..),
-        HasVkOptimalBufferCopyRowPitchAlignment(..),
-        HasVkOptimalTilingFeatures(..), HasVkPAcquireKeys(..),
-        HasVkPAcquireSyncs(..), HasVkPAcquireTimeoutMilliseconds(..),
-        HasVkPAcquireTimeouts(..), HasVkPApplicationInfo(..),
-        HasVkPApplicationName(..), HasVkPAspectReferences(..),
-        HasVkPAttachmentInitialSampleLocations(..), HasVkPAttachments(..),
-        HasVkPAttributes(..), HasVkPBindings(..), HasVkPBinds(..),
-        HasVkPBufferBinds(..), HasVkPBufferInfo(..), HasVkPClearValues(..),
-        HasVkPCode(..), HasVkPColorAttachments(..),
-        HasVkPColorBlendState(..), HasVkPCommandBufferDeviceMasks(..),
-        HasVkPCommandBuffers(..), HasVkPCorrelationMasks(..),
-        HasVkPCoverageModulationTable(..), HasVkPData(..),
-        HasVkPDependencies(..), HasVkPDepthStencilAttachment(..),
-        HasVkPDepthStencilState(..), HasVkPDescriptorUpdateEntries(..),
-        HasVkPDeviceIndices(..), HasVkPDeviceMasks(..),
-        HasVkPDeviceRenderAreas(..), HasVkPDisabledValidationChecks(..),
-        HasVkPDiscardRectangles(..), HasVkPDynamicState(..),
-        HasVkPDynamicStates(..), HasVkPEnabledFeatures(..),
-        HasVkPEngineName(..), HasVkPHostPointer(..), HasVkPImageBinds(..),
-        HasVkPImageIndices(..), HasVkPImageInfo(..),
-        HasVkPImageOpaqueBinds(..), HasVkPImmutableSamplers(..),
-        HasVkPIndirectCommandsTokens(..), HasVkPInheritanceInfo(..),
-        HasVkPInitialData(..), HasVkPInputAssemblyState(..),
-        HasVkPInputAttachments(..), HasVkPMapEntries(..),
-        HasVkPMarkerName(..), HasVkPMultisampleState(..), HasVkPName(..),
-        HasVkPNext(..), HasVkPObjectEntryCounts(..),
-        HasVkPObjectEntryTypes(..), HasVkPObjectEntryUsageFlags(..),
-        HasVkPObjectName(..), HasVkPPhysicalDevices(..),
-        HasVkPPoolSizes(..), HasVkPPostSubpassSampleLocations(..),
-        HasVkPPreserveAttachments(..), HasVkPPushConstantRanges(..),
-        HasVkPQueueCreateInfos(..), HasVkPQueueFamilyIndices(..),
-        HasVkPQueuePriorities(..), HasVkPRasterizationState(..),
-        HasVkPRectangles(..), HasVkPRegions(..), HasVkPReleaseKeys(..),
-        HasVkPReleaseSyncs(..), HasVkPResolveAttachments(..),
-        HasVkPResults(..), HasVkPSFRRects(..), HasVkPSampleLocations(..),
-        HasVkPSampleMask(..), HasVkPScissors(..), HasVkPSetLayouts(..),
-        HasVkPSignalSemaphoreDeviceIndices(..),
-        HasVkPSignalSemaphoreValues(..), HasVkPSignalSemaphores(..),
-        HasVkPSpecializationInfo(..), HasVkPStages(..),
-        HasVkPSubpasses(..), HasVkPSwapchains(..), HasVkPTag(..),
-        HasVkPTessellationState(..), HasVkPTexelBufferView(..),
-        HasVkPTimes(..), HasVkPTokens(..), HasVkPUserData(..),
-        HasVkPVertexAttributeDescriptions(..),
-        HasVkPVertexBindingDescriptions(..), HasVkPVertexInputState(..),
-        HasVkPView(..), HasVkPViewFormats(..), HasVkPViewMasks(..),
-        HasVkPViewOffsets(..), HasVkPViewportState(..),
-        HasVkPViewportSwizzles(..), HasVkPViewportWScalings(..),
-        HasVkPViewports(..), HasVkPWaitDstStageMask(..),
-        HasVkPWaitSemaphoreDeviceIndices(..),
-        HasVkPWaitSemaphoreValues(..), HasVkPWaitSemaphores(..),
-        HasVkParameters(..), HasVkPassOp(..), HasVkPatchControlPoints(..),
-        HasVkPerViewPositionAllComponents(..), HasVkPersistent(..),
-        HasVkPersistentContent(..), HasVkPfnAllocation(..),
-        HasVkPfnCallback(..), HasVkPfnFree(..),
-        HasVkPfnInternalAllocation(..), HasVkPfnInternalFree(..),
-        HasVkPfnReallocation(..), HasVkPhysicalDeviceCount(..),
-        HasVkPhysicalDevicesArray(..), HasVkPhysicalDimensions(..),
-        HasVkPhysicalResolution(..), HasVkPipeline(..),
-        HasVkPipelineBindPoint(..), HasVkPipelineCacheUUIDArray(..),
-        HasVkPipelineLayout(..), HasVkPipelineStatistics(..),
-        HasVkPipelineStatisticsQuery(..), HasVkPlaneAspect(..),
-        HasVkPlaneIndex(..), HasVkPlaneReorderPossible(..),
-        HasVkPlaneStackIndex(..), HasVkPointClippingBehavior(..),
-        HasVkPointSizeGranularity(..), HasVkPointSizeRangeArray(..),
-        HasVkPolygonMode(..), HasVkPoolSizeCount(..),
-        HasVkPostSubpassSampleLocationsCount(..), HasVkPowerState(..),
-        HasVkPpEnabledExtensionNames(..), HasVkPpEnabledLayerNames(..),
-        HasVkPreTransform(..), HasVkPrefersDedicatedAllocation(..),
-        HasVkPresentID(..), HasVkPresentMargin(..),
-        HasVkPresentMaskArray(..), HasVkPresentMode(..),
-        HasVkPreserveAttachmentCount(..),
-        HasVkPrimitiveOverestimationSize(..),
-        HasVkPrimitiveRestartEnable(..), HasVkPrimitiveUnderestimation(..),
-        HasVkProperties(..), HasVkPropertyFlags(..),
-        HasVkPushConstantRangeCount(..), HasVkQueryCount(..),
-        HasVkQueryFlags(..), HasVkQueryType(..), HasVkQueueCount(..),
-        HasVkQueueCreateInfoCount(..), HasVkQueueFamilyIndex(..),
-        HasVkQueueFamilyIndexCount(..), HasVkQueueFamilyProperties(..),
-        HasVkQueueFlags(..), HasVkR(..), HasVkRange(..),
-        HasVkRasterizationOrder(..), HasVkRasterizationSamples(..),
-        HasVkRasterizerDiscardEnable(..), HasVkRect(..),
-        HasVkRectangleCount(..), HasVkReductionMode(..),
-        HasVkReference(..), HasVkRefreshDuration(..), HasVkRefreshRate(..),
-        HasVkReleaseCount(..), HasVkRenderArea(..), HasVkRenderPass(..),
-        HasVkRequiresDedicatedAllocation(..),
-        HasVkResidencyAlignedMipSize(..),
-        HasVkResidencyNonResidentStrict(..),
-        HasVkResidencyStandard2DBlockShape(..),
-        HasVkResidencyStandard2DMultisampleBlockShape(..),
-        HasVkResidencyStandard3DBlockShape(..),
-        HasVkResourceDeviceIndex(..), HasVkResourceOffset(..),
-        HasVkResourceUsage(..), HasVkRobustBufferAccess(..),
-        HasVkRowPitch(..), HasVkSFRRectCount(..), HasVkSType(..),
-        HasVkSampleCounts(..), HasVkSampleLocationCoordinateRangeArray(..),
-        HasVkSampleLocationGridSize(..),
-        HasVkSampleLocationSampleCounts(..),
-        HasVkSampleLocationSubPixelBits(..), HasVkSampleLocationsCount(..),
-        HasVkSampleLocationsEnable(..), HasVkSampleLocationsInfo(..),
-        HasVkSampleLocationsPerPixel(..), HasVkSampleRateShading(..),
-        HasVkSampleShadingEnable(..),
-        HasVkSampledImageColorSampleCounts(..),
-        HasVkSampledImageDepthSampleCounts(..),
-        HasVkSampledImageIntegerSampleCounts(..),
-        HasVkSampledImageStencilSampleCounts(..), HasVkSampler(..),
-        HasVkSamplerAnisotropy(..), HasVkSamplerYcbcrConversion(..),
-        HasVkSamples(..), HasVkScissorCount(..),
-        HasVkScratchMemUsageInBytes(..), HasVkSemaphore(..),
-        HasVkSequencesCountBuffer(..), HasVkSequencesCountOffset(..),
-        HasVkSequencesIndexBuffer(..), HasVkSequencesIndexOffset(..),
-        HasVkSet(..), HasVkSetLayoutCount(..), HasVkShaderClipDistance(..),
-        HasVkShaderCullDistance(..), HasVkShaderFloat64(..),
-        HasVkShaderImageGatherExtended(..), HasVkShaderInt16(..),
-        HasVkShaderInt64(..), HasVkShaderResourceMinLod(..),
-        HasVkShaderResourceResidency(..),
-        HasVkShaderSampledImageArrayDynamicIndexing(..),
-        HasVkShaderStageMask(..),
-        HasVkShaderStorageBufferArrayDynamicIndexing(..),
-        HasVkShaderStorageImageArrayDynamicIndexing(..),
-        HasVkShaderStorageImageExtendedFormats(..),
-        HasVkShaderStorageImageMultisample(..),
-        HasVkShaderStorageImageReadWithoutFormat(..),
-        HasVkShaderStorageImageWriteWithoutFormat(..),
-        HasVkShaderTessellationAndGeometryPointSize(..),
-        HasVkShaderUniformBufferArrayDynamicIndexing(..),
-        HasVkSharedPresentSupportedUsageFlags(..), HasVkSharingMode(..),
-        HasVkSignalSemaphoreCount(..), HasVkSignalSemaphoreValuesCount(..),
-        HasVkSize(..), HasVkSparseAddressSpaceSize(..),
-        HasVkSparseBinding(..), HasVkSparseProperties(..),
-        HasVkSparseResidency16Samples(..),
-        HasVkSparseResidency2Samples(..), HasVkSparseResidency4Samples(..),
-        HasVkSparseResidency8Samples(..), HasVkSparseResidencyAliased(..),
-        HasVkSparseResidencyBuffer(..), HasVkSparseResidencyImage2D(..),
-        HasVkSparseResidencyImage3D(..), HasVkSpecVersion(..),
-        HasVkSrcAccessMask(..), HasVkSrcAlphaBlendFactor(..),
-        HasVkSrcArrayElement(..), HasVkSrcBinding(..),
-        HasVkSrcColorBlendFactor(..), HasVkSrcOffset(..),
-        HasVkSrcOffsetsArray(..), HasVkSrcPremultiplied(..),
-        HasVkSrcQueueFamilyIndex(..), HasVkSrcRect(..), HasVkSrcSet(..),
-        HasVkSrcStageMask(..), HasVkSrcSubpass(..),
-        HasVkSrcSubresource(..), HasVkStage(..), HasVkStageCount(..),
-        HasVkStageFlags(..), HasVkStandardSampleLocations(..),
-        HasVkStencil(..), HasVkStencilLoadOp(..), HasVkStencilStoreOp(..),
-        HasVkStencilTestEnable(..), HasVkStorageBuffer16BitAccess(..),
-        HasVkStorageImageSampleCounts(..), HasVkStorageInputOutput16(..),
-        HasVkStoragePushConstant16(..), HasVkStoreOp(..),
-        HasVkStrictLines(..), HasVkStride(..),
-        HasVkSubPixelInterpolationOffsetBits(..),
-        HasVkSubPixelPrecisionBits(..), HasVkSubTexelPrecisionBits(..),
-        HasVkSubpass(..), HasVkSubpassCount(..), HasVkSubpassIndex(..),
-        HasVkSubresource(..), HasVkSubresourceRange(..),
-        HasVkSubsetAllocation(..), HasVkSupportedAlpha(..),
-        HasVkSupportedCompositeAlpha(..),
-        HasVkSupportedSurfaceCounters(..), HasVkSupportedTransforms(..),
-        HasVkSupportedUsageFlags(..),
-        HasVkSupportsTextureGatherLODBiasAMD(..), HasVkSurface(..),
-        HasVkSurfaceCapabilities(..), HasVkSurfaceCounters(..),
-        HasVkSurfaceFormat(..), HasVkSwapchain(..),
-        HasVkSwapchainCount(..), HasVkTagName(..), HasVkTagSize(..),
-        HasVkTargetCommandBuffer(..), HasVkTemplateType(..),
-        HasVkTessellationShader(..), HasVkTextureCompressionASTC_LDR(..),
-        HasVkTextureCompressionBC(..), HasVkTextureCompressionETC2(..),
-        HasVkTiling(..), HasVkTimeout(..),
-        HasVkTimestampComputeAndGraphics(..), HasVkTimestampPeriod(..),
-        HasVkTimestampValidBits(..), HasVkTokenCount(..),
-        HasVkTokenType(..), HasVkTopology(..), HasVkTransform(..),
-        HasVkType(..), HasVkUint32Array(..),
-        HasVkUniformAndStorageBuffer16BitAccess(..),
-        HasVkUnnormalizedCoordinates(..), HasVkUsage(..),
-        HasVkValidationCache(..), HasVkVariableMultisampleRate(..),
-        HasVkVariablePointers(..), HasVkVariablePointersStorageBuffer(..),
-        HasVkVariableSampleLocations(..), HasVkVendorID(..),
-        HasVkVertexAttributeDescriptionCount(..),
-        HasVkVertexBindingDescriptionCount(..), HasVkVertexCount(..),
-        HasVkVertexOffset(..), HasVkVertexPipelineStoresAndAtomics(..),
-        HasVkViewFormatCount(..), HasVkViewType(..),
-        HasVkViewportBoundsRangeArray(..), HasVkViewportCount(..),
-        HasVkViewportSubPixelBits(..), HasVkViewportWScalingEnable(..),
-        HasVkVisibleRegion(..), HasVkW(..), HasVkWaitSemaphoreCount(..),
-        HasVkWaitSemaphoreValuesCount(..), HasVkWhitePoint(..),
-        HasVkWideLines(..), HasVkWidth(..), HasVkWindow(..),
-        HasVkWriteMask(..), HasVkX(..), HasVkXChromaOffset(..),
-        HasVkXcoeff(..), HasVkY(..), HasVkYChromaOffset(..),
-        HasVkYcbcrModel(..), HasVkYcbcrRange(..), HasVkYcoeff(..),
-        HasVkZ(..))
-       where
-import           GHC.TypeLits            (ErrorMessage (..), TypeError)
-import           Graphics.Vulkan.Marshal
-
-class HasVkA a where
-        type VkAMType a :: *
-
-        vkA :: a -> VkAMType a
-
-        vkAByteOffset :: a -> Int
-
-        readVkA :: Ptr a -> IO (VkAMType a)
-
-        writeVkA :: Ptr a -> VkAMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'a'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkA a
-
-class HasVkAcquireCount a where
-        type VkAcquireCountMType a :: *
-
-        vkAcquireCount :: a -> VkAcquireCountMType a
-
-        vkAcquireCountByteOffset :: a -> Int
-
-        readVkAcquireCount :: Ptr a -> IO (VkAcquireCountMType a)
-
-        writeVkAcquireCount :: Ptr a -> VkAcquireCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'acquireCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAcquireCount a
-
-class HasVkActualPresentTime a where
-        type VkActualPresentTimeMType a :: *
-
-        vkActualPresentTime :: a -> VkActualPresentTimeMType a
-
-        vkActualPresentTimeByteOffset :: a -> Int
-
-        readVkActualPresentTime :: Ptr a -> IO (VkActualPresentTimeMType a)
-
-        writeVkActualPresentTime ::
-                                 Ptr a -> VkActualPresentTimeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'actualPresentTime'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkActualPresentTime a
-
-class HasVkAddressModeU a where
-        type VkAddressModeUMType a :: *
-
-        vkAddressModeU :: a -> VkAddressModeUMType a
-
-        vkAddressModeUByteOffset :: a -> Int
-
-        readVkAddressModeU :: Ptr a -> IO (VkAddressModeUMType a)
-
-        writeVkAddressModeU :: Ptr a -> VkAddressModeUMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'addressModeU'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAddressModeU a
-
-class HasVkAddressModeV a where
-        type VkAddressModeVMType a :: *
-
-        vkAddressModeV :: a -> VkAddressModeVMType a
-
-        vkAddressModeVByteOffset :: a -> Int
-
-        readVkAddressModeV :: Ptr a -> IO (VkAddressModeVMType a)
-
-        writeVkAddressModeV :: Ptr a -> VkAddressModeVMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'addressModeV'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAddressModeV a
-
-class HasVkAddressModeW a where
-        type VkAddressModeWMType a :: *
-
-        vkAddressModeW :: a -> VkAddressModeWMType a
-
-        vkAddressModeWByteOffset :: a -> Int
-
-        readVkAddressModeW :: Ptr a -> IO (VkAddressModeWMType a)
-
-        writeVkAddressModeW :: Ptr a -> VkAddressModeWMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'addressModeW'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAddressModeW a
-
-class HasVkAdvancedBlendAllOperations a where
-        type VkAdvancedBlendAllOperationsMType a :: *
-
-        vkAdvancedBlendAllOperations ::
-                                     a -> VkAdvancedBlendAllOperationsMType a
-
-        vkAdvancedBlendAllOperationsByteOffset :: a -> Int
-
-        readVkAdvancedBlendAllOperations ::
-                                         Ptr a -> IO (VkAdvancedBlendAllOperationsMType a)
-
-        writeVkAdvancedBlendAllOperations ::
-                                          Ptr a -> VkAdvancedBlendAllOperationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'advancedBlendAllOperations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendAllOperations a
-
-class HasVkAdvancedBlendCoherentOperations a where
-        type VkAdvancedBlendCoherentOperationsMType a :: *
-
-        vkAdvancedBlendCoherentOperations ::
-                                          a -> VkAdvancedBlendCoherentOperationsMType a
-
-        vkAdvancedBlendCoherentOperationsByteOffset :: a -> Int
-
-        readVkAdvancedBlendCoherentOperations ::
-                                              Ptr a -> IO (VkAdvancedBlendCoherentOperationsMType a)
-
-        writeVkAdvancedBlendCoherentOperations ::
-                                               Ptr a ->
-                                                 VkAdvancedBlendCoherentOperationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'advancedBlendCoherentOperations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendCoherentOperations a
-
-class HasVkAdvancedBlendCorrelatedOverlap a where
-        type VkAdvancedBlendCorrelatedOverlapMType a :: *
-
-        vkAdvancedBlendCorrelatedOverlap ::
-                                         a -> VkAdvancedBlendCorrelatedOverlapMType a
-
-        vkAdvancedBlendCorrelatedOverlapByteOffset :: a -> Int
-
-        readVkAdvancedBlendCorrelatedOverlap ::
-                                             Ptr a -> IO (VkAdvancedBlendCorrelatedOverlapMType a)
-
-        writeVkAdvancedBlendCorrelatedOverlap ::
-                                              Ptr a ->
-                                                VkAdvancedBlendCorrelatedOverlapMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'advancedBlendCorrelatedOverlap'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendCorrelatedOverlap a
-
-class HasVkAdvancedBlendIndependentBlend a where
-        type VkAdvancedBlendIndependentBlendMType a :: *
-
-        vkAdvancedBlendIndependentBlend ::
-                                        a -> VkAdvancedBlendIndependentBlendMType a
-
-        vkAdvancedBlendIndependentBlendByteOffset :: a -> Int
-
-        readVkAdvancedBlendIndependentBlend ::
-                                            Ptr a -> IO (VkAdvancedBlendIndependentBlendMType a)
-
-        writeVkAdvancedBlendIndependentBlend ::
-                                             Ptr a ->
-                                               VkAdvancedBlendIndependentBlendMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'advancedBlendIndependentBlend'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendIndependentBlend a
-
-class HasVkAdvancedBlendMaxColorAttachments a where
-        type VkAdvancedBlendMaxColorAttachmentsMType a :: *
-
-        vkAdvancedBlendMaxColorAttachments ::
-                                           a -> VkAdvancedBlendMaxColorAttachmentsMType a
-
-        vkAdvancedBlendMaxColorAttachmentsByteOffset :: a -> Int
-
-        readVkAdvancedBlendMaxColorAttachments ::
-                                               Ptr a ->
-                                                 IO (VkAdvancedBlendMaxColorAttachmentsMType a)
-
-        writeVkAdvancedBlendMaxColorAttachments ::
-                                                Ptr a ->
-                                                  VkAdvancedBlendMaxColorAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'advancedBlendMaxColorAttachments'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendMaxColorAttachments a
-
-class HasVkAdvancedBlendNonPremultipliedDstColor a where
-        type VkAdvancedBlendNonPremultipliedDstColorMType a :: *
-
-        vkAdvancedBlendNonPremultipliedDstColor ::
-                                                a -> VkAdvancedBlendNonPremultipliedDstColorMType a
-
-        vkAdvancedBlendNonPremultipliedDstColorByteOffset :: a -> Int
-
-        readVkAdvancedBlendNonPremultipliedDstColor ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkAdvancedBlendNonPremultipliedDstColorMType
-                                                           a)
-
-        writeVkAdvancedBlendNonPremultipliedDstColor ::
-                                                     Ptr a ->
-                                                       VkAdvancedBlendNonPremultipliedDstColorMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'advancedBlendNonPremultipliedDstColor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendNonPremultipliedDstColor a
-
-class HasVkAdvancedBlendNonPremultipliedSrcColor a where
-        type VkAdvancedBlendNonPremultipliedSrcColorMType a :: *
-
-        vkAdvancedBlendNonPremultipliedSrcColor ::
-                                                a -> VkAdvancedBlendNonPremultipliedSrcColorMType a
-
-        vkAdvancedBlendNonPremultipliedSrcColorByteOffset :: a -> Int
-
-        readVkAdvancedBlendNonPremultipliedSrcColor ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkAdvancedBlendNonPremultipliedSrcColorMType
-                                                           a)
-
-        writeVkAdvancedBlendNonPremultipliedSrcColor ::
-                                                     Ptr a ->
-                                                       VkAdvancedBlendNonPremultipliedSrcColorMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'advancedBlendNonPremultipliedSrcColor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAdvancedBlendNonPremultipliedSrcColor a
-
-class HasVkAlignment a where
-        type VkAlignmentMType a :: *
-
-        vkAlignment :: a -> VkAlignmentMType a
-
-        vkAlignmentByteOffset :: a -> Int
-
-        readVkAlignment :: Ptr a -> IO (VkAlignmentMType a)
-
-        writeVkAlignment :: Ptr a -> VkAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'alignment'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAlignment a
-
-class HasVkAllocationSize a where
-        type VkAllocationSizeMType a :: *
-
-        vkAllocationSize :: a -> VkAllocationSizeMType a
-
-        vkAllocationSizeByteOffset :: a -> Int
-
-        readVkAllocationSize :: Ptr a -> IO (VkAllocationSizeMType a)
-
-        writeVkAllocationSize :: Ptr a -> VkAllocationSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'allocationSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAllocationSize a
-
-class HasVkAlphaBlendOp a where
-        type VkAlphaBlendOpMType a :: *
-
-        vkAlphaBlendOp :: a -> VkAlphaBlendOpMType a
-
-        vkAlphaBlendOpByteOffset :: a -> Int
-
-        readVkAlphaBlendOp :: Ptr a -> IO (VkAlphaBlendOpMType a)
-
-        writeVkAlphaBlendOp :: Ptr a -> VkAlphaBlendOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'alphaBlendOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAlphaBlendOp a
-
-class HasVkAlphaMode a where
-        type VkAlphaModeMType a :: *
-
-        vkAlphaMode :: a -> VkAlphaModeMType a
-
-        vkAlphaModeByteOffset :: a -> Int
-
-        readVkAlphaMode :: Ptr a -> IO (VkAlphaModeMType a)
-
-        writeVkAlphaMode :: Ptr a -> VkAlphaModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'alphaMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAlphaMode a
-
-class HasVkAlphaToCoverageEnable a where
-        type VkAlphaToCoverageEnableMType a :: *
-
-        vkAlphaToCoverageEnable :: a -> VkAlphaToCoverageEnableMType a
-
-        vkAlphaToCoverageEnableByteOffset :: a -> Int
-
-        readVkAlphaToCoverageEnable ::
-                                    Ptr a -> IO (VkAlphaToCoverageEnableMType a)
-
-        writeVkAlphaToCoverageEnable ::
-                                     Ptr a -> VkAlphaToCoverageEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'alphaToCoverageEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAlphaToCoverageEnable a
-
-class HasVkAlphaToOne a where
-        type VkAlphaToOneMType a :: *
-
-        vkAlphaToOne :: a -> VkAlphaToOneMType a
-
-        vkAlphaToOneByteOffset :: a -> Int
-
-        readVkAlphaToOne :: Ptr a -> IO (VkAlphaToOneMType a)
-
-        writeVkAlphaToOne :: Ptr a -> VkAlphaToOneMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'alphaToOne'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAlphaToOne a
-
-class HasVkAlphaToOneEnable a where
-        type VkAlphaToOneEnableMType a :: *
-
-        vkAlphaToOneEnable :: a -> VkAlphaToOneEnableMType a
-
-        vkAlphaToOneEnableByteOffset :: a -> Int
-
-        readVkAlphaToOneEnable :: Ptr a -> IO (VkAlphaToOneEnableMType a)
-
-        writeVkAlphaToOneEnable ::
-                                Ptr a -> VkAlphaToOneEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'alphaToOneEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAlphaToOneEnable a
-
-class HasVkAnisotropyEnable a where
-        type VkAnisotropyEnableMType a :: *
-
-        vkAnisotropyEnable :: a -> VkAnisotropyEnableMType a
-
-        vkAnisotropyEnableByteOffset :: a -> Int
-
-        readVkAnisotropyEnable :: Ptr a -> IO (VkAnisotropyEnableMType a)
-
-        writeVkAnisotropyEnable ::
-                                Ptr a -> VkAnisotropyEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'anisotropyEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAnisotropyEnable a
-
-class HasVkApiVersion a where
-        type VkApiVersionMType a :: *
-
-        vkApiVersion :: a -> VkApiVersionMType a
-
-        vkApiVersionByteOffset :: a -> Int
-
-        readVkApiVersion :: Ptr a -> IO (VkApiVersionMType a)
-
-        writeVkApiVersion :: Ptr a -> VkApiVersionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'apiVersion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkApiVersion a
-
-class HasVkApplicationVersion a where
-        type VkApplicationVersionMType a :: *
-
-        vkApplicationVersion :: a -> VkApplicationVersionMType a
-
-        vkApplicationVersionByteOffset :: a -> Int
-
-        readVkApplicationVersion ::
-                                 Ptr a -> IO (VkApplicationVersionMType a)
-
-        writeVkApplicationVersion ::
-                                  Ptr a -> VkApplicationVersionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'applicationVersion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkApplicationVersion a
-
-class HasVkArrayLayer a where
-        type VkArrayLayerMType a :: *
-
-        vkArrayLayer :: a -> VkArrayLayerMType a
-
-        vkArrayLayerByteOffset :: a -> Int
-
-        readVkArrayLayer :: Ptr a -> IO (VkArrayLayerMType a)
-
-        writeVkArrayLayer :: Ptr a -> VkArrayLayerMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'arrayLayer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkArrayLayer a
-
-class HasVkArrayLayers a where
-        type VkArrayLayersMType a :: *
-
-        vkArrayLayers :: a -> VkArrayLayersMType a
-
-        vkArrayLayersByteOffset :: a -> Int
-
-        readVkArrayLayers :: Ptr a -> IO (VkArrayLayersMType a)
-
-        writeVkArrayLayers :: Ptr a -> VkArrayLayersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'arrayLayers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkArrayLayers a
-
-class HasVkArrayPitch a where
-        type VkArrayPitchMType a :: *
-
-        vkArrayPitch :: a -> VkArrayPitchMType a
-
-        vkArrayPitchByteOffset :: a -> Int
-
-        readVkArrayPitch :: Ptr a -> IO (VkArrayPitchMType a)
-
-        writeVkArrayPitch :: Ptr a -> VkArrayPitchMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'arrayPitch'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkArrayPitch a
-
-class HasVkAspectMask a where
-        type VkAspectMaskMType a :: *
-
-        vkAspectMask :: a -> VkAspectMaskMType a
-
-        vkAspectMaskByteOffset :: a -> Int
-
-        readVkAspectMask :: Ptr a -> IO (VkAspectMaskMType a)
-
-        writeVkAspectMask :: Ptr a -> VkAspectMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'aspectMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAspectMask a
-
-class HasVkAspectReferenceCount a where
-        type VkAspectReferenceCountMType a :: *
-
-        vkAspectReferenceCount :: a -> VkAspectReferenceCountMType a
-
-        vkAspectReferenceCountByteOffset :: a -> Int
-
-        readVkAspectReferenceCount ::
-                                   Ptr a -> IO (VkAspectReferenceCountMType a)
-
-        writeVkAspectReferenceCount ::
-                                    Ptr a -> VkAspectReferenceCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'aspectReferenceCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAspectReferenceCount a
-
-class HasVkAttachment a where
-        type VkAttachmentMType a :: *
-
-        vkAttachment :: a -> VkAttachmentMType a
-
-        vkAttachmentByteOffset :: a -> Int
-
-        readVkAttachment :: Ptr a -> IO (VkAttachmentMType a)
-
-        writeVkAttachment :: Ptr a -> VkAttachmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'attachment'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAttachment a
-
-class HasVkAttachmentCount a where
-        type VkAttachmentCountMType a :: *
-
-        vkAttachmentCount :: a -> VkAttachmentCountMType a
-
-        vkAttachmentCountByteOffset :: a -> Int
-
-        readVkAttachmentCount :: Ptr a -> IO (VkAttachmentCountMType a)
-
-        writeVkAttachmentCount ::
-                               Ptr a -> VkAttachmentCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'attachmentCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAttachmentCount a
-
-class HasVkAttachmentIndex a where
-        type VkAttachmentIndexMType a :: *
-
-        vkAttachmentIndex :: a -> VkAttachmentIndexMType a
-
-        vkAttachmentIndexByteOffset :: a -> Int
-
-        readVkAttachmentIndex :: Ptr a -> IO (VkAttachmentIndexMType a)
-
-        writeVkAttachmentIndex ::
-                               Ptr a -> VkAttachmentIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'attachmentIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAttachmentIndex a
-
-class HasVkAttachmentInitialSampleLocationsCount a where
-        type VkAttachmentInitialSampleLocationsCountMType a :: *
-
-        vkAttachmentInitialSampleLocationsCount ::
-                                                a -> VkAttachmentInitialSampleLocationsCountMType a
-
-        vkAttachmentInitialSampleLocationsCountByteOffset :: a -> Int
-
-        readVkAttachmentInitialSampleLocationsCount ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkAttachmentInitialSampleLocationsCountMType
-                                                           a)
-
-        writeVkAttachmentInitialSampleLocationsCount ::
-                                                     Ptr a ->
-                                                       VkAttachmentInitialSampleLocationsCountMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'attachmentInitialSampleLocationsCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkAttachmentInitialSampleLocationsCount a
-
-class HasVkB a where
-        type VkBMType a :: *
-
-        vkB :: a -> VkBMType a
-
-        vkBByteOffset :: a -> Int
-
-        readVkB :: Ptr a -> IO (VkBMType a)
-
-        writeVkB :: Ptr a -> VkBMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'b'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkB a
-
-class HasVkBack a where
-        type VkBackMType a :: *
-
-        vkBack :: a -> VkBackMType a
-
-        vkBackByteOffset :: a -> Int
-
-        readVkBack :: Ptr a -> IO (VkBackMType a)
-
-        writeVkBack :: Ptr a -> VkBackMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'back'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBack a
-
-class HasVkBaseArrayLayer a where
-        type VkBaseArrayLayerMType a :: *
-
-        vkBaseArrayLayer :: a -> VkBaseArrayLayerMType a
-
-        vkBaseArrayLayerByteOffset :: a -> Int
-
-        readVkBaseArrayLayer :: Ptr a -> IO (VkBaseArrayLayerMType a)
-
-        writeVkBaseArrayLayer :: Ptr a -> VkBaseArrayLayerMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'baseArrayLayer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBaseArrayLayer a
-
-class HasVkBaseMipLevel a where
-        type VkBaseMipLevelMType a :: *
-
-        vkBaseMipLevel :: a -> VkBaseMipLevelMType a
-
-        vkBaseMipLevelByteOffset :: a -> Int
-
-        readVkBaseMipLevel :: Ptr a -> IO (VkBaseMipLevelMType a)
-
-        writeVkBaseMipLevel :: Ptr a -> VkBaseMipLevelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'baseMipLevel'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBaseMipLevel a
-
-class HasVkBasePipelineHandle a where
-        type VkBasePipelineHandleMType a :: *
-
-        vkBasePipelineHandle :: a -> VkBasePipelineHandleMType a
-
-        vkBasePipelineHandleByteOffset :: a -> Int
-
-        readVkBasePipelineHandle ::
-                                 Ptr a -> IO (VkBasePipelineHandleMType a)
-
-        writeVkBasePipelineHandle ::
-                                  Ptr a -> VkBasePipelineHandleMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'basePipelineHandle'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBasePipelineHandle a
-
-class HasVkBasePipelineIndex a where
-        type VkBasePipelineIndexMType a :: *
-
-        vkBasePipelineIndex :: a -> VkBasePipelineIndexMType a
-
-        vkBasePipelineIndexByteOffset :: a -> Int
-
-        readVkBasePipelineIndex :: Ptr a -> IO (VkBasePipelineIndexMType a)
-
-        writeVkBasePipelineIndex ::
-                                 Ptr a -> VkBasePipelineIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'basePipelineIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBasePipelineIndex a
-
-class HasVkBindCount a where
-        type VkBindCountMType a :: *
-
-        vkBindCount :: a -> VkBindCountMType a
-
-        vkBindCountByteOffset :: a -> Int
-
-        readVkBindCount :: Ptr a -> IO (VkBindCountMType a)
-
-        writeVkBindCount :: Ptr a -> VkBindCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bindCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBindCount a
-
-class HasVkBinding a where
-        type VkBindingMType a :: *
-
-        vkBinding :: a -> VkBindingMType a
-
-        vkBindingByteOffset :: a -> Int
-
-        readVkBinding :: Ptr a -> IO (VkBindingMType a)
-
-        writeVkBinding :: Ptr a -> VkBindingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'binding'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBinding a
-
-class HasVkBindingCount a where
-        type VkBindingCountMType a :: *
-
-        vkBindingCount :: a -> VkBindingCountMType a
-
-        vkBindingCountByteOffset :: a -> Int
-
-        readVkBindingCount :: Ptr a -> IO (VkBindingCountMType a)
-
-        writeVkBindingCount :: Ptr a -> VkBindingCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bindingCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBindingCount a
-
-class HasVkBindingUnit a where
-        type VkBindingUnitMType a :: *
-
-        vkBindingUnit :: a -> VkBindingUnitMType a
-
-        vkBindingUnitByteOffset :: a -> Int
-
-        readVkBindingUnit :: Ptr a -> IO (VkBindingUnitMType a)
-
-        writeVkBindingUnit :: Ptr a -> VkBindingUnitMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bindingUnit'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBindingUnit a
-
-class HasVkBlendConstantsArray a where
-        type VkBlendConstantsArrayMType a :: *
-
-        vkBlendConstantsArray :: a -> Int -> VkBlendConstantsArrayMType a
-
-        vkBlendConstantsArrayByteOffset :: a -> Int
-
-        readVkBlendConstantsArray ::
-                                  Ptr a -> Int -> IO (VkBlendConstantsArrayMType a)
-
-        writeVkBlendConstantsArray ::
-                                   Ptr a -> Int -> VkBlendConstantsArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'blendConstants'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBlendConstantsArray a
-
-class HasVkBlendEnable a where
-        type VkBlendEnableMType a :: *
-
-        vkBlendEnable :: a -> VkBlendEnableMType a
-
-        vkBlendEnableByteOffset :: a -> Int
-
-        readVkBlendEnable :: Ptr a -> IO (VkBlendEnableMType a)
-
-        writeVkBlendEnable :: Ptr a -> VkBlendEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'blendEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBlendEnable a
-
-class HasVkBlendOverlap a where
-        type VkBlendOverlapMType a :: *
-
-        vkBlendOverlap :: a -> VkBlendOverlapMType a
-
-        vkBlendOverlapByteOffset :: a -> Int
-
-        readVkBlendOverlap :: Ptr a -> IO (VkBlendOverlapMType a)
-
-        writeVkBlendOverlap :: Ptr a -> VkBlendOverlapMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'blendOverlap'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBlendOverlap a
-
-class HasVkBorderColor a where
-        type VkBorderColorMType a :: *
-
-        vkBorderColor :: a -> VkBorderColorMType a
-
-        vkBorderColorByteOffset :: a -> Int
-
-        readVkBorderColor :: Ptr a -> IO (VkBorderColorMType a)
-
-        writeVkBorderColor :: Ptr a -> VkBorderColorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'borderColor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBorderColor a
-
-class HasVkBuffer a where
-        type VkBufferMType a :: *
-
-        vkBuffer :: a -> VkBufferMType a
-
-        vkBufferByteOffset :: a -> Int
-
-        readVkBuffer :: Ptr a -> IO (VkBufferMType a)
-
-        writeVkBuffer :: Ptr a -> VkBufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'buffer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBuffer a
-
-class HasVkBufferBindCount a where
-        type VkBufferBindCountMType a :: *
-
-        vkBufferBindCount :: a -> VkBufferBindCountMType a
-
-        vkBufferBindCountByteOffset :: a -> Int
-
-        readVkBufferBindCount :: Ptr a -> IO (VkBufferBindCountMType a)
-
-        writeVkBufferBindCount ::
-                               Ptr a -> VkBufferBindCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bufferBindCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBufferBindCount a
-
-class HasVkBufferFeatures a where
-        type VkBufferFeaturesMType a :: *
-
-        vkBufferFeatures :: a -> VkBufferFeaturesMType a
-
-        vkBufferFeaturesByteOffset :: a -> Int
-
-        readVkBufferFeatures :: Ptr a -> IO (VkBufferFeaturesMType a)
-
-        writeVkBufferFeatures :: Ptr a -> VkBufferFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bufferFeatures'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBufferFeatures a
-
-class HasVkBufferImageGranularity a where
-        type VkBufferImageGranularityMType a :: *
-
-        vkBufferImageGranularity :: a -> VkBufferImageGranularityMType a
-
-        vkBufferImageGranularityByteOffset :: a -> Int
-
-        readVkBufferImageGranularity ::
-                                     Ptr a -> IO (VkBufferImageGranularityMType a)
-
-        writeVkBufferImageGranularity ::
-                                      Ptr a -> VkBufferImageGranularityMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bufferImageGranularity'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBufferImageGranularity a
-
-class HasVkBufferImageHeight a where
-        type VkBufferImageHeightMType a :: *
-
-        vkBufferImageHeight :: a -> VkBufferImageHeightMType a
-
-        vkBufferImageHeightByteOffset :: a -> Int
-
-        readVkBufferImageHeight :: Ptr a -> IO (VkBufferImageHeightMType a)
-
-        writeVkBufferImageHeight ::
-                                 Ptr a -> VkBufferImageHeightMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bufferImageHeight'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBufferImageHeight a
-
-class HasVkBufferOffset a where
-        type VkBufferOffsetMType a :: *
-
-        vkBufferOffset :: a -> VkBufferOffsetMType a
-
-        vkBufferOffsetByteOffset :: a -> Int
-
-        readVkBufferOffset :: Ptr a -> IO (VkBufferOffsetMType a)
-
-        writeVkBufferOffset :: Ptr a -> VkBufferOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bufferOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBufferOffset a
-
-class HasVkBufferRowLength a where
-        type VkBufferRowLengthMType a :: *
-
-        vkBufferRowLength :: a -> VkBufferRowLengthMType a
-
-        vkBufferRowLengthByteOffset :: a -> Int
-
-        readVkBufferRowLength :: Ptr a -> IO (VkBufferRowLengthMType a)
-
-        writeVkBufferRowLength ::
-                               Ptr a -> VkBufferRowLengthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'bufferRowLength'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkBufferRowLength a
-
-class HasVkChromaFilter a where
-        type VkChromaFilterMType a :: *
-
-        vkChromaFilter :: a -> VkChromaFilterMType a
-
-        vkChromaFilterByteOffset :: a -> Int
-
-        readVkChromaFilter :: Ptr a -> IO (VkChromaFilterMType a)
-
-        writeVkChromaFilter :: Ptr a -> VkChromaFilterMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'chromaFilter'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkChromaFilter a
-
-class HasVkClearValue a where
-        type VkClearValueMType a :: *
-
-        vkClearValue :: a -> VkClearValueMType a
-
-        vkClearValueByteOffset :: a -> Int
-
-        readVkClearValue :: Ptr a -> IO (VkClearValueMType a)
-
-        writeVkClearValue :: Ptr a -> VkClearValueMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'clearValue'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkClearValue a
-
-class HasVkClearValueCount a where
-        type VkClearValueCountMType a :: *
-
-        vkClearValueCount :: a -> VkClearValueCountMType a
-
-        vkClearValueCountByteOffset :: a -> Int
-
-        readVkClearValueCount :: Ptr a -> IO (VkClearValueCountMType a)
-
-        writeVkClearValueCount ::
-                               Ptr a -> VkClearValueCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'clearValueCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkClearValueCount a
-
-class HasVkClipped a where
-        type VkClippedMType a :: *
-
-        vkClipped :: a -> VkClippedMType a
-
-        vkClippedByteOffset :: a -> Int
-
-        readVkClipped :: Ptr a -> IO (VkClippedMType a)
-
-        writeVkClipped :: Ptr a -> VkClippedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'clipped'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkClipped a
-
-class HasVkCodeSize a where
-        type VkCodeSizeMType a :: *
-
-        vkCodeSize :: a -> VkCodeSizeMType a
-
-        vkCodeSizeByteOffset :: a -> Int
-
-        readVkCodeSize :: Ptr a -> IO (VkCodeSizeMType a)
-
-        writeVkCodeSize :: Ptr a -> VkCodeSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'codeSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCodeSize a
-
-class HasVkColor a where
-        type VkColorMType a :: *
-
-        vkColor :: a -> VkColorMType a
-
-        vkColorByteOffset :: a -> Int
-
-        readVkColor :: Ptr a -> IO (VkColorMType a)
-
-        writeVkColor :: Ptr a -> VkColorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'color'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColor a
-
-class HasVkColorArray a where
-        type VkColorArrayMType a :: *
-
-        vkColorArray :: a -> Int -> VkColorArrayMType a
-
-        vkColorArrayByteOffset :: a -> Int
-
-        readVkColorArray :: Ptr a -> Int -> IO (VkColorArrayMType a)
-
-        writeVkColorArray :: Ptr a -> Int -> VkColorArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'color'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColorArray a
-
-class HasVkColorAttachment a where
-        type VkColorAttachmentMType a :: *
-
-        vkColorAttachment :: a -> VkColorAttachmentMType a
-
-        vkColorAttachmentByteOffset :: a -> Int
-
-        readVkColorAttachment :: Ptr a -> IO (VkColorAttachmentMType a)
-
-        writeVkColorAttachment ::
-                               Ptr a -> VkColorAttachmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'colorAttachment'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColorAttachment a
-
-class HasVkColorAttachmentCount a where
-        type VkColorAttachmentCountMType a :: *
-
-        vkColorAttachmentCount :: a -> VkColorAttachmentCountMType a
-
-        vkColorAttachmentCountByteOffset :: a -> Int
-
-        readVkColorAttachmentCount ::
-                                   Ptr a -> IO (VkColorAttachmentCountMType a)
-
-        writeVkColorAttachmentCount ::
-                                    Ptr a -> VkColorAttachmentCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'colorAttachmentCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColorAttachmentCount a
-
-class HasVkColorBlendOp a where
-        type VkColorBlendOpMType a :: *
-
-        vkColorBlendOp :: a -> VkColorBlendOpMType a
-
-        vkColorBlendOpByteOffset :: a -> Int
-
-        readVkColorBlendOp :: Ptr a -> IO (VkColorBlendOpMType a)
-
-        writeVkColorBlendOp :: Ptr a -> VkColorBlendOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'colorBlendOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColorBlendOp a
-
-class HasVkColorSpace a where
-        type VkColorSpaceMType a :: *
-
-        vkColorSpace :: a -> VkColorSpaceMType a
-
-        vkColorSpaceByteOffset :: a -> Int
-
-        readVkColorSpace :: Ptr a -> IO (VkColorSpaceMType a)
-
-        writeVkColorSpace :: Ptr a -> VkColorSpaceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'colorSpace'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColorSpace a
-
-class HasVkColorWriteMask a where
-        type VkColorWriteMaskMType a :: *
-
-        vkColorWriteMask :: a -> VkColorWriteMaskMType a
-
-        vkColorWriteMaskByteOffset :: a -> Int
-
-        readVkColorWriteMask :: Ptr a -> IO (VkColorWriteMaskMType a)
-
-        writeVkColorWriteMask :: Ptr a -> VkColorWriteMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'colorWriteMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkColorWriteMask a
-
-class HasVkCombinedImageSamplerDescriptorCount a where
-        type VkCombinedImageSamplerDescriptorCountMType a :: *
-
-        vkCombinedImageSamplerDescriptorCount ::
-                                              a -> VkCombinedImageSamplerDescriptorCountMType a
-
-        vkCombinedImageSamplerDescriptorCountByteOffset :: a -> Int
-
-        readVkCombinedImageSamplerDescriptorCount ::
-                                                  Ptr a ->
-                                                    IO
-                                                      (VkCombinedImageSamplerDescriptorCountMType a)
-
-        writeVkCombinedImageSamplerDescriptorCount ::
-                                                   Ptr a ->
-                                                     VkCombinedImageSamplerDescriptorCountMType a ->
-                                                       IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'combinedImageSamplerDescriptorCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCombinedImageSamplerDescriptorCount a
-
-class HasVkCommandBufferCount a where
-        type VkCommandBufferCountMType a :: *
-
-        vkCommandBufferCount :: a -> VkCommandBufferCountMType a
-
-        vkCommandBufferCountByteOffset :: a -> Int
-
-        readVkCommandBufferCount ::
-                                 Ptr a -> IO (VkCommandBufferCountMType a)
-
-        writeVkCommandBufferCount ::
-                                  Ptr a -> VkCommandBufferCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'commandBufferCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCommandBufferCount a
-
-class HasVkCommandPool a where
-        type VkCommandPoolMType a :: *
-
-        vkCommandPool :: a -> VkCommandPoolMType a
-
-        vkCommandPoolByteOffset :: a -> Int
-
-        readVkCommandPool :: Ptr a -> IO (VkCommandPoolMType a)
-
-        writeVkCommandPool :: Ptr a -> VkCommandPoolMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'commandPool'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCommandPool a
-
-class HasVkCompareEnable a where
-        type VkCompareEnableMType a :: *
-
-        vkCompareEnable :: a -> VkCompareEnableMType a
-
-        vkCompareEnableByteOffset :: a -> Int
-
-        readVkCompareEnable :: Ptr a -> IO (VkCompareEnableMType a)
-
-        writeVkCompareEnable :: Ptr a -> VkCompareEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'compareEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCompareEnable a
-
-class HasVkCompareMask a where
-        type VkCompareMaskMType a :: *
-
-        vkCompareMask :: a -> VkCompareMaskMType a
-
-        vkCompareMaskByteOffset :: a -> Int
-
-        readVkCompareMask :: Ptr a -> IO (VkCompareMaskMType a)
-
-        writeVkCompareMask :: Ptr a -> VkCompareMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'compareMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCompareMask a
-
-class HasVkCompareOp a where
-        type VkCompareOpMType a :: *
-
-        vkCompareOp :: a -> VkCompareOpMType a
-
-        vkCompareOpByteOffset :: a -> Int
-
-        readVkCompareOp :: Ptr a -> IO (VkCompareOpMType a)
-
-        writeVkCompareOp :: Ptr a -> VkCompareOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'compareOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCompareOp a
-
-class HasVkCompatibleHandleTypes a where
-        type VkCompatibleHandleTypesMType a :: *
-
-        vkCompatibleHandleTypes :: a -> VkCompatibleHandleTypesMType a
-
-        vkCompatibleHandleTypesByteOffset :: a -> Int
-
-        readVkCompatibleHandleTypes ::
-                                    Ptr a -> IO (VkCompatibleHandleTypesMType a)
-
-        writeVkCompatibleHandleTypes ::
-                                     Ptr a -> VkCompatibleHandleTypesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'compatibleHandleTypes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCompatibleHandleTypes a
-
-class HasVkComponents a where
-        type VkComponentsMType a :: *
-
-        vkComponents :: a -> VkComponentsMType a
-
-        vkComponentsByteOffset :: a -> Int
-
-        readVkComponents :: Ptr a -> IO (VkComponentsMType a)
-
-        writeVkComponents :: Ptr a -> VkComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'components'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkComponents a
-
-class HasVkCompositeAlpha a where
-        type VkCompositeAlphaMType a :: *
-
-        vkCompositeAlpha :: a -> VkCompositeAlphaMType a
-
-        vkCompositeAlphaByteOffset :: a -> Int
-
-        readVkCompositeAlpha :: Ptr a -> IO (VkCompositeAlphaMType a)
-
-        writeVkCompositeAlpha :: Ptr a -> VkCompositeAlphaMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'compositeAlpha'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCompositeAlpha a
-
-class HasVkComputeBindingPointSupport a where
-        type VkComputeBindingPointSupportMType a :: *
-
-        vkComputeBindingPointSupport ::
-                                     a -> VkComputeBindingPointSupportMType a
-
-        vkComputeBindingPointSupportByteOffset :: a -> Int
-
-        readVkComputeBindingPointSupport ::
-                                         Ptr a -> IO (VkComputeBindingPointSupportMType a)
-
-        writeVkComputeBindingPointSupport ::
-                                          Ptr a -> VkComputeBindingPointSupportMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'computeBindingPointSupport'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkComputeBindingPointSupport a
-
-class HasVkComputeWorkGroupSizeArray a where
-        type VkComputeWorkGroupSizeArrayMType a :: *
-
-        vkComputeWorkGroupSizeArray ::
-                                    a -> Int -> VkComputeWorkGroupSizeArrayMType a
-
-        vkComputeWorkGroupSizeArrayByteOffset :: a -> Int
-
-        readVkComputeWorkGroupSizeArray ::
-                                        Ptr a -> Int -> IO (VkComputeWorkGroupSizeArrayMType a)
-
-        writeVkComputeWorkGroupSizeArray ::
-                                         Ptr a -> Int -> VkComputeWorkGroupSizeArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'computeWorkGroupSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkComputeWorkGroupSizeArray a
-
-class HasVkConnection a where
-        type VkConnectionMType a :: *
-
-        vkConnection :: a -> VkConnectionMType a
-
-        vkConnectionByteOffset :: a -> Int
-
-        readVkConnection :: Ptr a -> IO (VkConnectionMType a)
-
-        writeVkConnection :: Ptr a -> VkConnectionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'connection'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkConnection a
-
-class HasVkConservativePointAndLineRasterization a where
-        type VkConservativePointAndLineRasterizationMType a :: *
-
-        vkConservativePointAndLineRasterization ::
-                                                a -> VkConservativePointAndLineRasterizationMType a
-
-        vkConservativePointAndLineRasterizationByteOffset :: a -> Int
-
-        readVkConservativePointAndLineRasterization ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkConservativePointAndLineRasterizationMType
-                                                           a)
-
-        writeVkConservativePointAndLineRasterization ::
-                                                     Ptr a ->
-                                                       VkConservativePointAndLineRasterizationMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'conservativePointAndLineRasterization'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkConservativePointAndLineRasterization a
-
-class HasVkConservativeRasterizationMode a where
-        type VkConservativeRasterizationModeMType a :: *
-
-        vkConservativeRasterizationMode ::
-                                        a -> VkConservativeRasterizationModeMType a
-
-        vkConservativeRasterizationModeByteOffset :: a -> Int
-
-        readVkConservativeRasterizationMode ::
-                                            Ptr a -> IO (VkConservativeRasterizationModeMType a)
-
-        writeVkConservativeRasterizationMode ::
-                                             Ptr a ->
-                                               VkConservativeRasterizationModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'conservativeRasterizationMode'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkConservativeRasterizationMode a
-
-class HasVkConservativeRasterizationPostDepthCoverage a where
-        type VkConservativeRasterizationPostDepthCoverageMType a :: *
-
-        vkConservativeRasterizationPostDepthCoverage ::
-                                                     a ->
-                                                       VkConservativeRasterizationPostDepthCoverageMType
-                                                         a
-
-        vkConservativeRasterizationPostDepthCoverageByteOffset :: a -> Int
-
-        readVkConservativeRasterizationPostDepthCoverage ::
-                                                         Ptr a ->
-                                                           IO
-                                                             (VkConservativeRasterizationPostDepthCoverageMType
-                                                                a)
-
-        writeVkConservativeRasterizationPostDepthCoverage ::
-                                                          Ptr a ->
-                                                            VkConservativeRasterizationPostDepthCoverageMType
-                                                              a
-                                                              -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'conservativeRasterizationPostDepthCoverage'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkConservativeRasterizationPostDepthCoverage a
-
-class HasVkConstantID a where
-        type VkConstantIDMType a :: *
-
-        vkConstantID :: a -> VkConstantIDMType a
-
-        vkConstantIDByteOffset :: a -> Int
-
-        readVkConstantID :: Ptr a -> IO (VkConstantIDMType a)
-
-        writeVkConstantID :: Ptr a -> VkConstantIDMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'constantID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkConstantID a
-
-class HasVkConversion a where
-        type VkConversionMType a :: *
-
-        vkConversion :: a -> VkConversionMType a
-
-        vkConversionByteOffset :: a -> Int
-
-        readVkConversion :: Ptr a -> IO (VkConversionMType a)
-
-        writeVkConversion :: Ptr a -> VkConversionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'conversion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkConversion a
-
-class HasVkCorrelationMaskCount a where
-        type VkCorrelationMaskCountMType a :: *
-
-        vkCorrelationMaskCount :: a -> VkCorrelationMaskCountMType a
-
-        vkCorrelationMaskCountByteOffset :: a -> Int
-
-        readVkCorrelationMaskCount ::
-                                   Ptr a -> IO (VkCorrelationMaskCountMType a)
-
-        writeVkCorrelationMaskCount ::
-                                    Ptr a -> VkCorrelationMaskCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'correlationMaskCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCorrelationMaskCount a
-
-class HasVkCoverageModulationMode a where
-        type VkCoverageModulationModeMType a :: *
-
-        vkCoverageModulationMode :: a -> VkCoverageModulationModeMType a
-
-        vkCoverageModulationModeByteOffset :: a -> Int
-
-        readVkCoverageModulationMode ::
-                                     Ptr a -> IO (VkCoverageModulationModeMType a)
-
-        writeVkCoverageModulationMode ::
-                                      Ptr a -> VkCoverageModulationModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'coverageModulationMode'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCoverageModulationMode a
-
-class HasVkCoverageModulationTableCount a where
-        type VkCoverageModulationTableCountMType a :: *
-
-        vkCoverageModulationTableCount ::
-                                       a -> VkCoverageModulationTableCountMType a
-
-        vkCoverageModulationTableCountByteOffset :: a -> Int
-
-        readVkCoverageModulationTableCount ::
-                                           Ptr a -> IO (VkCoverageModulationTableCountMType a)
-
-        writeVkCoverageModulationTableCount ::
-                                            Ptr a -> VkCoverageModulationTableCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'coverageModulationTableCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCoverageModulationTableCount a
-
-class HasVkCoverageModulationTableEnable a where
-        type VkCoverageModulationTableEnableMType a :: *
-
-        vkCoverageModulationTableEnable ::
-                                        a -> VkCoverageModulationTableEnableMType a
-
-        vkCoverageModulationTableEnableByteOffset :: a -> Int
-
-        readVkCoverageModulationTableEnable ::
-                                            Ptr a -> IO (VkCoverageModulationTableEnableMType a)
-
-        writeVkCoverageModulationTableEnable ::
-                                             Ptr a ->
-                                               VkCoverageModulationTableEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'coverageModulationTableEnable'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCoverageModulationTableEnable a
-
-class HasVkCoverageToColorEnable a where
-        type VkCoverageToColorEnableMType a :: *
-
-        vkCoverageToColorEnable :: a -> VkCoverageToColorEnableMType a
-
-        vkCoverageToColorEnableByteOffset :: a -> Int
-
-        readVkCoverageToColorEnable ::
-                                    Ptr a -> IO (VkCoverageToColorEnableMType a)
-
-        writeVkCoverageToColorEnable ::
-                                     Ptr a -> VkCoverageToColorEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'coverageToColorEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCoverageToColorEnable a
-
-class HasVkCoverageToColorLocation a where
-        type VkCoverageToColorLocationMType a :: *
-
-        vkCoverageToColorLocation :: a -> VkCoverageToColorLocationMType a
-
-        vkCoverageToColorLocationByteOffset :: a -> Int
-
-        readVkCoverageToColorLocation ::
-                                      Ptr a -> IO (VkCoverageToColorLocationMType a)
-
-        writeVkCoverageToColorLocation ::
-                                       Ptr a -> VkCoverageToColorLocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'coverageToColorLocation'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCoverageToColorLocation a
-
-class HasVkCullMode a where
-        type VkCullModeMType a :: *
-
-        vkCullMode :: a -> VkCullModeMType a
-
-        vkCullModeByteOffset :: a -> Int
-
-        readVkCullMode :: Ptr a -> IO (VkCullModeMType a)
-
-        writeVkCullMode :: Ptr a -> VkCullModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'cullMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCullMode a
-
-class HasVkCurrentDisplay a where
-        type VkCurrentDisplayMType a :: *
-
-        vkCurrentDisplay :: a -> VkCurrentDisplayMType a
-
-        vkCurrentDisplayByteOffset :: a -> Int
-
-        readVkCurrentDisplay :: Ptr a -> IO (VkCurrentDisplayMType a)
-
-        writeVkCurrentDisplay :: Ptr a -> VkCurrentDisplayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'currentDisplay'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCurrentDisplay a
-
-class HasVkCurrentExtent a where
-        type VkCurrentExtentMType a :: *
-
-        vkCurrentExtent :: a -> VkCurrentExtentMType a
-
-        vkCurrentExtentByteOffset :: a -> Int
-
-        readVkCurrentExtent :: Ptr a -> IO (VkCurrentExtentMType a)
-
-        writeVkCurrentExtent :: Ptr a -> VkCurrentExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'currentExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCurrentExtent a
-
-class HasVkCurrentStackIndex a where
-        type VkCurrentStackIndexMType a :: *
-
-        vkCurrentStackIndex :: a -> VkCurrentStackIndexMType a
-
-        vkCurrentStackIndexByteOffset :: a -> Int
-
-        readVkCurrentStackIndex :: Ptr a -> IO (VkCurrentStackIndexMType a)
-
-        writeVkCurrentStackIndex ::
-                                 Ptr a -> VkCurrentStackIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'currentStackIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCurrentStackIndex a
-
-class HasVkCurrentTransform a where
-        type VkCurrentTransformMType a :: *
-
-        vkCurrentTransform :: a -> VkCurrentTransformMType a
-
-        vkCurrentTransformByteOffset :: a -> Int
-
-        readVkCurrentTransform :: Ptr a -> IO (VkCurrentTransformMType a)
-
-        writeVkCurrentTransform ::
-                                Ptr a -> VkCurrentTransformMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'currentTransform'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkCurrentTransform a
-
-class HasVkDataSize a where
-        type VkDataSizeMType a :: *
-
-        vkDataSize :: a -> VkDataSizeMType a
-
-        vkDataSizeByteOffset :: a -> Int
-
-        readVkDataSize :: Ptr a -> IO (VkDataSizeMType a)
-
-        writeVkDataSize :: Ptr a -> VkDataSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dataSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDataSize a
-
-class HasVkDedicatedAllocation a where
-        type VkDedicatedAllocationMType a :: *
-
-        vkDedicatedAllocation :: a -> VkDedicatedAllocationMType a
-
-        vkDedicatedAllocationByteOffset :: a -> Int
-
-        readVkDedicatedAllocation ::
-                                  Ptr a -> IO (VkDedicatedAllocationMType a)
-
-        writeVkDedicatedAllocation ::
-                                   Ptr a -> VkDedicatedAllocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dedicatedAllocation'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDedicatedAllocation a
-
-class HasVkDegenerateLinesRasterized a where
-        type VkDegenerateLinesRasterizedMType a :: *
-
-        vkDegenerateLinesRasterized ::
-                                    a -> VkDegenerateLinesRasterizedMType a
-
-        vkDegenerateLinesRasterizedByteOffset :: a -> Int
-
-        readVkDegenerateLinesRasterized ::
-                                        Ptr a -> IO (VkDegenerateLinesRasterizedMType a)
-
-        writeVkDegenerateLinesRasterized ::
-                                         Ptr a -> VkDegenerateLinesRasterizedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'degenerateLinesRasterized'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDegenerateLinesRasterized a
-
-class HasVkDegenerateTrianglesRasterized a where
-        type VkDegenerateTrianglesRasterizedMType a :: *
-
-        vkDegenerateTrianglesRasterized ::
-                                        a -> VkDegenerateTrianglesRasterizedMType a
-
-        vkDegenerateTrianglesRasterizedByteOffset :: a -> Int
-
-        readVkDegenerateTrianglesRasterized ::
-                                            Ptr a -> IO (VkDegenerateTrianglesRasterizedMType a)
-
-        writeVkDegenerateTrianglesRasterized ::
-                                             Ptr a ->
-                                               VkDegenerateTrianglesRasterizedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'degenerateTrianglesRasterized'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDegenerateTrianglesRasterized a
-
-class HasVkDependencyCount a where
-        type VkDependencyCountMType a :: *
-
-        vkDependencyCount :: a -> VkDependencyCountMType a
-
-        vkDependencyCountByteOffset :: a -> Int
-
-        readVkDependencyCount :: Ptr a -> IO (VkDependencyCountMType a)
-
-        writeVkDependencyCount ::
-                               Ptr a -> VkDependencyCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dependencyCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDependencyCount a
-
-class HasVkDependencyFlags a where
-        type VkDependencyFlagsMType a :: *
-
-        vkDependencyFlags :: a -> VkDependencyFlagsMType a
-
-        vkDependencyFlagsByteOffset :: a -> Int
-
-        readVkDependencyFlags :: Ptr a -> IO (VkDependencyFlagsMType a)
-
-        writeVkDependencyFlags ::
-                               Ptr a -> VkDependencyFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dependencyFlags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDependencyFlags a
-
-class HasVkDepth a where
-        type VkDepthMType a :: *
-
-        vkDepth :: a -> VkDepthMType a
-
-        vkDepthByteOffset :: a -> Int
-
-        readVkDepth :: Ptr a -> IO (VkDepthMType a)
-
-        writeVkDepth :: Ptr a -> VkDepthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depth'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepth a
-
-class HasVkDepthBiasClamp a where
-        type VkDepthBiasClampMType a :: *
-
-        vkDepthBiasClamp :: a -> VkDepthBiasClampMType a
-
-        vkDepthBiasClampByteOffset :: a -> Int
-
-        readVkDepthBiasClamp :: Ptr a -> IO (VkDepthBiasClampMType a)
-
-        writeVkDepthBiasClamp :: Ptr a -> VkDepthBiasClampMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthBiasClamp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthBiasClamp a
-
-class HasVkDepthBiasConstantFactor a where
-        type VkDepthBiasConstantFactorMType a :: *
-
-        vkDepthBiasConstantFactor :: a -> VkDepthBiasConstantFactorMType a
-
-        vkDepthBiasConstantFactorByteOffset :: a -> Int
-
-        readVkDepthBiasConstantFactor ::
-                                      Ptr a -> IO (VkDepthBiasConstantFactorMType a)
-
-        writeVkDepthBiasConstantFactor ::
-                                       Ptr a -> VkDepthBiasConstantFactorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthBiasConstantFactor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthBiasConstantFactor a
-
-class HasVkDepthBiasEnable a where
-        type VkDepthBiasEnableMType a :: *
-
-        vkDepthBiasEnable :: a -> VkDepthBiasEnableMType a
-
-        vkDepthBiasEnableByteOffset :: a -> Int
-
-        readVkDepthBiasEnable :: Ptr a -> IO (VkDepthBiasEnableMType a)
-
-        writeVkDepthBiasEnable ::
-                               Ptr a -> VkDepthBiasEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthBiasEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthBiasEnable a
-
-class HasVkDepthBiasSlopeFactor a where
-        type VkDepthBiasSlopeFactorMType a :: *
-
-        vkDepthBiasSlopeFactor :: a -> VkDepthBiasSlopeFactorMType a
-
-        vkDepthBiasSlopeFactorByteOffset :: a -> Int
-
-        readVkDepthBiasSlopeFactor ::
-                                   Ptr a -> IO (VkDepthBiasSlopeFactorMType a)
-
-        writeVkDepthBiasSlopeFactor ::
-                                    Ptr a -> VkDepthBiasSlopeFactorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthBiasSlopeFactor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthBiasSlopeFactor a
-
-class HasVkDepthBounds a where
-        type VkDepthBoundsMType a :: *
-
-        vkDepthBounds :: a -> VkDepthBoundsMType a
-
-        vkDepthBoundsByteOffset :: a -> Int
-
-        readVkDepthBounds :: Ptr a -> IO (VkDepthBoundsMType a)
-
-        writeVkDepthBounds :: Ptr a -> VkDepthBoundsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthBounds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthBounds a
-
-class HasVkDepthBoundsTestEnable a where
-        type VkDepthBoundsTestEnableMType a :: *
-
-        vkDepthBoundsTestEnable :: a -> VkDepthBoundsTestEnableMType a
-
-        vkDepthBoundsTestEnableByteOffset :: a -> Int
-
-        readVkDepthBoundsTestEnable ::
-                                    Ptr a -> IO (VkDepthBoundsTestEnableMType a)
-
-        writeVkDepthBoundsTestEnable ::
-                                     Ptr a -> VkDepthBoundsTestEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthBoundsTestEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthBoundsTestEnable a
-
-class HasVkDepthClamp a where
-        type VkDepthClampMType a :: *
-
-        vkDepthClamp :: a -> VkDepthClampMType a
-
-        vkDepthClampByteOffset :: a -> Int
-
-        readVkDepthClamp :: Ptr a -> IO (VkDepthClampMType a)
-
-        writeVkDepthClamp :: Ptr a -> VkDepthClampMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthClamp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthClamp a
-
-class HasVkDepthClampEnable a where
-        type VkDepthClampEnableMType a :: *
-
-        vkDepthClampEnable :: a -> VkDepthClampEnableMType a
-
-        vkDepthClampEnableByteOffset :: a -> Int
-
-        readVkDepthClampEnable :: Ptr a -> IO (VkDepthClampEnableMType a)
-
-        writeVkDepthClampEnable ::
-                                Ptr a -> VkDepthClampEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthClampEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthClampEnable a
-
-class HasVkDepthCompareOp a where
-        type VkDepthCompareOpMType a :: *
-
-        vkDepthCompareOp :: a -> VkDepthCompareOpMType a
-
-        vkDepthCompareOpByteOffset :: a -> Int
-
-        readVkDepthCompareOp :: Ptr a -> IO (VkDepthCompareOpMType a)
-
-        writeVkDepthCompareOp :: Ptr a -> VkDepthCompareOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthCompareOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthCompareOp a
-
-class HasVkDepthFailOp a where
-        type VkDepthFailOpMType a :: *
-
-        vkDepthFailOp :: a -> VkDepthFailOpMType a
-
-        vkDepthFailOpByteOffset :: a -> Int
-
-        readVkDepthFailOp :: Ptr a -> IO (VkDepthFailOpMType a)
-
-        writeVkDepthFailOp :: Ptr a -> VkDepthFailOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthFailOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthFailOp a
-
-class HasVkDepthPitch a where
-        type VkDepthPitchMType a :: *
-
-        vkDepthPitch :: a -> VkDepthPitchMType a
-
-        vkDepthPitchByteOffset :: a -> Int
-
-        readVkDepthPitch :: Ptr a -> IO (VkDepthPitchMType a)
-
-        writeVkDepthPitch :: Ptr a -> VkDepthPitchMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthPitch'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthPitch a
-
-class HasVkDepthStencil a where
-        type VkDepthStencilMType a :: *
-
-        vkDepthStencil :: a -> VkDepthStencilMType a
-
-        vkDepthStencilByteOffset :: a -> Int
-
-        readVkDepthStencil :: Ptr a -> IO (VkDepthStencilMType a)
-
-        writeVkDepthStencil :: Ptr a -> VkDepthStencilMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthStencil'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthStencil a
-
-class HasVkDepthTestEnable a where
-        type VkDepthTestEnableMType a :: *
-
-        vkDepthTestEnable :: a -> VkDepthTestEnableMType a
-
-        vkDepthTestEnableByteOffset :: a -> Int
-
-        readVkDepthTestEnable :: Ptr a -> IO (VkDepthTestEnableMType a)
-
-        writeVkDepthTestEnable ::
-                               Ptr a -> VkDepthTestEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthTestEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthTestEnable a
-
-class HasVkDepthWriteEnable a where
-        type VkDepthWriteEnableMType a :: *
-
-        vkDepthWriteEnable :: a -> VkDepthWriteEnableMType a
-
-        vkDepthWriteEnableByteOffset :: a -> Int
-
-        readVkDepthWriteEnable :: Ptr a -> IO (VkDepthWriteEnableMType a)
-
-        writeVkDepthWriteEnable ::
-                                Ptr a -> VkDepthWriteEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'depthWriteEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDepthWriteEnable a
-
-class HasVkDescriptionArray a where
-        type VkDescriptionArrayMType a :: *
-
-        vkDescriptionArray :: a -> Int -> VkDescriptionArrayMType a
-
-        vkDescriptionArrayByteOffset :: a -> Int
-
-        readVkDescriptionArray ::
-                               Ptr a -> Int -> IO (VkDescriptionArrayMType a)
-
-        writeVkDescriptionArray ::
-                                Ptr a -> Int -> VkDescriptionArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'description'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptionArray a
-
-class HasVkDescriptorCount a where
-        type VkDescriptorCountMType a :: *
-
-        vkDescriptorCount :: a -> VkDescriptorCountMType a
-
-        vkDescriptorCountByteOffset :: a -> Int
-
-        readVkDescriptorCount :: Ptr a -> IO (VkDescriptorCountMType a)
-
-        writeVkDescriptorCount ::
-                               Ptr a -> VkDescriptorCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorCount a
-
-class HasVkDescriptorPool a where
-        type VkDescriptorPoolMType a :: *
-
-        vkDescriptorPool :: a -> VkDescriptorPoolMType a
-
-        vkDescriptorPoolByteOffset :: a -> Int
-
-        readVkDescriptorPool :: Ptr a -> IO (VkDescriptorPoolMType a)
-
-        writeVkDescriptorPool :: Ptr a -> VkDescriptorPoolMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorPool'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorPool a
-
-class HasVkDescriptorSet a where
-        type VkDescriptorSetMType a :: *
-
-        vkDescriptorSet :: a -> VkDescriptorSetMType a
-
-        vkDescriptorSetByteOffset :: a -> Int
-
-        readVkDescriptorSet :: Ptr a -> IO (VkDescriptorSetMType a)
-
-        writeVkDescriptorSet :: Ptr a -> VkDescriptorSetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorSet'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorSet a
-
-class HasVkDescriptorSetCount a where
-        type VkDescriptorSetCountMType a :: *
-
-        vkDescriptorSetCount :: a -> VkDescriptorSetCountMType a
-
-        vkDescriptorSetCountByteOffset :: a -> Int
-
-        readVkDescriptorSetCount ::
-                                 Ptr a -> IO (VkDescriptorSetCountMType a)
-
-        writeVkDescriptorSetCount ::
-                                  Ptr a -> VkDescriptorSetCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorSetCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorSetCount a
-
-class HasVkDescriptorSetLayout a where
-        type VkDescriptorSetLayoutMType a :: *
-
-        vkDescriptorSetLayout :: a -> VkDescriptorSetLayoutMType a
-
-        vkDescriptorSetLayoutByteOffset :: a -> Int
-
-        readVkDescriptorSetLayout ::
-                                  Ptr a -> IO (VkDescriptorSetLayoutMType a)
-
-        writeVkDescriptorSetLayout ::
-                                   Ptr a -> VkDescriptorSetLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorSetLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorSetLayout a
-
-class HasVkDescriptorType a where
-        type VkDescriptorTypeMType a :: *
-
-        vkDescriptorType :: a -> VkDescriptorTypeMType a
-
-        vkDescriptorTypeByteOffset :: a -> Int
-
-        readVkDescriptorType :: Ptr a -> IO (VkDescriptorTypeMType a)
-
-        writeVkDescriptorType :: Ptr a -> VkDescriptorTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorType a
-
-class HasVkDescriptorUpdateEntryCount a where
-        type VkDescriptorUpdateEntryCountMType a :: *
-
-        vkDescriptorUpdateEntryCount ::
-                                     a -> VkDescriptorUpdateEntryCountMType a
-
-        vkDescriptorUpdateEntryCountByteOffset :: a -> Int
-
-        readVkDescriptorUpdateEntryCount ::
-                                         Ptr a -> IO (VkDescriptorUpdateEntryCountMType a)
-
-        writeVkDescriptorUpdateEntryCount ::
-                                          Ptr a -> VkDescriptorUpdateEntryCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'descriptorUpdateEntryCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDescriptorUpdateEntryCount a
-
-class HasVkDesiredPresentTime a where
-        type VkDesiredPresentTimeMType a :: *
-
-        vkDesiredPresentTime :: a -> VkDesiredPresentTimeMType a
-
-        vkDesiredPresentTimeByteOffset :: a -> Int
-
-        readVkDesiredPresentTime ::
-                                 Ptr a -> IO (VkDesiredPresentTimeMType a)
-
-        writeVkDesiredPresentTime ::
-                                  Ptr a -> VkDesiredPresentTimeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'desiredPresentTime'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDesiredPresentTime a
-
-class HasVkDeviceEvent a where
-        type VkDeviceEventMType a :: *
-
-        vkDeviceEvent :: a -> VkDeviceEventMType a
-
-        vkDeviceEventByteOffset :: a -> Int
-
-        readVkDeviceEvent :: Ptr a -> IO (VkDeviceEventMType a)
-
-        writeVkDeviceEvent :: Ptr a -> VkDeviceEventMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceEvent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceEvent a
-
-class HasVkDeviceID a where
-        type VkDeviceIDMType a :: *
-
-        vkDeviceID :: a -> VkDeviceIDMType a
-
-        vkDeviceIDByteOffset :: a -> Int
-
-        readVkDeviceID :: Ptr a -> IO (VkDeviceIDMType a)
-
-        writeVkDeviceID :: Ptr a -> VkDeviceIDMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceID a
-
-class HasVkDeviceIndexCount a where
-        type VkDeviceIndexCountMType a :: *
-
-        vkDeviceIndexCount :: a -> VkDeviceIndexCountMType a
-
-        vkDeviceIndexCountByteOffset :: a -> Int
-
-        readVkDeviceIndexCount :: Ptr a -> IO (VkDeviceIndexCountMType a)
-
-        writeVkDeviceIndexCount ::
-                                Ptr a -> VkDeviceIndexCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceIndexCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceIndexCount a
-
-class HasVkDeviceLUIDArray a where
-        type VkDeviceLUIDArrayMType a :: *
-
-        vkDeviceLUIDArray :: a -> Int -> VkDeviceLUIDArrayMType a
-
-        vkDeviceLUIDArrayByteOffset :: a -> Int
-
-        readVkDeviceLUIDArray ::
-                              Ptr a -> Int -> IO (VkDeviceLUIDArrayMType a)
-
-        writeVkDeviceLUIDArray ::
-                               Ptr a -> Int -> VkDeviceLUIDArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceLUID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceLUIDArray a
-
-class HasVkDeviceLUIDValid a where
-        type VkDeviceLUIDValidMType a :: *
-
-        vkDeviceLUIDValid :: a -> VkDeviceLUIDValidMType a
-
-        vkDeviceLUIDValidByteOffset :: a -> Int
-
-        readVkDeviceLUIDValid :: Ptr a -> IO (VkDeviceLUIDValidMType a)
-
-        writeVkDeviceLUIDValid ::
-                               Ptr a -> VkDeviceLUIDValidMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceLUIDValid'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceLUIDValid a
-
-class HasVkDeviceMask a where
-        type VkDeviceMaskMType a :: *
-
-        vkDeviceMask :: a -> VkDeviceMaskMType a
-
-        vkDeviceMaskByteOffset :: a -> Int
-
-        readVkDeviceMask :: Ptr a -> IO (VkDeviceMaskMType a)
-
-        writeVkDeviceMask :: Ptr a -> VkDeviceMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceMask a
-
-class HasVkDeviceNameArray a where
-        type VkDeviceNameArrayMType a :: *
-
-        vkDeviceNameArray :: a -> Int -> VkDeviceNameArrayMType a
-
-        vkDeviceNameArrayByteOffset :: a -> Int
-
-        readVkDeviceNameArray ::
-                              Ptr a -> Int -> IO (VkDeviceNameArrayMType a)
-
-        writeVkDeviceNameArray ::
-                               Ptr a -> Int -> VkDeviceNameArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceNameArray a
-
-class HasVkDeviceNodeMask a where
-        type VkDeviceNodeMaskMType a :: *
-
-        vkDeviceNodeMask :: a -> VkDeviceNodeMaskMType a
-
-        vkDeviceNodeMaskByteOffset :: a -> Int
-
-        readVkDeviceNodeMask :: Ptr a -> IO (VkDeviceNodeMaskMType a)
-
-        writeVkDeviceNodeMask :: Ptr a -> VkDeviceNodeMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceNodeMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceNodeMask a
-
-class HasVkDeviceRenderAreaCount a where
-        type VkDeviceRenderAreaCountMType a :: *
-
-        vkDeviceRenderAreaCount :: a -> VkDeviceRenderAreaCountMType a
-
-        vkDeviceRenderAreaCountByteOffset :: a -> Int
-
-        readVkDeviceRenderAreaCount ::
-                                    Ptr a -> IO (VkDeviceRenderAreaCountMType a)
-
-        writeVkDeviceRenderAreaCount ::
-                                     Ptr a -> VkDeviceRenderAreaCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceRenderAreaCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceRenderAreaCount a
-
-class HasVkDeviceType a where
-        type VkDeviceTypeMType a :: *
-
-        vkDeviceType :: a -> VkDeviceTypeMType a
-
-        vkDeviceTypeByteOffset :: a -> Int
-
-        readVkDeviceType :: Ptr a -> IO (VkDeviceTypeMType a)
-
-        writeVkDeviceType :: Ptr a -> VkDeviceTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceType a
-
-class HasVkDeviceUUIDArray a where
-        type VkDeviceUUIDArrayMType a :: *
-
-        vkDeviceUUIDArray :: a -> Int -> VkDeviceUUIDArrayMType a
-
-        vkDeviceUUIDArrayByteOffset :: a -> Int
-
-        readVkDeviceUUIDArray ::
-                              Ptr a -> Int -> IO (VkDeviceUUIDArrayMType a)
-
-        writeVkDeviceUUIDArray ::
-                               Ptr a -> Int -> VkDeviceUUIDArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'deviceUUID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDeviceUUIDArray a
-
-class HasVkDisabledValidationCheckCount a where
-        type VkDisabledValidationCheckCountMType a :: *
-
-        vkDisabledValidationCheckCount ::
-                                       a -> VkDisabledValidationCheckCountMType a
-
-        vkDisabledValidationCheckCountByteOffset :: a -> Int
-
-        readVkDisabledValidationCheckCount ::
-                                           Ptr a -> IO (VkDisabledValidationCheckCountMType a)
-
-        writeVkDisabledValidationCheckCount ::
-                                            Ptr a -> VkDisabledValidationCheckCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'disabledValidationCheckCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisabledValidationCheckCount a
-
-class HasVkDiscardRectangleCount a where
-        type VkDiscardRectangleCountMType a :: *
-
-        vkDiscardRectangleCount :: a -> VkDiscardRectangleCountMType a
-
-        vkDiscardRectangleCountByteOffset :: a -> Int
-
-        readVkDiscardRectangleCount ::
-                                    Ptr a -> IO (VkDiscardRectangleCountMType a)
-
-        writeVkDiscardRectangleCount ::
-                                     Ptr a -> VkDiscardRectangleCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'discardRectangleCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDiscardRectangleCount a
-
-class HasVkDiscardRectangleMode a where
-        type VkDiscardRectangleModeMType a :: *
-
-        vkDiscardRectangleMode :: a -> VkDiscardRectangleModeMType a
-
-        vkDiscardRectangleModeByteOffset :: a -> Int
-
-        readVkDiscardRectangleMode ::
-                                   Ptr a -> IO (VkDiscardRectangleModeMType a)
-
-        writeVkDiscardRectangleMode ::
-                                    Ptr a -> VkDiscardRectangleModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'discardRectangleMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDiscardRectangleMode a
-
-class HasVkDiscreteQueuePriorities a where
-        type VkDiscreteQueuePrioritiesMType a :: *
-
-        vkDiscreteQueuePriorities :: a -> VkDiscreteQueuePrioritiesMType a
-
-        vkDiscreteQueuePrioritiesByteOffset :: a -> Int
-
-        readVkDiscreteQueuePriorities ::
-                                      Ptr a -> IO (VkDiscreteQueuePrioritiesMType a)
-
-        writeVkDiscreteQueuePriorities ::
-                                       Ptr a -> VkDiscreteQueuePrioritiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'discreteQueuePriorities'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDiscreteQueuePriorities a
-
-class HasVkDisplay a where
-        type VkDisplayMType a :: *
-
-        vkDisplay :: a -> VkDisplayMType a
-
-        vkDisplayByteOffset :: a -> Int
-
-        readVkDisplay :: Ptr a -> IO (VkDisplayMType a)
-
-        writeVkDisplay :: Ptr a -> VkDisplayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'display'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplay a
-
-class HasVkDisplayEvent a where
-        type VkDisplayEventMType a :: *
-
-        vkDisplayEvent :: a -> VkDisplayEventMType a
-
-        vkDisplayEventByteOffset :: a -> Int
-
-        readVkDisplayEvent :: Ptr a -> IO (VkDisplayEventMType a)
-
-        writeVkDisplayEvent :: Ptr a -> VkDisplayEventMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'displayEvent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplayEvent a
-
-class HasVkDisplayMode a where
-        type VkDisplayModeMType a :: *
-
-        vkDisplayMode :: a -> VkDisplayModeMType a
-
-        vkDisplayModeByteOffset :: a -> Int
-
-        readVkDisplayMode :: Ptr a -> IO (VkDisplayModeMType a)
-
-        writeVkDisplayMode :: Ptr a -> VkDisplayModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'displayMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplayMode a
-
-class HasVkDisplayName a where
-        type VkDisplayNameMType a :: *
-
-        vkDisplayName :: a -> VkDisplayNameMType a
-
-        vkDisplayNameByteOffset :: a -> Int
-
-        readVkDisplayName :: Ptr a -> IO (VkDisplayNameMType a)
-
-        writeVkDisplayName :: Ptr a -> VkDisplayNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'displayName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplayName a
-
-class HasVkDisplayPrimaryBlue a where
-        type VkDisplayPrimaryBlueMType a :: *
-
-        vkDisplayPrimaryBlue :: a -> VkDisplayPrimaryBlueMType a
-
-        vkDisplayPrimaryBlueByteOffset :: a -> Int
-
-        readVkDisplayPrimaryBlue ::
-                                 Ptr a -> IO (VkDisplayPrimaryBlueMType a)
-
-        writeVkDisplayPrimaryBlue ::
-                                  Ptr a -> VkDisplayPrimaryBlueMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'displayPrimaryBlue'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplayPrimaryBlue a
-
-class HasVkDisplayPrimaryGreen a where
-        type VkDisplayPrimaryGreenMType a :: *
-
-        vkDisplayPrimaryGreen :: a -> VkDisplayPrimaryGreenMType a
-
-        vkDisplayPrimaryGreenByteOffset :: a -> Int
-
-        readVkDisplayPrimaryGreen ::
-                                  Ptr a -> IO (VkDisplayPrimaryGreenMType a)
-
-        writeVkDisplayPrimaryGreen ::
-                                   Ptr a -> VkDisplayPrimaryGreenMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'displayPrimaryGreen'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplayPrimaryGreen a
-
-class HasVkDisplayPrimaryRed a where
-        type VkDisplayPrimaryRedMType a :: *
-
-        vkDisplayPrimaryRed :: a -> VkDisplayPrimaryRedMType a
-
-        vkDisplayPrimaryRedByteOffset :: a -> Int
-
-        readVkDisplayPrimaryRed :: Ptr a -> IO (VkDisplayPrimaryRedMType a)
-
-        writeVkDisplayPrimaryRed ::
-                                 Ptr a -> VkDisplayPrimaryRedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'displayPrimaryRed'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDisplayPrimaryRed a
-
-class HasVkDivisor a where
-        type VkDivisorMType a :: *
-
-        vkDivisor :: a -> VkDivisorMType a
-
-        vkDivisorByteOffset :: a -> Int
-
-        readVkDivisor :: Ptr a -> IO (VkDivisorMType a)
-
-        writeVkDivisor :: Ptr a -> VkDivisorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'divisor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDivisor a
-
-class HasVkDomainOrigin a where
-        type VkDomainOriginMType a :: *
-
-        vkDomainOrigin :: a -> VkDomainOriginMType a
-
-        vkDomainOriginByteOffset :: a -> Int
-
-        readVkDomainOrigin :: Ptr a -> IO (VkDomainOriginMType a)
-
-        writeVkDomainOrigin :: Ptr a -> VkDomainOriginMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'domainOrigin'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDomainOrigin a
-
-class HasVkDpy a where
-        type VkDpyMType a :: *
-
-        vkDpy :: a -> VkDpyMType a
-
-        vkDpyByteOffset :: a -> Int
-
-        readVkDpy :: Ptr a -> IO (VkDpyMType a)
-
-        writeVkDpy :: Ptr a -> VkDpyMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dpy'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDpy a
-
-class HasVkDrawIndirectFirstInstance a where
-        type VkDrawIndirectFirstInstanceMType a :: *
-
-        vkDrawIndirectFirstInstance ::
-                                    a -> VkDrawIndirectFirstInstanceMType a
-
-        vkDrawIndirectFirstInstanceByteOffset :: a -> Int
-
-        readVkDrawIndirectFirstInstance ::
-                                        Ptr a -> IO (VkDrawIndirectFirstInstanceMType a)
-
-        writeVkDrawIndirectFirstInstance ::
-                                         Ptr a -> VkDrawIndirectFirstInstanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'drawIndirectFirstInstance'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDrawIndirectFirstInstance a
-
-class HasVkDriverUUIDArray a where
-        type VkDriverUUIDArrayMType a :: *
-
-        vkDriverUUIDArray :: a -> Int -> VkDriverUUIDArrayMType a
-
-        vkDriverUUIDArrayByteOffset :: a -> Int
-
-        readVkDriverUUIDArray ::
-                              Ptr a -> Int -> IO (VkDriverUUIDArrayMType a)
-
-        writeVkDriverUUIDArray ::
-                               Ptr a -> Int -> VkDriverUUIDArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'driverUUID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDriverUUIDArray a
-
-class HasVkDriverVersion a where
-        type VkDriverVersionMType a :: *
-
-        vkDriverVersion :: a -> VkDriverVersionMType a
-
-        vkDriverVersionByteOffset :: a -> Int
-
-        readVkDriverVersion :: Ptr a -> IO (VkDriverVersionMType a)
-
-        writeVkDriverVersion :: Ptr a -> VkDriverVersionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'driverVersion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDriverVersion a
-
-class HasVkDstAccessMask a where
-        type VkDstAccessMaskMType a :: *
-
-        vkDstAccessMask :: a -> VkDstAccessMaskMType a
-
-        vkDstAccessMaskByteOffset :: a -> Int
-
-        readVkDstAccessMask :: Ptr a -> IO (VkDstAccessMaskMType a)
-
-        writeVkDstAccessMask :: Ptr a -> VkDstAccessMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstAccessMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstAccessMask a
-
-class HasVkDstAlphaBlendFactor a where
-        type VkDstAlphaBlendFactorMType a :: *
-
-        vkDstAlphaBlendFactor :: a -> VkDstAlphaBlendFactorMType a
-
-        vkDstAlphaBlendFactorByteOffset :: a -> Int
-
-        readVkDstAlphaBlendFactor ::
-                                  Ptr a -> IO (VkDstAlphaBlendFactorMType a)
-
-        writeVkDstAlphaBlendFactor ::
-                                   Ptr a -> VkDstAlphaBlendFactorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstAlphaBlendFactor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstAlphaBlendFactor a
-
-class HasVkDstArrayElement a where
-        type VkDstArrayElementMType a :: *
-
-        vkDstArrayElement :: a -> VkDstArrayElementMType a
-
-        vkDstArrayElementByteOffset :: a -> Int
-
-        readVkDstArrayElement :: Ptr a -> IO (VkDstArrayElementMType a)
-
-        writeVkDstArrayElement ::
-                               Ptr a -> VkDstArrayElementMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstArrayElement'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstArrayElement a
-
-class HasVkDstBinding a where
-        type VkDstBindingMType a :: *
-
-        vkDstBinding :: a -> VkDstBindingMType a
-
-        vkDstBindingByteOffset :: a -> Int
-
-        readVkDstBinding :: Ptr a -> IO (VkDstBindingMType a)
-
-        writeVkDstBinding :: Ptr a -> VkDstBindingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstBinding'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstBinding a
-
-class HasVkDstColorBlendFactor a where
-        type VkDstColorBlendFactorMType a :: *
-
-        vkDstColorBlendFactor :: a -> VkDstColorBlendFactorMType a
-
-        vkDstColorBlendFactorByteOffset :: a -> Int
-
-        readVkDstColorBlendFactor ::
-                                  Ptr a -> IO (VkDstColorBlendFactorMType a)
-
-        writeVkDstColorBlendFactor ::
-                                   Ptr a -> VkDstColorBlendFactorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstColorBlendFactor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstColorBlendFactor a
-
-class HasVkDstOffset a where
-        type VkDstOffsetMType a :: *
-
-        vkDstOffset :: a -> VkDstOffsetMType a
-
-        vkDstOffsetByteOffset :: a -> Int
-
-        readVkDstOffset :: Ptr a -> IO (VkDstOffsetMType a)
-
-        writeVkDstOffset :: Ptr a -> VkDstOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstOffset a
-
-class HasVkDstOffsetsArray a where
-        type VkDstOffsetsArrayMType a :: *
-
-        vkDstOffsetsArray :: a -> Int -> VkDstOffsetsArrayMType a
-
-        vkDstOffsetsArrayByteOffset :: a -> Int
-
-        readVkDstOffsetsArray ::
-                              Ptr a -> Int -> IO (VkDstOffsetsArrayMType a)
-
-        writeVkDstOffsetsArray ::
-                               Ptr a -> Int -> VkDstOffsetsArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstOffsets'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstOffsetsArray a
-
-class HasVkDstPremultiplied a where
-        type VkDstPremultipliedMType a :: *
-
-        vkDstPremultiplied :: a -> VkDstPremultipliedMType a
-
-        vkDstPremultipliedByteOffset :: a -> Int
-
-        readVkDstPremultiplied :: Ptr a -> IO (VkDstPremultipliedMType a)
-
-        writeVkDstPremultiplied ::
-                                Ptr a -> VkDstPremultipliedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstPremultiplied'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstPremultiplied a
-
-class HasVkDstQueueFamilyIndex a where
-        type VkDstQueueFamilyIndexMType a :: *
-
-        vkDstQueueFamilyIndex :: a -> VkDstQueueFamilyIndexMType a
-
-        vkDstQueueFamilyIndexByteOffset :: a -> Int
-
-        readVkDstQueueFamilyIndex ::
-                                  Ptr a -> IO (VkDstQueueFamilyIndexMType a)
-
-        writeVkDstQueueFamilyIndex ::
-                                   Ptr a -> VkDstQueueFamilyIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstQueueFamilyIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstQueueFamilyIndex a
-
-class HasVkDstRect a where
-        type VkDstRectMType a :: *
-
-        vkDstRect :: a -> VkDstRectMType a
-
-        vkDstRectByteOffset :: a -> Int
-
-        readVkDstRect :: Ptr a -> IO (VkDstRectMType a)
-
-        writeVkDstRect :: Ptr a -> VkDstRectMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstRect'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstRect a
-
-class HasVkDstSet a where
-        type VkDstSetMType a :: *
-
-        vkDstSet :: a -> VkDstSetMType a
-
-        vkDstSetByteOffset :: a -> Int
-
-        readVkDstSet :: Ptr a -> IO (VkDstSetMType a)
-
-        writeVkDstSet :: Ptr a -> VkDstSetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstSet'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstSet a
-
-class HasVkDstStageMask a where
-        type VkDstStageMaskMType a :: *
-
-        vkDstStageMask :: a -> VkDstStageMaskMType a
-
-        vkDstStageMaskByteOffset :: a -> Int
-
-        readVkDstStageMask :: Ptr a -> IO (VkDstStageMaskMType a)
-
-        writeVkDstStageMask :: Ptr a -> VkDstStageMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstStageMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstStageMask a
-
-class HasVkDstSubpass a where
-        type VkDstSubpassMType a :: *
-
-        vkDstSubpass :: a -> VkDstSubpassMType a
-
-        vkDstSubpassByteOffset :: a -> Int
-
-        readVkDstSubpass :: Ptr a -> IO (VkDstSubpassMType a)
-
-        writeVkDstSubpass :: Ptr a -> VkDstSubpassMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstSubpass'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstSubpass a
-
-class HasVkDstSubresource a where
-        type VkDstSubresourceMType a :: *
-
-        vkDstSubresource :: a -> VkDstSubresourceMType a
-
-        vkDstSubresourceByteOffset :: a -> Int
-
-        readVkDstSubresource :: Ptr a -> IO (VkDstSubresourceMType a)
-
-        writeVkDstSubresource :: Ptr a -> VkDstSubresourceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dstSubresource'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDstSubresource a
-
-class HasVkDualSrcBlend a where
-        type VkDualSrcBlendMType a :: *
-
-        vkDualSrcBlend :: a -> VkDualSrcBlendMType a
-
-        vkDualSrcBlendByteOffset :: a -> Int
-
-        readVkDualSrcBlend :: Ptr a -> IO (VkDualSrcBlendMType a)
-
-        writeVkDualSrcBlend :: Ptr a -> VkDualSrcBlendMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dualSrcBlend'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDualSrcBlend a
-
-class HasVkDwAccess a where
-        type VkDwAccessMType a :: *
-
-        vkDwAccess :: a -> VkDwAccessMType a
-
-        vkDwAccessByteOffset :: a -> Int
-
-        readVkDwAccess :: Ptr a -> IO (VkDwAccessMType a)
-
-        writeVkDwAccess :: Ptr a -> VkDwAccessMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dwAccess'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDwAccess a
-
-class HasVkDynamicCount a where
-        type VkDynamicCountMType a :: *
-
-        vkDynamicCount :: a -> VkDynamicCountMType a
-
-        vkDynamicCountByteOffset :: a -> Int
-
-        readVkDynamicCount :: Ptr a -> IO (VkDynamicCountMType a)
-
-        writeVkDynamicCount :: Ptr a -> VkDynamicCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dynamicCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDynamicCount a
-
-class HasVkDynamicStateCount a where
-        type VkDynamicStateCountMType a :: *
-
-        vkDynamicStateCount :: a -> VkDynamicStateCountMType a
-
-        vkDynamicStateCountByteOffset :: a -> Int
-
-        readVkDynamicStateCount :: Ptr a -> IO (VkDynamicStateCountMType a)
-
-        writeVkDynamicStateCount ::
-                                 Ptr a -> VkDynamicStateCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'dynamicStateCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkDynamicStateCount a
-
-class HasVkEarliestPresentTime a where
-        type VkEarliestPresentTimeMType a :: *
-
-        vkEarliestPresentTime :: a -> VkEarliestPresentTimeMType a
-
-        vkEarliestPresentTimeByteOffset :: a -> Int
-
-        readVkEarliestPresentTime ::
-                                  Ptr a -> IO (VkEarliestPresentTimeMType a)
-
-        writeVkEarliestPresentTime ::
-                                   Ptr a -> VkEarliestPresentTimeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'earliestPresentTime'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkEarliestPresentTime a
-
-class HasVkEnabledExtensionCount a where
-        type VkEnabledExtensionCountMType a :: *
-
-        vkEnabledExtensionCount :: a -> VkEnabledExtensionCountMType a
-
-        vkEnabledExtensionCountByteOffset :: a -> Int
-
-        readVkEnabledExtensionCount ::
-                                    Ptr a -> IO (VkEnabledExtensionCountMType a)
-
-        writeVkEnabledExtensionCount ::
-                                     Ptr a -> VkEnabledExtensionCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'enabledExtensionCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkEnabledExtensionCount a
-
-class HasVkEnabledLayerCount a where
-        type VkEnabledLayerCountMType a :: *
-
-        vkEnabledLayerCount :: a -> VkEnabledLayerCountMType a
-
-        vkEnabledLayerCountByteOffset :: a -> Int
-
-        readVkEnabledLayerCount :: Ptr a -> IO (VkEnabledLayerCountMType a)
-
-        writeVkEnabledLayerCount ::
-                                 Ptr a -> VkEnabledLayerCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'enabledLayerCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkEnabledLayerCount a
-
-class HasVkEngineVersion a where
-        type VkEngineVersionMType a :: *
-
-        vkEngineVersion :: a -> VkEngineVersionMType a
-
-        vkEngineVersionByteOffset :: a -> Int
-
-        readVkEngineVersion :: Ptr a -> IO (VkEngineVersionMType a)
-
-        writeVkEngineVersion :: Ptr a -> VkEngineVersionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'engineVersion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkEngineVersion a
-
-class HasVkExportFromImportedHandleTypes a where
-        type VkExportFromImportedHandleTypesMType a :: *
-
-        vkExportFromImportedHandleTypes ::
-                                        a -> VkExportFromImportedHandleTypesMType a
-
-        vkExportFromImportedHandleTypesByteOffset :: a -> Int
-
-        readVkExportFromImportedHandleTypes ::
-                                            Ptr a -> IO (VkExportFromImportedHandleTypesMType a)
-
-        writeVkExportFromImportedHandleTypes ::
-                                             Ptr a ->
-                                               VkExportFromImportedHandleTypesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'exportFromImportedHandleTypes'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExportFromImportedHandleTypes a
-
-class HasVkExtensionNameArray a where
-        type VkExtensionNameArrayMType a :: *
-
-        vkExtensionNameArray :: a -> Int -> VkExtensionNameArrayMType a
-
-        vkExtensionNameArrayByteOffset :: a -> Int
-
-        readVkExtensionNameArray ::
-                                 Ptr a -> Int -> IO (VkExtensionNameArrayMType a)
-
-        writeVkExtensionNameArray ::
-                                  Ptr a -> Int -> VkExtensionNameArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'extensionName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExtensionNameArray a
-
-class HasVkExtent a where
-        type VkExtentMType a :: *
-
-        vkExtent :: a -> VkExtentMType a
-
-        vkExtentByteOffset :: a -> Int
-
-        readVkExtent :: Ptr a -> IO (VkExtentMType a)
-
-        writeVkExtent :: Ptr a -> VkExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'extent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExtent a
-
-class HasVkExternalFenceFeatures a where
-        type VkExternalFenceFeaturesMType a :: *
-
-        vkExternalFenceFeatures :: a -> VkExternalFenceFeaturesMType a
-
-        vkExternalFenceFeaturesByteOffset :: a -> Int
-
-        readVkExternalFenceFeatures ::
-                                    Ptr a -> IO (VkExternalFenceFeaturesMType a)
-
-        writeVkExternalFenceFeatures ::
-                                     Ptr a -> VkExternalFenceFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'externalFenceFeatures'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExternalFenceFeatures a
-
-class HasVkExternalMemoryFeatures a where
-        type VkExternalMemoryFeaturesMType a :: *
-
-        vkExternalMemoryFeatures :: a -> VkExternalMemoryFeaturesMType a
-
-        vkExternalMemoryFeaturesByteOffset :: a -> Int
-
-        readVkExternalMemoryFeatures ::
-                                     Ptr a -> IO (VkExternalMemoryFeaturesMType a)
-
-        writeVkExternalMemoryFeatures ::
-                                      Ptr a -> VkExternalMemoryFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'externalMemoryFeatures'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExternalMemoryFeatures a
-
-class HasVkExternalMemoryProperties a where
-        type VkExternalMemoryPropertiesMType a :: *
-
-        vkExternalMemoryProperties ::
-                                   a -> VkExternalMemoryPropertiesMType a
-
-        vkExternalMemoryPropertiesByteOffset :: a -> Int
-
-        readVkExternalMemoryProperties ::
-                                       Ptr a -> IO (VkExternalMemoryPropertiesMType a)
-
-        writeVkExternalMemoryProperties ::
-                                        Ptr a -> VkExternalMemoryPropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'externalMemoryProperties'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExternalMemoryProperties a
-
-class HasVkExternalSemaphoreFeatures a where
-        type VkExternalSemaphoreFeaturesMType a :: *
-
-        vkExternalSemaphoreFeatures ::
-                                    a -> VkExternalSemaphoreFeaturesMType a
-
-        vkExternalSemaphoreFeaturesByteOffset :: a -> Int
-
-        readVkExternalSemaphoreFeatures ::
-                                        Ptr a -> IO (VkExternalSemaphoreFeaturesMType a)
-
-        writeVkExternalSemaphoreFeatures ::
-                                         Ptr a -> VkExternalSemaphoreFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'externalSemaphoreFeatures'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExternalSemaphoreFeatures a
-
-class HasVkExtraPrimitiveOverestimationSize a where
-        type VkExtraPrimitiveOverestimationSizeMType a :: *
-
-        vkExtraPrimitiveOverestimationSize ::
-                                           a -> VkExtraPrimitiveOverestimationSizeMType a
-
-        vkExtraPrimitiveOverestimationSizeByteOffset :: a -> Int
-
-        readVkExtraPrimitiveOverestimationSize ::
-                                               Ptr a ->
-                                                 IO (VkExtraPrimitiveOverestimationSizeMType a)
-
-        writeVkExtraPrimitiveOverestimationSize ::
-                                                Ptr a ->
-                                                  VkExtraPrimitiveOverestimationSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'extraPrimitiveOverestimationSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExtraPrimitiveOverestimationSize a
-
-class HasVkExtraPrimitiveOverestimationSizeGranularity a where
-        type VkExtraPrimitiveOverestimationSizeGranularityMType a :: *
-
-        vkExtraPrimitiveOverestimationSizeGranularity ::
-                                                      a ->
-                                                        VkExtraPrimitiveOverestimationSizeGranularityMType
-                                                          a
-
-        vkExtraPrimitiveOverestimationSizeGranularityByteOffset :: a -> Int
-
-        readVkExtraPrimitiveOverestimationSizeGranularity ::
-                                                          Ptr a ->
-                                                            IO
-                                                              (VkExtraPrimitiveOverestimationSizeGranularityMType
-                                                                 a)
-
-        writeVkExtraPrimitiveOverestimationSizeGranularity ::
-                                                           Ptr a ->
-                                                             VkExtraPrimitiveOverestimationSizeGranularityMType
-                                                               a
-                                                               -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'extraPrimitiveOverestimationSizeGranularity'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkExtraPrimitiveOverestimationSizeGranularity a
-
-class HasVkFailOp a where
-        type VkFailOpMType a :: *
-
-        vkFailOp :: a -> VkFailOpMType a
-
-        vkFailOpByteOffset :: a -> Int
-
-        readVkFailOp :: Ptr a -> IO (VkFailOpMType a)
-
-        writeVkFailOp :: Ptr a -> VkFailOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'failOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFailOp a
-
-class HasVkFd a where
-        type VkFdMType a :: *
-
-        vkFd :: a -> VkFdMType a
-
-        vkFdByteOffset :: a -> Int
-
-        readVkFd :: Ptr a -> IO (VkFdMType a)
-
-        writeVkFd :: Ptr a -> VkFdMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'fd'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFd a
-
-class HasVkFeatures a where
-        type VkFeaturesMType a :: *
-
-        vkFeatures :: a -> VkFeaturesMType a
-
-        vkFeaturesByteOffset :: a -> Int
-
-        readVkFeatures :: Ptr a -> IO (VkFeaturesMType a)
-
-        writeVkFeatures :: Ptr a -> VkFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'features'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFeatures a
-
-class HasVkFence a where
-        type VkFenceMType a :: *
-
-        vkFence :: a -> VkFenceMType a
-
-        vkFenceByteOffset :: a -> Int
-
-        readVkFence :: Ptr a -> IO (VkFenceMType a)
-
-        writeVkFence :: Ptr a -> VkFenceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'fence'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFence a
-
-class HasVkFillModeNonSolid a where
-        type VkFillModeNonSolidMType a :: *
-
-        vkFillModeNonSolid :: a -> VkFillModeNonSolidMType a
-
-        vkFillModeNonSolidByteOffset :: a -> Int
-
-        readVkFillModeNonSolid :: Ptr a -> IO (VkFillModeNonSolidMType a)
-
-        writeVkFillModeNonSolid ::
-                                Ptr a -> VkFillModeNonSolidMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'fillModeNonSolid'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFillModeNonSolid a
-
-class HasVkFilterMinmaxImageComponentMapping a where
-        type VkFilterMinmaxImageComponentMappingMType a :: *
-
-        vkFilterMinmaxImageComponentMapping ::
-                                            a -> VkFilterMinmaxImageComponentMappingMType a
-
-        vkFilterMinmaxImageComponentMappingByteOffset :: a -> Int
-
-        readVkFilterMinmaxImageComponentMapping ::
-                                                Ptr a ->
-                                                  IO (VkFilterMinmaxImageComponentMappingMType a)
-
-        writeVkFilterMinmaxImageComponentMapping ::
-                                                 Ptr a ->
-                                                   VkFilterMinmaxImageComponentMappingMType a ->
-                                                     IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'filterMinmaxImageComponentMapping'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFilterMinmaxImageComponentMapping a
-
-class HasVkFilterMinmaxSingleComponentFormats a where
-        type VkFilterMinmaxSingleComponentFormatsMType a :: *
-
-        vkFilterMinmaxSingleComponentFormats ::
-                                             a -> VkFilterMinmaxSingleComponentFormatsMType a
-
-        vkFilterMinmaxSingleComponentFormatsByteOffset :: a -> Int
-
-        readVkFilterMinmaxSingleComponentFormats ::
-                                                 Ptr a ->
-                                                   IO (VkFilterMinmaxSingleComponentFormatsMType a)
-
-        writeVkFilterMinmaxSingleComponentFormats ::
-                                                  Ptr a ->
-                                                    VkFilterMinmaxSingleComponentFormatsMType a ->
-                                                      IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'filterMinmaxSingleComponentFormats'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFilterMinmaxSingleComponentFormats a
-
-class HasVkFinalLayout a where
-        type VkFinalLayoutMType a :: *
-
-        vkFinalLayout :: a -> VkFinalLayoutMType a
-
-        vkFinalLayoutByteOffset :: a -> Int
-
-        readVkFinalLayout :: Ptr a -> IO (VkFinalLayoutMType a)
-
-        writeVkFinalLayout :: Ptr a -> VkFinalLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'finalLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFinalLayout a
-
-class HasVkFirstIndex a where
-        type VkFirstIndexMType a :: *
-
-        vkFirstIndex :: a -> VkFirstIndexMType a
-
-        vkFirstIndexByteOffset :: a -> Int
-
-        readVkFirstIndex :: Ptr a -> IO (VkFirstIndexMType a)
-
-        writeVkFirstIndex :: Ptr a -> VkFirstIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'firstIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFirstIndex a
-
-class HasVkFirstInstance a where
-        type VkFirstInstanceMType a :: *
-
-        vkFirstInstance :: a -> VkFirstInstanceMType a
-
-        vkFirstInstanceByteOffset :: a -> Int
-
-        readVkFirstInstance :: Ptr a -> IO (VkFirstInstanceMType a)
-
-        writeVkFirstInstance :: Ptr a -> VkFirstInstanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'firstInstance'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFirstInstance a
-
-class HasVkFirstVertex a where
-        type VkFirstVertexMType a :: *
-
-        vkFirstVertex :: a -> VkFirstVertexMType a
-
-        vkFirstVertexByteOffset :: a -> Int
-
-        readVkFirstVertex :: Ptr a -> IO (VkFirstVertexMType a)
-
-        writeVkFirstVertex :: Ptr a -> VkFirstVertexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'firstVertex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFirstVertex a
-
-class HasVkFlags a where
-        type VkFlagsMType a :: *
-
-        vkFlags :: a -> VkFlagsMType a
-
-        vkFlagsByteOffset :: a -> Int
-
-        readVkFlags :: Ptr a -> IO (VkFlagsMType a)
-
-        writeVkFlags :: Ptr a -> VkFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'flags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFlags a
-
-class HasVkFloat32Array a where
-        type VkFloat32ArrayMType a :: *
-
-        vkFloat32Array :: a -> Int -> VkFloat32ArrayMType a
-
-        vkFloat32ArrayByteOffset :: a -> Int
-
-        readVkFloat32Array :: Ptr a -> Int -> IO (VkFloat32ArrayMType a)
-
-        writeVkFloat32Array ::
-                            Ptr a -> Int -> VkFloat32ArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'float32'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFloat32Array a
-
-class HasVkForceExplicitReconstruction a where
-        type VkForceExplicitReconstructionMType a :: *
-
-        vkForceExplicitReconstruction ::
-                                      a -> VkForceExplicitReconstructionMType a
-
-        vkForceExplicitReconstructionByteOffset :: a -> Int
-
-        readVkForceExplicitReconstruction ::
-                                          Ptr a -> IO (VkForceExplicitReconstructionMType a)
-
-        writeVkForceExplicitReconstruction ::
-                                           Ptr a -> VkForceExplicitReconstructionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'forceExplicitReconstruction'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkForceExplicitReconstruction a
-
-class HasVkFormat a where
-        type VkFormatMType a :: *
-
-        vkFormat :: a -> VkFormatMType a
-
-        vkFormatByteOffset :: a -> Int
-
-        readVkFormat :: Ptr a -> IO (VkFormatMType a)
-
-        writeVkFormat :: Ptr a -> VkFormatMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'format'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFormat a
-
-class HasVkFormatProperties a where
-        type VkFormatPropertiesMType a :: *
-
-        vkFormatProperties :: a -> VkFormatPropertiesMType a
-
-        vkFormatPropertiesByteOffset :: a -> Int
-
-        readVkFormatProperties :: Ptr a -> IO (VkFormatPropertiesMType a)
-
-        writeVkFormatProperties ::
-                                Ptr a -> VkFormatPropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'formatProperties'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFormatProperties a
-
-class HasVkFragmentStoresAndAtomics a where
-        type VkFragmentStoresAndAtomicsMType a :: *
-
-        vkFragmentStoresAndAtomics ::
-                                   a -> VkFragmentStoresAndAtomicsMType a
-
-        vkFragmentStoresAndAtomicsByteOffset :: a -> Int
-
-        readVkFragmentStoresAndAtomics ::
-                                       Ptr a -> IO (VkFragmentStoresAndAtomicsMType a)
-
-        writeVkFragmentStoresAndAtomics ::
-                                        Ptr a -> VkFragmentStoresAndAtomicsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'fragmentStoresAndAtomics'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFragmentStoresAndAtomics a
-
-class HasVkFramebuffer a where
-        type VkFramebufferMType a :: *
-
-        vkFramebuffer :: a -> VkFramebufferMType a
-
-        vkFramebufferByteOffset :: a -> Int
-
-        readVkFramebuffer :: Ptr a -> IO (VkFramebufferMType a)
-
-        writeVkFramebuffer :: Ptr a -> VkFramebufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'framebuffer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFramebuffer a
-
-class HasVkFramebufferColorSampleCounts a where
-        type VkFramebufferColorSampleCountsMType a :: *
-
-        vkFramebufferColorSampleCounts ::
-                                       a -> VkFramebufferColorSampleCountsMType a
-
-        vkFramebufferColorSampleCountsByteOffset :: a -> Int
-
-        readVkFramebufferColorSampleCounts ::
-                                           Ptr a -> IO (VkFramebufferColorSampleCountsMType a)
-
-        writeVkFramebufferColorSampleCounts ::
-                                            Ptr a -> VkFramebufferColorSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'framebufferColorSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFramebufferColorSampleCounts a
-
-class HasVkFramebufferDepthSampleCounts a where
-        type VkFramebufferDepthSampleCountsMType a :: *
-
-        vkFramebufferDepthSampleCounts ::
-                                       a -> VkFramebufferDepthSampleCountsMType a
-
-        vkFramebufferDepthSampleCountsByteOffset :: a -> Int
-
-        readVkFramebufferDepthSampleCounts ::
-                                           Ptr a -> IO (VkFramebufferDepthSampleCountsMType a)
-
-        writeVkFramebufferDepthSampleCounts ::
-                                            Ptr a -> VkFramebufferDepthSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'framebufferDepthSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFramebufferDepthSampleCounts a
-
-class HasVkFramebufferNoAttachmentsSampleCounts a where
-        type VkFramebufferNoAttachmentsSampleCountsMType a :: *
-
-        vkFramebufferNoAttachmentsSampleCounts ::
-                                               a -> VkFramebufferNoAttachmentsSampleCountsMType a
-
-        vkFramebufferNoAttachmentsSampleCountsByteOffset :: a -> Int
-
-        readVkFramebufferNoAttachmentsSampleCounts ::
-                                                   Ptr a ->
-                                                     IO
-                                                       (VkFramebufferNoAttachmentsSampleCountsMType
-                                                          a)
-
-        writeVkFramebufferNoAttachmentsSampleCounts ::
-                                                    Ptr a ->
-                                                      VkFramebufferNoAttachmentsSampleCountsMType a
-                                                        -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'framebufferNoAttachmentsSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFramebufferNoAttachmentsSampleCounts a
-
-class HasVkFramebufferStencilSampleCounts a where
-        type VkFramebufferStencilSampleCountsMType a :: *
-
-        vkFramebufferStencilSampleCounts ::
-                                         a -> VkFramebufferStencilSampleCountsMType a
-
-        vkFramebufferStencilSampleCountsByteOffset :: a -> Int
-
-        readVkFramebufferStencilSampleCounts ::
-                                             Ptr a -> IO (VkFramebufferStencilSampleCountsMType a)
-
-        writeVkFramebufferStencilSampleCounts ::
-                                              Ptr a ->
-                                                VkFramebufferStencilSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'framebufferStencilSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFramebufferStencilSampleCounts a
-
-class HasVkFront a where
-        type VkFrontMType a :: *
-
-        vkFront :: a -> VkFrontMType a
-
-        vkFrontByteOffset :: a -> Int
-
-        readVkFront :: Ptr a -> IO (VkFrontMType a)
-
-        writeVkFront :: Ptr a -> VkFrontMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'front'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFront a
-
-class HasVkFrontFace a where
-        type VkFrontFaceMType a :: *
-
-        vkFrontFace :: a -> VkFrontFaceMType a
-
-        vkFrontFaceByteOffset :: a -> Int
-
-        readVkFrontFace :: Ptr a -> IO (VkFrontFaceMType a)
-
-        writeVkFrontFace :: Ptr a -> VkFrontFaceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'frontFace'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFrontFace a
-
-class HasVkFullDrawIndexUint32 a where
-        type VkFullDrawIndexUint32MType a :: *
-
-        vkFullDrawIndexUint32 :: a -> VkFullDrawIndexUint32MType a
-
-        vkFullDrawIndexUint32ByteOffset :: a -> Int
-
-        readVkFullDrawIndexUint32 ::
-                                  Ptr a -> IO (VkFullDrawIndexUint32MType a)
-
-        writeVkFullDrawIndexUint32 ::
-                                   Ptr a -> VkFullDrawIndexUint32MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'fullDrawIndexUint32'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFullDrawIndexUint32 a
-
-class HasVkFullyCoveredFragmentShaderInputVariable a where
-        type VkFullyCoveredFragmentShaderInputVariableMType a :: *
-
-        vkFullyCoveredFragmentShaderInputVariable ::
-                                                  a ->
-                                                    VkFullyCoveredFragmentShaderInputVariableMType a
-
-        vkFullyCoveredFragmentShaderInputVariableByteOffset :: a -> Int
-
-        readVkFullyCoveredFragmentShaderInputVariable ::
-                                                      Ptr a ->
-                                                        IO
-                                                          (VkFullyCoveredFragmentShaderInputVariableMType
-                                                             a)
-
-        writeVkFullyCoveredFragmentShaderInputVariable ::
-                                                       Ptr a ->
-                                                         VkFullyCoveredFragmentShaderInputVariableMType
-                                                           a
-                                                           -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'fullyCoveredFragmentShaderInputVariable'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkFullyCoveredFragmentShaderInputVariable a
-
-class HasVkG a where
-        type VkGMType a :: *
-
-        vkG :: a -> VkGMType a
-
-        vkGByteOffset :: a -> Int
-
-        readVkG :: Ptr a -> IO (VkGMType a)
-
-        writeVkG :: Ptr a -> VkGMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'g'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkG a
-
-class HasVkGeometryShader a where
-        type VkGeometryShaderMType a :: *
-
-        vkGeometryShader :: a -> VkGeometryShaderMType a
-
-        vkGeometryShaderByteOffset :: a -> Int
-
-        readVkGeometryShader :: Ptr a -> IO (VkGeometryShaderMType a)
-
-        writeVkGeometryShader :: Ptr a -> VkGeometryShaderMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'geometryShader'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkGeometryShader a
-
-class HasVkGlobalAlpha a where
-        type VkGlobalAlphaMType a :: *
-
-        vkGlobalAlpha :: a -> VkGlobalAlphaMType a
-
-        vkGlobalAlphaByteOffset :: a -> Int
-
-        readVkGlobalAlpha :: Ptr a -> IO (VkGlobalAlphaMType a)
-
-        writeVkGlobalAlpha :: Ptr a -> VkGlobalAlphaMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'globalAlpha'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkGlobalAlpha a
-
-class HasVkGlobalPriority a where
-        type VkGlobalPriorityMType a :: *
-
-        vkGlobalPriority :: a -> VkGlobalPriorityMType a
-
-        vkGlobalPriorityByteOffset :: a -> Int
-
-        readVkGlobalPriority :: Ptr a -> IO (VkGlobalPriorityMType a)
-
-        writeVkGlobalPriority :: Ptr a -> VkGlobalPriorityMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'globalPriority'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkGlobalPriority a
-
-class HasVkHandle a where
-        type VkHandleMType a :: *
-
-        vkHandle :: a -> VkHandleMType a
-
-        vkHandleByteOffset :: a -> Int
-
-        readVkHandle :: Ptr a -> IO (VkHandleMType a)
-
-        writeVkHandle :: Ptr a -> VkHandleMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'handle'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHandle a
-
-class HasVkHandleType a where
-        type VkHandleTypeMType a :: *
-
-        vkHandleType :: a -> VkHandleTypeMType a
-
-        vkHandleTypeByteOffset :: a -> Int
-
-        readVkHandleType :: Ptr a -> IO (VkHandleTypeMType a)
-
-        writeVkHandleType :: Ptr a -> VkHandleTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'handleType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHandleType a
-
-class HasVkHandleTypes a where
-        type VkHandleTypesMType a :: *
-
-        vkHandleTypes :: a -> VkHandleTypesMType a
-
-        vkHandleTypesByteOffset :: a -> Int
-
-        readVkHandleTypes :: Ptr a -> IO (VkHandleTypesMType a)
-
-        writeVkHandleTypes :: Ptr a -> VkHandleTypesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'handleTypes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHandleTypes a
-
-class HasVkHeapIndex a where
-        type VkHeapIndexMType a :: *
-
-        vkHeapIndex :: a -> VkHeapIndexMType a
-
-        vkHeapIndexByteOffset :: a -> Int
-
-        readVkHeapIndex :: Ptr a -> IO (VkHeapIndexMType a)
-
-        writeVkHeapIndex :: Ptr a -> VkHeapIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'heapIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHeapIndex a
-
-class HasVkHeight a where
-        type VkHeightMType a :: *
-
-        vkHeight :: a -> VkHeightMType a
-
-        vkHeightByteOffset :: a -> Int
-
-        readVkHeight :: Ptr a -> IO (VkHeightMType a)
-
-        writeVkHeight :: Ptr a -> VkHeightMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'height'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHeight a
-
-class HasVkHinstance a where
-        type VkHinstanceMType a :: *
-
-        vkHinstance :: a -> VkHinstanceMType a
-
-        vkHinstanceByteOffset :: a -> Int
-
-        readVkHinstance :: Ptr a -> IO (VkHinstanceMType a)
-
-        writeVkHinstance :: Ptr a -> VkHinstanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'hinstance'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHinstance a
-
-class HasVkHwnd a where
-        type VkHwndMType a :: *
-
-        vkHwnd :: a -> VkHwndMType a
-
-        vkHwndByteOffset :: a -> Int
-
-        readVkHwnd :: Ptr a -> IO (VkHwndMType a)
-
-        writeVkHwnd :: Ptr a -> VkHwndMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'hwnd'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkHwnd a
-
-class HasVkImage a where
-        type VkImageMType a :: *
-
-        vkImage :: a -> VkImageMType a
-
-        vkImageByteOffset :: a -> Int
-
-        readVkImage :: Ptr a -> IO (VkImageMType a)
-
-        writeVkImage :: Ptr a -> VkImageMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'image'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImage a
-
-class HasVkImageArrayLayers a where
-        type VkImageArrayLayersMType a :: *
-
-        vkImageArrayLayers :: a -> VkImageArrayLayersMType a
-
-        vkImageArrayLayersByteOffset :: a -> Int
-
-        readVkImageArrayLayers :: Ptr a -> IO (VkImageArrayLayersMType a)
-
-        writeVkImageArrayLayers ::
-                                Ptr a -> VkImageArrayLayersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageArrayLayers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageArrayLayers a
-
-class HasVkImageBindCount a where
-        type VkImageBindCountMType a :: *
-
-        vkImageBindCount :: a -> VkImageBindCountMType a
-
-        vkImageBindCountByteOffset :: a -> Int
-
-        readVkImageBindCount :: Ptr a -> IO (VkImageBindCountMType a)
-
-        writeVkImageBindCount :: Ptr a -> VkImageBindCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageBindCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageBindCount a
-
-class HasVkImageColorSpace a where
-        type VkImageColorSpaceMType a :: *
-
-        vkImageColorSpace :: a -> VkImageColorSpaceMType a
-
-        vkImageColorSpaceByteOffset :: a -> Int
-
-        readVkImageColorSpace :: Ptr a -> IO (VkImageColorSpaceMType a)
-
-        writeVkImageColorSpace ::
-                               Ptr a -> VkImageColorSpaceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageColorSpace'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageColorSpace a
-
-class HasVkImageCubeArray a where
-        type VkImageCubeArrayMType a :: *
-
-        vkImageCubeArray :: a -> VkImageCubeArrayMType a
-
-        vkImageCubeArrayByteOffset :: a -> Int
-
-        readVkImageCubeArray :: Ptr a -> IO (VkImageCubeArrayMType a)
-
-        writeVkImageCubeArray :: Ptr a -> VkImageCubeArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageCubeArray'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageCubeArray a
-
-class HasVkImageExtent a where
-        type VkImageExtentMType a :: *
-
-        vkImageExtent :: a -> VkImageExtentMType a
-
-        vkImageExtentByteOffset :: a -> Int
-
-        readVkImageExtent :: Ptr a -> IO (VkImageExtentMType a)
-
-        writeVkImageExtent :: Ptr a -> VkImageExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageExtent a
-
-class HasVkImageFormat a where
-        type VkImageFormatMType a :: *
-
-        vkImageFormat :: a -> VkImageFormatMType a
-
-        vkImageFormatByteOffset :: a -> Int
-
-        readVkImageFormat :: Ptr a -> IO (VkImageFormatMType a)
-
-        writeVkImageFormat :: Ptr a -> VkImageFormatMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageFormat'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageFormat a
-
-class HasVkImageFormatProperties a where
-        type VkImageFormatPropertiesMType a :: *
-
-        vkImageFormatProperties :: a -> VkImageFormatPropertiesMType a
-
-        vkImageFormatPropertiesByteOffset :: a -> Int
-
-        readVkImageFormatProperties ::
-                                    Ptr a -> IO (VkImageFormatPropertiesMType a)
-
-        writeVkImageFormatProperties ::
-                                     Ptr a -> VkImageFormatPropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageFormatProperties'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageFormatProperties a
-
-class HasVkImageGranularity a where
-        type VkImageGranularityMType a :: *
-
-        vkImageGranularity :: a -> VkImageGranularityMType a
-
-        vkImageGranularityByteOffset :: a -> Int
-
-        readVkImageGranularity :: Ptr a -> IO (VkImageGranularityMType a)
-
-        writeVkImageGranularity ::
-                                Ptr a -> VkImageGranularityMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageGranularity'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageGranularity a
-
-class HasVkImageIndex a where
-        type VkImageIndexMType a :: *
-
-        vkImageIndex :: a -> VkImageIndexMType a
-
-        vkImageIndexByteOffset :: a -> Int
-
-        readVkImageIndex :: Ptr a -> IO (VkImageIndexMType a)
-
-        writeVkImageIndex :: Ptr a -> VkImageIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageIndex a
-
-class HasVkImageLayout a where
-        type VkImageLayoutMType a :: *
-
-        vkImageLayout :: a -> VkImageLayoutMType a
-
-        vkImageLayoutByteOffset :: a -> Int
-
-        readVkImageLayout :: Ptr a -> IO (VkImageLayoutMType a)
-
-        writeVkImageLayout :: Ptr a -> VkImageLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageLayout a
-
-class HasVkImageMipTailFirstLod a where
-        type VkImageMipTailFirstLodMType a :: *
-
-        vkImageMipTailFirstLod :: a -> VkImageMipTailFirstLodMType a
-
-        vkImageMipTailFirstLodByteOffset :: a -> Int
-
-        readVkImageMipTailFirstLod ::
-                                   Ptr a -> IO (VkImageMipTailFirstLodMType a)
-
-        writeVkImageMipTailFirstLod ::
-                                    Ptr a -> VkImageMipTailFirstLodMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageMipTailFirstLod'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageMipTailFirstLod a
-
-class HasVkImageMipTailOffset a where
-        type VkImageMipTailOffsetMType a :: *
-
-        vkImageMipTailOffset :: a -> VkImageMipTailOffsetMType a
-
-        vkImageMipTailOffsetByteOffset :: a -> Int
-
-        readVkImageMipTailOffset ::
-                                 Ptr a -> IO (VkImageMipTailOffsetMType a)
-
-        writeVkImageMipTailOffset ::
-                                  Ptr a -> VkImageMipTailOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageMipTailOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageMipTailOffset a
-
-class HasVkImageMipTailSize a where
-        type VkImageMipTailSizeMType a :: *
-
-        vkImageMipTailSize :: a -> VkImageMipTailSizeMType a
-
-        vkImageMipTailSizeByteOffset :: a -> Int
-
-        readVkImageMipTailSize :: Ptr a -> IO (VkImageMipTailSizeMType a)
-
-        writeVkImageMipTailSize ::
-                                Ptr a -> VkImageMipTailSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageMipTailSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageMipTailSize a
-
-class HasVkImageMipTailStride a where
-        type VkImageMipTailStrideMType a :: *
-
-        vkImageMipTailStride :: a -> VkImageMipTailStrideMType a
-
-        vkImageMipTailStrideByteOffset :: a -> Int
-
-        readVkImageMipTailStride ::
-                                 Ptr a -> IO (VkImageMipTailStrideMType a)
-
-        writeVkImageMipTailStride ::
-                                  Ptr a -> VkImageMipTailStrideMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageMipTailStride'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageMipTailStride a
-
-class HasVkImageOffset a where
-        type VkImageOffsetMType a :: *
-
-        vkImageOffset :: a -> VkImageOffsetMType a
-
-        vkImageOffsetByteOffset :: a -> Int
-
-        readVkImageOffset :: Ptr a -> IO (VkImageOffsetMType a)
-
-        writeVkImageOffset :: Ptr a -> VkImageOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageOffset a
-
-class HasVkImageOpaqueBindCount a where
-        type VkImageOpaqueBindCountMType a :: *
-
-        vkImageOpaqueBindCount :: a -> VkImageOpaqueBindCountMType a
-
-        vkImageOpaqueBindCountByteOffset :: a -> Int
-
-        readVkImageOpaqueBindCount ::
-                                   Ptr a -> IO (VkImageOpaqueBindCountMType a)
-
-        writeVkImageOpaqueBindCount ::
-                                    Ptr a -> VkImageOpaqueBindCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageOpaqueBindCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageOpaqueBindCount a
-
-class HasVkImageSharingMode a where
-        type VkImageSharingModeMType a :: *
-
-        vkImageSharingMode :: a -> VkImageSharingModeMType a
-
-        vkImageSharingModeByteOffset :: a -> Int
-
-        readVkImageSharingMode :: Ptr a -> IO (VkImageSharingModeMType a)
-
-        writeVkImageSharingMode ::
-                                Ptr a -> VkImageSharingModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageSharingMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageSharingMode a
-
-class HasVkImageSubresource a where
-        type VkImageSubresourceMType a :: *
-
-        vkImageSubresource :: a -> VkImageSubresourceMType a
-
-        vkImageSubresourceByteOffset :: a -> Int
-
-        readVkImageSubresource :: Ptr a -> IO (VkImageSubresourceMType a)
-
-        writeVkImageSubresource ::
-                                Ptr a -> VkImageSubresourceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageSubresource'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageSubresource a
-
-class HasVkImageType a where
-        type VkImageTypeMType a :: *
-
-        vkImageType :: a -> VkImageTypeMType a
-
-        vkImageTypeByteOffset :: a -> Int
-
-        readVkImageType :: Ptr a -> IO (VkImageTypeMType a)
-
-        writeVkImageType :: Ptr a -> VkImageTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageType a
-
-class HasVkImageUsage a where
-        type VkImageUsageMType a :: *
-
-        vkImageUsage :: a -> VkImageUsageMType a
-
-        vkImageUsageByteOffset :: a -> Int
-
-        readVkImageUsage :: Ptr a -> IO (VkImageUsageMType a)
-
-        writeVkImageUsage :: Ptr a -> VkImageUsageMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageUsage'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageUsage a
-
-class HasVkImageView a where
-        type VkImageViewMType a :: *
-
-        vkImageView :: a -> VkImageViewMType a
-
-        vkImageViewByteOffset :: a -> Int
-
-        readVkImageView :: Ptr a -> IO (VkImageViewMType a)
-
-        writeVkImageView :: Ptr a -> VkImageViewMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'imageView'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImageView a
-
-class HasVkImplementationVersion a where
-        type VkImplementationVersionMType a :: *
-
-        vkImplementationVersion :: a -> VkImplementationVersionMType a
-
-        vkImplementationVersionByteOffset :: a -> Int
-
-        readVkImplementationVersion ::
-                                    Ptr a -> IO (VkImplementationVersionMType a)
-
-        writeVkImplementationVersion ::
-                                     Ptr a -> VkImplementationVersionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'implementationVersion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkImplementationVersion a
-
-class HasVkIndependentBlend a where
-        type VkIndependentBlendMType a :: *
-
-        vkIndependentBlend :: a -> VkIndependentBlendMType a
-
-        vkIndependentBlendByteOffset :: a -> Int
-
-        readVkIndependentBlend :: Ptr a -> IO (VkIndependentBlendMType a)
-
-        writeVkIndependentBlend ::
-                                Ptr a -> VkIndependentBlendMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'independentBlend'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkIndependentBlend a
-
-class HasVkIndexCount a where
-        type VkIndexCountMType a :: *
-
-        vkIndexCount :: a -> VkIndexCountMType a
-
-        vkIndexCountByteOffset :: a -> Int
-
-        readVkIndexCount :: Ptr a -> IO (VkIndexCountMType a)
-
-        writeVkIndexCount :: Ptr a -> VkIndexCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'indexCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkIndexCount a
-
-class HasVkIndexType a where
-        type VkIndexTypeMType a :: *
-
-        vkIndexType :: a -> VkIndexTypeMType a
-
-        vkIndexTypeByteOffset :: a -> Int
-
-        readVkIndexType :: Ptr a -> IO (VkIndexTypeMType a)
-
-        writeVkIndexType :: Ptr a -> VkIndexTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'indexType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkIndexType a
-
-class HasVkIndirectCommandsLayout a where
-        type VkIndirectCommandsLayoutMType a :: *
-
-        vkIndirectCommandsLayout :: a -> VkIndirectCommandsLayoutMType a
-
-        vkIndirectCommandsLayoutByteOffset :: a -> Int
-
-        readVkIndirectCommandsLayout ::
-                                     Ptr a -> IO (VkIndirectCommandsLayoutMType a)
-
-        writeVkIndirectCommandsLayout ::
-                                      Ptr a -> VkIndirectCommandsLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'indirectCommandsLayout'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkIndirectCommandsLayout a
-
-class HasVkIndirectCommandsTokenCount a where
-        type VkIndirectCommandsTokenCountMType a :: *
-
-        vkIndirectCommandsTokenCount ::
-                                     a -> VkIndirectCommandsTokenCountMType a
-
-        vkIndirectCommandsTokenCountByteOffset :: a -> Int
-
-        readVkIndirectCommandsTokenCount ::
-                                         Ptr a -> IO (VkIndirectCommandsTokenCountMType a)
-
-        writeVkIndirectCommandsTokenCount ::
-                                          Ptr a -> VkIndirectCommandsTokenCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'indirectCommandsTokenCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkIndirectCommandsTokenCount a
-
-class HasVkInheritedQueries a where
-        type VkInheritedQueriesMType a :: *
-
-        vkInheritedQueries :: a -> VkInheritedQueriesMType a
-
-        vkInheritedQueriesByteOffset :: a -> Int
-
-        readVkInheritedQueries :: Ptr a -> IO (VkInheritedQueriesMType a)
-
-        writeVkInheritedQueries ::
-                                Ptr a -> VkInheritedQueriesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'inheritedQueries'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInheritedQueries a
-
-class HasVkInitialDataSize a where
-        type VkInitialDataSizeMType a :: *
-
-        vkInitialDataSize :: a -> VkInitialDataSizeMType a
-
-        vkInitialDataSizeByteOffset :: a -> Int
-
-        readVkInitialDataSize :: Ptr a -> IO (VkInitialDataSizeMType a)
-
-        writeVkInitialDataSize ::
-                               Ptr a -> VkInitialDataSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'initialDataSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInitialDataSize a
-
-class HasVkInitialLayout a where
-        type VkInitialLayoutMType a :: *
-
-        vkInitialLayout :: a -> VkInitialLayoutMType a
-
-        vkInitialLayoutByteOffset :: a -> Int
-
-        readVkInitialLayout :: Ptr a -> IO (VkInitialLayoutMType a)
-
-        writeVkInitialLayout :: Ptr a -> VkInitialLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'initialLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInitialLayout a
-
-class HasVkInputAttachmentCount a where
-        type VkInputAttachmentCountMType a :: *
-
-        vkInputAttachmentCount :: a -> VkInputAttachmentCountMType a
-
-        vkInputAttachmentCountByteOffset :: a -> Int
-
-        readVkInputAttachmentCount ::
-                                   Ptr a -> IO (VkInputAttachmentCountMType a)
-
-        writeVkInputAttachmentCount ::
-                                    Ptr a -> VkInputAttachmentCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'inputAttachmentCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInputAttachmentCount a
-
-class HasVkInputAttachmentIndex a where
-        type VkInputAttachmentIndexMType a :: *
-
-        vkInputAttachmentIndex :: a -> VkInputAttachmentIndexMType a
-
-        vkInputAttachmentIndexByteOffset :: a -> Int
-
-        readVkInputAttachmentIndex ::
-                                   Ptr a -> IO (VkInputAttachmentIndexMType a)
-
-        writeVkInputAttachmentIndex ::
-                                    Ptr a -> VkInputAttachmentIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'inputAttachmentIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInputAttachmentIndex a
-
-class HasVkInputRate a where
-        type VkInputRateMType a :: *
-
-        vkInputRate :: a -> VkInputRateMType a
-
-        vkInputRateByteOffset :: a -> Int
-
-        readVkInputRate :: Ptr a -> IO (VkInputRateMType a)
-
-        writeVkInputRate :: Ptr a -> VkInputRateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'inputRate'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInputRate a
-
-class HasVkInstanceCount a where
-        type VkInstanceCountMType a :: *
-
-        vkInstanceCount :: a -> VkInstanceCountMType a
-
-        vkInstanceCountByteOffset :: a -> Int
-
-        readVkInstanceCount :: Ptr a -> IO (VkInstanceCountMType a)
-
-        writeVkInstanceCount :: Ptr a -> VkInstanceCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'instanceCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInstanceCount a
-
-class HasVkInt32Array a where
-        type VkInt32ArrayMType a :: *
-
-        vkInt32Array :: a -> Int -> VkInt32ArrayMType a
-
-        vkInt32ArrayByteOffset :: a -> Int
-
-        readVkInt32Array :: Ptr a -> Int -> IO (VkInt32ArrayMType a)
-
-        writeVkInt32Array :: Ptr a -> Int -> VkInt32ArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'int32'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkInt32Array a
-
-class HasVkLargePoints a where
-        type VkLargePointsMType a :: *
-
-        vkLargePoints :: a -> VkLargePointsMType a
-
-        vkLargePointsByteOffset :: a -> Int
-
-        readVkLargePoints :: Ptr a -> IO (VkLargePointsMType a)
-
-        writeVkLargePoints :: Ptr a -> VkLargePointsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'largePoints'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLargePoints a
-
-class HasVkLayer a where
-        type VkLayerMType a :: *
-
-        vkLayer :: a -> VkLayerMType a
-
-        vkLayerByteOffset :: a -> Int
-
-        readVkLayer :: Ptr a -> IO (VkLayerMType a)
-
-        writeVkLayer :: Ptr a -> VkLayerMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'layer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLayer a
-
-class HasVkLayerCount a where
-        type VkLayerCountMType a :: *
-
-        vkLayerCount :: a -> VkLayerCountMType a
-
-        vkLayerCountByteOffset :: a -> Int
-
-        readVkLayerCount :: Ptr a -> IO (VkLayerCountMType a)
-
-        writeVkLayerCount :: Ptr a -> VkLayerCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'layerCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLayerCount a
-
-class HasVkLayerNameArray a where
-        type VkLayerNameArrayMType a :: *
-
-        vkLayerNameArray :: a -> Int -> VkLayerNameArrayMType a
-
-        vkLayerNameArrayByteOffset :: a -> Int
-
-        readVkLayerNameArray ::
-                             Ptr a -> Int -> IO (VkLayerNameArrayMType a)
-
-        writeVkLayerNameArray ::
-                              Ptr a -> Int -> VkLayerNameArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'layerName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLayerNameArray a
-
-class HasVkLayers a where
-        type VkLayersMType a :: *
-
-        vkLayers :: a -> VkLayersMType a
-
-        vkLayersByteOffset :: a -> Int
-
-        readVkLayers :: Ptr a -> IO (VkLayersMType a)
-
-        writeVkLayers :: Ptr a -> VkLayersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'layers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLayers a
-
-class HasVkLayout a where
-        type VkLayoutMType a :: *
-
-        vkLayout :: a -> VkLayoutMType a
-
-        vkLayoutByteOffset :: a -> Int
-
-        readVkLayout :: Ptr a -> IO (VkLayoutMType a)
-
-        writeVkLayout :: Ptr a -> VkLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'layout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLayout a
-
-class HasVkLdsSizePerLocalWorkGroup a where
-        type VkLdsSizePerLocalWorkGroupMType a :: *
-
-        vkLdsSizePerLocalWorkGroup ::
-                                   a -> VkLdsSizePerLocalWorkGroupMType a
-
-        vkLdsSizePerLocalWorkGroupByteOffset :: a -> Int
-
-        readVkLdsSizePerLocalWorkGroup ::
-                                       Ptr a -> IO (VkLdsSizePerLocalWorkGroupMType a)
-
-        writeVkLdsSizePerLocalWorkGroup ::
-                                        Ptr a -> VkLdsSizePerLocalWorkGroupMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ldsSizePerLocalWorkGroup'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLdsSizePerLocalWorkGroup a
-
-class HasVkLdsUsageSizeInBytes a where
-        type VkLdsUsageSizeInBytesMType a :: *
-
-        vkLdsUsageSizeInBytes :: a -> VkLdsUsageSizeInBytesMType a
-
-        vkLdsUsageSizeInBytesByteOffset :: a -> Int
-
-        readVkLdsUsageSizeInBytes ::
-                                  Ptr a -> IO (VkLdsUsageSizeInBytesMType a)
-
-        writeVkLdsUsageSizeInBytes ::
-                                   Ptr a -> VkLdsUsageSizeInBytesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ldsUsageSizeInBytes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLdsUsageSizeInBytes a
-
-class HasVkLevel a where
-        type VkLevelMType a :: *
-
-        vkLevel :: a -> VkLevelMType a
-
-        vkLevelByteOffset :: a -> Int
-
-        readVkLevel :: Ptr a -> IO (VkLevelMType a)
-
-        writeVkLevel :: Ptr a -> VkLevelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'level'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLevel a
-
-class HasVkLevelCount a where
-        type VkLevelCountMType a :: *
-
-        vkLevelCount :: a -> VkLevelCountMType a
-
-        vkLevelCountByteOffset :: a -> Int
-
-        readVkLevelCount :: Ptr a -> IO (VkLevelCountMType a)
-
-        writeVkLevelCount :: Ptr a -> VkLevelCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'levelCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLevelCount a
-
-class HasVkLimits a where
-        type VkLimitsMType a :: *
-
-        vkLimits :: a -> VkLimitsMType a
-
-        vkLimitsByteOffset :: a -> Int
-
-        readVkLimits :: Ptr a -> IO (VkLimitsMType a)
-
-        writeVkLimits :: Ptr a -> VkLimitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'limits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLimits a
-
-class HasVkLineWidth a where
-        type VkLineWidthMType a :: *
-
-        vkLineWidth :: a -> VkLineWidthMType a
-
-        vkLineWidthByteOffset :: a -> Int
-
-        readVkLineWidth :: Ptr a -> IO (VkLineWidthMType a)
-
-        writeVkLineWidth :: Ptr a -> VkLineWidthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'lineWidth'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLineWidth a
-
-class HasVkLineWidthGranularity a where
-        type VkLineWidthGranularityMType a :: *
-
-        vkLineWidthGranularity :: a -> VkLineWidthGranularityMType a
-
-        vkLineWidthGranularityByteOffset :: a -> Int
-
-        readVkLineWidthGranularity ::
-                                   Ptr a -> IO (VkLineWidthGranularityMType a)
-
-        writeVkLineWidthGranularity ::
-                                    Ptr a -> VkLineWidthGranularityMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'lineWidthGranularity'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLineWidthGranularity a
-
-class HasVkLineWidthRangeArray a where
-        type VkLineWidthRangeArrayMType a :: *
-
-        vkLineWidthRangeArray :: a -> Int -> VkLineWidthRangeArrayMType a
-
-        vkLineWidthRangeArrayByteOffset :: a -> Int
-
-        readVkLineWidthRangeArray ::
-                                  Ptr a -> Int -> IO (VkLineWidthRangeArrayMType a)
-
-        writeVkLineWidthRangeArray ::
-                                   Ptr a -> Int -> VkLineWidthRangeArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'lineWidthRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLineWidthRangeArray a
-
-class HasVkLinearTilingFeatures a where
-        type VkLinearTilingFeaturesMType a :: *
-
-        vkLinearTilingFeatures :: a -> VkLinearTilingFeaturesMType a
-
-        vkLinearTilingFeaturesByteOffset :: a -> Int
-
-        readVkLinearTilingFeatures ::
-                                   Ptr a -> IO (VkLinearTilingFeaturesMType a)
-
-        writeVkLinearTilingFeatures ::
-                                    Ptr a -> VkLinearTilingFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'linearTilingFeatures'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLinearTilingFeatures a
-
-class HasVkLoadOp a where
-        type VkLoadOpMType a :: *
-
-        vkLoadOp :: a -> VkLoadOpMType a
-
-        vkLoadOpByteOffset :: a -> Int
-
-        readVkLoadOp :: Ptr a -> IO (VkLoadOpMType a)
-
-        writeVkLoadOp :: Ptr a -> VkLoadOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'loadOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLoadOp a
-
-class HasVkLocation a where
-        type VkLocationMType a :: *
-
-        vkLocation :: a -> VkLocationMType a
-
-        vkLocationByteOffset :: a -> Int
-
-        readVkLocation :: Ptr a -> IO (VkLocationMType a)
-
-        writeVkLocation :: Ptr a -> VkLocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'location'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLocation a
-
-class HasVkLogicOp a where
-        type VkLogicOpMType a :: *
-
-        vkLogicOp :: a -> VkLogicOpMType a
-
-        vkLogicOpByteOffset :: a -> Int
-
-        readVkLogicOp :: Ptr a -> IO (VkLogicOpMType a)
-
-        writeVkLogicOp :: Ptr a -> VkLogicOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'logicOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLogicOp a
-
-class HasVkLogicOpEnable a where
-        type VkLogicOpEnableMType a :: *
-
-        vkLogicOpEnable :: a -> VkLogicOpEnableMType a
-
-        vkLogicOpEnableByteOffset :: a -> Int
-
-        readVkLogicOpEnable :: Ptr a -> IO (VkLogicOpEnableMType a)
-
-        writeVkLogicOpEnable :: Ptr a -> VkLogicOpEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'logicOpEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkLogicOpEnable a
-
-class HasVkMagFilter a where
-        type VkMagFilterMType a :: *
-
-        vkMagFilter :: a -> VkMagFilterMType a
-
-        vkMagFilterByteOffset :: a -> Int
-
-        readVkMagFilter :: Ptr a -> IO (VkMagFilterMType a)
-
-        writeVkMagFilter :: Ptr a -> VkMagFilterMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'magFilter'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMagFilter a
-
-class HasVkMapEntryCount a where
-        type VkMapEntryCountMType a :: *
-
-        vkMapEntryCount :: a -> VkMapEntryCountMType a
-
-        vkMapEntryCountByteOffset :: a -> Int
-
-        readVkMapEntryCount :: Ptr a -> IO (VkMapEntryCountMType a)
-
-        writeVkMapEntryCount :: Ptr a -> VkMapEntryCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mapEntryCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMapEntryCount a
-
-class HasVkMaxAnisotropy a where
-        type VkMaxAnisotropyMType a :: *
-
-        vkMaxAnisotropy :: a -> VkMaxAnisotropyMType a
-
-        vkMaxAnisotropyByteOffset :: a -> Int
-
-        readVkMaxAnisotropy :: Ptr a -> IO (VkMaxAnisotropyMType a)
-
-        writeVkMaxAnisotropy :: Ptr a -> VkMaxAnisotropyMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxAnisotropy'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxAnisotropy a
-
-class HasVkMaxArrayLayers a where
-        type VkMaxArrayLayersMType a :: *
-
-        vkMaxArrayLayers :: a -> VkMaxArrayLayersMType a
-
-        vkMaxArrayLayersByteOffset :: a -> Int
-
-        readVkMaxArrayLayers :: Ptr a -> IO (VkMaxArrayLayersMType a)
-
-        writeVkMaxArrayLayers :: Ptr a -> VkMaxArrayLayersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxArrayLayers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxArrayLayers a
-
-class HasVkMaxBoundDescriptorSets a where
-        type VkMaxBoundDescriptorSetsMType a :: *
-
-        vkMaxBoundDescriptorSets :: a -> VkMaxBoundDescriptorSetsMType a
-
-        vkMaxBoundDescriptorSetsByteOffset :: a -> Int
-
-        readVkMaxBoundDescriptorSets ::
-                                     Ptr a -> IO (VkMaxBoundDescriptorSetsMType a)
-
-        writeVkMaxBoundDescriptorSets ::
-                                      Ptr a -> VkMaxBoundDescriptorSetsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxBoundDescriptorSets'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxBoundDescriptorSets a
-
-class HasVkMaxClipDistances a where
-        type VkMaxClipDistancesMType a :: *
-
-        vkMaxClipDistances :: a -> VkMaxClipDistancesMType a
-
-        vkMaxClipDistancesByteOffset :: a -> Int
-
-        readVkMaxClipDistances :: Ptr a -> IO (VkMaxClipDistancesMType a)
-
-        writeVkMaxClipDistances ::
-                                Ptr a -> VkMaxClipDistancesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxClipDistances'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxClipDistances a
-
-class HasVkMaxColorAttachments a where
-        type VkMaxColorAttachmentsMType a :: *
-
-        vkMaxColorAttachments :: a -> VkMaxColorAttachmentsMType a
-
-        vkMaxColorAttachmentsByteOffset :: a -> Int
-
-        readVkMaxColorAttachments ::
-                                  Ptr a -> IO (VkMaxColorAttachmentsMType a)
-
-        writeVkMaxColorAttachments ::
-                                   Ptr a -> VkMaxColorAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxColorAttachments'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxColorAttachments a
-
-class HasVkMaxCombinedClipAndCullDistances a where
-        type VkMaxCombinedClipAndCullDistancesMType a :: *
-
-        vkMaxCombinedClipAndCullDistances ::
-                                          a -> VkMaxCombinedClipAndCullDistancesMType a
-
-        vkMaxCombinedClipAndCullDistancesByteOffset :: a -> Int
-
-        readVkMaxCombinedClipAndCullDistances ::
-                                              Ptr a -> IO (VkMaxCombinedClipAndCullDistancesMType a)
-
-        writeVkMaxCombinedClipAndCullDistances ::
-                                               Ptr a ->
-                                                 VkMaxCombinedClipAndCullDistancesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxCombinedClipAndCullDistances'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxCombinedClipAndCullDistances a
-
-class HasVkMaxComputeSharedMemorySize a where
-        type VkMaxComputeSharedMemorySizeMType a :: *
-
-        vkMaxComputeSharedMemorySize ::
-                                     a -> VkMaxComputeSharedMemorySizeMType a
-
-        vkMaxComputeSharedMemorySizeByteOffset :: a -> Int
-
-        readVkMaxComputeSharedMemorySize ::
-                                         Ptr a -> IO (VkMaxComputeSharedMemorySizeMType a)
-
-        writeVkMaxComputeSharedMemorySize ::
-                                          Ptr a -> VkMaxComputeSharedMemorySizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxComputeSharedMemorySize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxComputeSharedMemorySize a
-
-class HasVkMaxComputeWorkGroupCountArray a where
-        type VkMaxComputeWorkGroupCountArrayMType a :: *
-
-        vkMaxComputeWorkGroupCountArray ::
-                                        a -> Int -> VkMaxComputeWorkGroupCountArrayMType a
-
-        vkMaxComputeWorkGroupCountArrayByteOffset :: a -> Int
-
-        readVkMaxComputeWorkGroupCountArray ::
-                                            Ptr a ->
-                                              Int -> IO (VkMaxComputeWorkGroupCountArrayMType a)
-
-        writeVkMaxComputeWorkGroupCountArray ::
-                                             Ptr a ->
-                                               Int ->
-                                                 VkMaxComputeWorkGroupCountArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxComputeWorkGroupCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxComputeWorkGroupCountArray a
-
-class HasVkMaxComputeWorkGroupInvocations a where
-        type VkMaxComputeWorkGroupInvocationsMType a :: *
-
-        vkMaxComputeWorkGroupInvocations ::
-                                         a -> VkMaxComputeWorkGroupInvocationsMType a
-
-        vkMaxComputeWorkGroupInvocationsByteOffset :: a -> Int
-
-        readVkMaxComputeWorkGroupInvocations ::
-                                             Ptr a -> IO (VkMaxComputeWorkGroupInvocationsMType a)
-
-        writeVkMaxComputeWorkGroupInvocations ::
-                                              Ptr a ->
-                                                VkMaxComputeWorkGroupInvocationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxComputeWorkGroupInvocations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxComputeWorkGroupInvocations a
-
-class HasVkMaxComputeWorkGroupSizeArray a where
-        type VkMaxComputeWorkGroupSizeArrayMType a :: *
-
-        vkMaxComputeWorkGroupSizeArray ::
-                                       a -> Int -> VkMaxComputeWorkGroupSizeArrayMType a
-
-        vkMaxComputeWorkGroupSizeArrayByteOffset :: a -> Int
-
-        readVkMaxComputeWorkGroupSizeArray ::
-                                           Ptr a ->
-                                             Int -> IO (VkMaxComputeWorkGroupSizeArrayMType a)
-
-        writeVkMaxComputeWorkGroupSizeArray ::
-                                            Ptr a ->
-                                              Int -> VkMaxComputeWorkGroupSizeArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxComputeWorkGroupSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxComputeWorkGroupSizeArray a
-
-class HasVkMaxContentLightLevel a where
-        type VkMaxContentLightLevelMType a :: *
-
-        vkMaxContentLightLevel :: a -> VkMaxContentLightLevelMType a
-
-        vkMaxContentLightLevelByteOffset :: a -> Int
-
-        readVkMaxContentLightLevel ::
-                                   Ptr a -> IO (VkMaxContentLightLevelMType a)
-
-        writeVkMaxContentLightLevel ::
-                                    Ptr a -> VkMaxContentLightLevelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxContentLightLevel'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxContentLightLevel a
-
-class HasVkMaxCullDistances a where
-        type VkMaxCullDistancesMType a :: *
-
-        vkMaxCullDistances :: a -> VkMaxCullDistancesMType a
-
-        vkMaxCullDistancesByteOffset :: a -> Int
-
-        readVkMaxCullDistances :: Ptr a -> IO (VkMaxCullDistancesMType a)
-
-        writeVkMaxCullDistances ::
-                                Ptr a -> VkMaxCullDistancesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxCullDistances'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxCullDistances a
-
-class HasVkMaxDepth a where
-        type VkMaxDepthMType a :: *
-
-        vkMaxDepth :: a -> VkMaxDepthMType a
-
-        vkMaxDepthByteOffset :: a -> Int
-
-        readVkMaxDepth :: Ptr a -> IO (VkMaxDepthMType a)
-
-        writeVkMaxDepth :: Ptr a -> VkMaxDepthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDepth'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDepth a
-
-class HasVkMaxDepthBounds a where
-        type VkMaxDepthBoundsMType a :: *
-
-        vkMaxDepthBounds :: a -> VkMaxDepthBoundsMType a
-
-        vkMaxDepthBoundsByteOffset :: a -> Int
-
-        readVkMaxDepthBounds :: Ptr a -> IO (VkMaxDepthBoundsMType a)
-
-        writeVkMaxDepthBounds :: Ptr a -> VkMaxDepthBoundsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDepthBounds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDepthBounds a
-
-class HasVkMaxDescriptorSetInputAttachments a where
-        type VkMaxDescriptorSetInputAttachmentsMType a :: *
-
-        vkMaxDescriptorSetInputAttachments ::
-                                           a -> VkMaxDescriptorSetInputAttachmentsMType a
-
-        vkMaxDescriptorSetInputAttachmentsByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetInputAttachments ::
-                                               Ptr a ->
-                                                 IO (VkMaxDescriptorSetInputAttachmentsMType a)
-
-        writeVkMaxDescriptorSetInputAttachments ::
-                                                Ptr a ->
-                                                  VkMaxDescriptorSetInputAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetInputAttachments'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetInputAttachments a
-
-class HasVkMaxDescriptorSetSampledImages a where
-        type VkMaxDescriptorSetSampledImagesMType a :: *
-
-        vkMaxDescriptorSetSampledImages ::
-                                        a -> VkMaxDescriptorSetSampledImagesMType a
-
-        vkMaxDescriptorSetSampledImagesByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetSampledImages ::
-                                            Ptr a -> IO (VkMaxDescriptorSetSampledImagesMType a)
-
-        writeVkMaxDescriptorSetSampledImages ::
-                                             Ptr a ->
-                                               VkMaxDescriptorSetSampledImagesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetSampledImages'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetSampledImages a
-
-class HasVkMaxDescriptorSetSamplers a where
-        type VkMaxDescriptorSetSamplersMType a :: *
-
-        vkMaxDescriptorSetSamplers ::
-                                   a -> VkMaxDescriptorSetSamplersMType a
-
-        vkMaxDescriptorSetSamplersByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetSamplers ::
-                                       Ptr a -> IO (VkMaxDescriptorSetSamplersMType a)
-
-        writeVkMaxDescriptorSetSamplers ::
-                                        Ptr a -> VkMaxDescriptorSetSamplersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDescriptorSetSamplers'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetSamplers a
-
-class HasVkMaxDescriptorSetStorageBuffers a where
-        type VkMaxDescriptorSetStorageBuffersMType a :: *
-
-        vkMaxDescriptorSetStorageBuffers ::
-                                         a -> VkMaxDescriptorSetStorageBuffersMType a
-
-        vkMaxDescriptorSetStorageBuffersByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetStorageBuffers ::
-                                             Ptr a -> IO (VkMaxDescriptorSetStorageBuffersMType a)
-
-        writeVkMaxDescriptorSetStorageBuffers ::
-                                              Ptr a ->
-                                                VkMaxDescriptorSetStorageBuffersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetStorageBuffers'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetStorageBuffers a
-
-class HasVkMaxDescriptorSetStorageBuffersDynamic a where
-        type VkMaxDescriptorSetStorageBuffersDynamicMType a :: *
-
-        vkMaxDescriptorSetStorageBuffersDynamic ::
-                                                a -> VkMaxDescriptorSetStorageBuffersDynamicMType a
-
-        vkMaxDescriptorSetStorageBuffersDynamicByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetStorageBuffersDynamic ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkMaxDescriptorSetStorageBuffersDynamicMType
-                                                           a)
-
-        writeVkMaxDescriptorSetStorageBuffersDynamic ::
-                                                     Ptr a ->
-                                                       VkMaxDescriptorSetStorageBuffersDynamicMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetStorageBuffersDynamic'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetStorageBuffersDynamic a
-
-class HasVkMaxDescriptorSetStorageImages a where
-        type VkMaxDescriptorSetStorageImagesMType a :: *
-
-        vkMaxDescriptorSetStorageImages ::
-                                        a -> VkMaxDescriptorSetStorageImagesMType a
-
-        vkMaxDescriptorSetStorageImagesByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetStorageImages ::
-                                            Ptr a -> IO (VkMaxDescriptorSetStorageImagesMType a)
-
-        writeVkMaxDescriptorSetStorageImages ::
-                                             Ptr a ->
-                                               VkMaxDescriptorSetStorageImagesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetStorageImages'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetStorageImages a
-
-class HasVkMaxDescriptorSetUniformBuffers a where
-        type VkMaxDescriptorSetUniformBuffersMType a :: *
-
-        vkMaxDescriptorSetUniformBuffers ::
-                                         a -> VkMaxDescriptorSetUniformBuffersMType a
-
-        vkMaxDescriptorSetUniformBuffersByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetUniformBuffers ::
-                                             Ptr a -> IO (VkMaxDescriptorSetUniformBuffersMType a)
-
-        writeVkMaxDescriptorSetUniformBuffers ::
-                                              Ptr a ->
-                                                VkMaxDescriptorSetUniformBuffersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetUniformBuffers'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetUniformBuffers a
-
-class HasVkMaxDescriptorSetUniformBuffersDynamic a where
-        type VkMaxDescriptorSetUniformBuffersDynamicMType a :: *
-
-        vkMaxDescriptorSetUniformBuffersDynamic ::
-                                                a -> VkMaxDescriptorSetUniformBuffersDynamicMType a
-
-        vkMaxDescriptorSetUniformBuffersDynamicByteOffset :: a -> Int
-
-        readVkMaxDescriptorSetUniformBuffersDynamic ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkMaxDescriptorSetUniformBuffersDynamicMType
-                                                           a)
-
-        writeVkMaxDescriptorSetUniformBuffersDynamic ::
-                                                     Ptr a ->
-                                                       VkMaxDescriptorSetUniformBuffersDynamicMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxDescriptorSetUniformBuffersDynamic'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDescriptorSetUniformBuffersDynamic a
-
-class HasVkMaxDiscardRectangles a where
-        type VkMaxDiscardRectanglesMType a :: *
-
-        vkMaxDiscardRectangles :: a -> VkMaxDiscardRectanglesMType a
-
-        vkMaxDiscardRectanglesByteOffset :: a -> Int
-
-        readVkMaxDiscardRectangles ::
-                                   Ptr a -> IO (VkMaxDiscardRectanglesMType a)
-
-        writeVkMaxDiscardRectangles ::
-                                    Ptr a -> VkMaxDiscardRectanglesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDiscardRectangles'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDiscardRectangles a
-
-class HasVkMaxDrawIndexedIndexValue a where
-        type VkMaxDrawIndexedIndexValueMType a :: *
-
-        vkMaxDrawIndexedIndexValue ::
-                                   a -> VkMaxDrawIndexedIndexValueMType a
-
-        vkMaxDrawIndexedIndexValueByteOffset :: a -> Int
-
-        readVkMaxDrawIndexedIndexValue ::
-                                       Ptr a -> IO (VkMaxDrawIndexedIndexValueMType a)
-
-        writeVkMaxDrawIndexedIndexValue ::
-                                        Ptr a -> VkMaxDrawIndexedIndexValueMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDrawIndexedIndexValue'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDrawIndexedIndexValue a
-
-class HasVkMaxDrawIndirectCount a where
-        type VkMaxDrawIndirectCountMType a :: *
-
-        vkMaxDrawIndirectCount :: a -> VkMaxDrawIndirectCountMType a
-
-        vkMaxDrawIndirectCountByteOffset :: a -> Int
-
-        readVkMaxDrawIndirectCount ::
-                                   Ptr a -> IO (VkMaxDrawIndirectCountMType a)
-
-        writeVkMaxDrawIndirectCount ::
-                                    Ptr a -> VkMaxDrawIndirectCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDrawIndirectCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDrawIndirectCount a
-
-class HasVkMaxDstExtent a where
-        type VkMaxDstExtentMType a :: *
-
-        vkMaxDstExtent :: a -> VkMaxDstExtentMType a
-
-        vkMaxDstExtentByteOffset :: a -> Int
-
-        readVkMaxDstExtent :: Ptr a -> IO (VkMaxDstExtentMType a)
-
-        writeVkMaxDstExtent :: Ptr a -> VkMaxDstExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDstExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDstExtent a
-
-class HasVkMaxDstPosition a where
-        type VkMaxDstPositionMType a :: *
-
-        vkMaxDstPosition :: a -> VkMaxDstPositionMType a
-
-        vkMaxDstPositionByteOffset :: a -> Int
-
-        readVkMaxDstPosition :: Ptr a -> IO (VkMaxDstPositionMType a)
-
-        writeVkMaxDstPosition :: Ptr a -> VkMaxDstPositionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxDstPosition'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxDstPosition a
-
-class HasVkMaxExtent a where
-        type VkMaxExtentMType a :: *
-
-        vkMaxExtent :: a -> VkMaxExtentMType a
-
-        vkMaxExtentByteOffset :: a -> Int
-
-        readVkMaxExtent :: Ptr a -> IO (VkMaxExtentMType a)
-
-        writeVkMaxExtent :: Ptr a -> VkMaxExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxExtent a
-
-class HasVkMaxExtraPrimitiveOverestimationSize a where
-        type VkMaxExtraPrimitiveOverestimationSizeMType a :: *
-
-        vkMaxExtraPrimitiveOverestimationSize ::
-                                              a -> VkMaxExtraPrimitiveOverestimationSizeMType a
-
-        vkMaxExtraPrimitiveOverestimationSizeByteOffset :: a -> Int
-
-        readVkMaxExtraPrimitiveOverestimationSize ::
-                                                  Ptr a ->
-                                                    IO
-                                                      (VkMaxExtraPrimitiveOverestimationSizeMType a)
-
-        writeVkMaxExtraPrimitiveOverestimationSize ::
-                                                   Ptr a ->
-                                                     VkMaxExtraPrimitiveOverestimationSizeMType a ->
-                                                       IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxExtraPrimitiveOverestimationSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxExtraPrimitiveOverestimationSize a
-
-class HasVkMaxFragmentCombinedOutputResources a where
-        type VkMaxFragmentCombinedOutputResourcesMType a :: *
-
-        vkMaxFragmentCombinedOutputResources ::
-                                             a -> VkMaxFragmentCombinedOutputResourcesMType a
-
-        vkMaxFragmentCombinedOutputResourcesByteOffset :: a -> Int
-
-        readVkMaxFragmentCombinedOutputResources ::
-                                                 Ptr a ->
-                                                   IO (VkMaxFragmentCombinedOutputResourcesMType a)
-
-        writeVkMaxFragmentCombinedOutputResources ::
-                                                  Ptr a ->
-                                                    VkMaxFragmentCombinedOutputResourcesMType a ->
-                                                      IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxFragmentCombinedOutputResources'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFragmentCombinedOutputResources a
-
-class HasVkMaxFragmentDualSrcAttachments a where
-        type VkMaxFragmentDualSrcAttachmentsMType a :: *
-
-        vkMaxFragmentDualSrcAttachments ::
-                                        a -> VkMaxFragmentDualSrcAttachmentsMType a
-
-        vkMaxFragmentDualSrcAttachmentsByteOffset :: a -> Int
-
-        readVkMaxFragmentDualSrcAttachments ::
-                                            Ptr a -> IO (VkMaxFragmentDualSrcAttachmentsMType a)
-
-        writeVkMaxFragmentDualSrcAttachments ::
-                                             Ptr a ->
-                                               VkMaxFragmentDualSrcAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxFragmentDualSrcAttachments'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFragmentDualSrcAttachments a
-
-class HasVkMaxFragmentInputComponents a where
-        type VkMaxFragmentInputComponentsMType a :: *
-
-        vkMaxFragmentInputComponents ::
-                                     a -> VkMaxFragmentInputComponentsMType a
-
-        vkMaxFragmentInputComponentsByteOffset :: a -> Int
-
-        readVkMaxFragmentInputComponents ::
-                                         Ptr a -> IO (VkMaxFragmentInputComponentsMType a)
-
-        writeVkMaxFragmentInputComponents ::
-                                          Ptr a -> VkMaxFragmentInputComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxFragmentInputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFragmentInputComponents a
-
-class HasVkMaxFragmentOutputAttachments a where
-        type VkMaxFragmentOutputAttachmentsMType a :: *
-
-        vkMaxFragmentOutputAttachments ::
-                                       a -> VkMaxFragmentOutputAttachmentsMType a
-
-        vkMaxFragmentOutputAttachmentsByteOffset :: a -> Int
-
-        readVkMaxFragmentOutputAttachments ::
-                                           Ptr a -> IO (VkMaxFragmentOutputAttachmentsMType a)
-
-        writeVkMaxFragmentOutputAttachments ::
-                                            Ptr a -> VkMaxFragmentOutputAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxFragmentOutputAttachments'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFragmentOutputAttachments a
-
-class HasVkMaxFrameAverageLightLevel a where
-        type VkMaxFrameAverageLightLevelMType a :: *
-
-        vkMaxFrameAverageLightLevel ::
-                                    a -> VkMaxFrameAverageLightLevelMType a
-
-        vkMaxFrameAverageLightLevelByteOffset :: a -> Int
-
-        readVkMaxFrameAverageLightLevel ::
-                                        Ptr a -> IO (VkMaxFrameAverageLightLevelMType a)
-
-        writeVkMaxFrameAverageLightLevel ::
-                                         Ptr a -> VkMaxFrameAverageLightLevelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxFrameAverageLightLevel'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFrameAverageLightLevel a
-
-class HasVkMaxFramebufferHeight a where
-        type VkMaxFramebufferHeightMType a :: *
-
-        vkMaxFramebufferHeight :: a -> VkMaxFramebufferHeightMType a
-
-        vkMaxFramebufferHeightByteOffset :: a -> Int
-
-        readVkMaxFramebufferHeight ::
-                                   Ptr a -> IO (VkMaxFramebufferHeightMType a)
-
-        writeVkMaxFramebufferHeight ::
-                                    Ptr a -> VkMaxFramebufferHeightMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxFramebufferHeight'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFramebufferHeight a
-
-class HasVkMaxFramebufferLayers a where
-        type VkMaxFramebufferLayersMType a :: *
-
-        vkMaxFramebufferLayers :: a -> VkMaxFramebufferLayersMType a
-
-        vkMaxFramebufferLayersByteOffset :: a -> Int
-
-        readVkMaxFramebufferLayers ::
-                                   Ptr a -> IO (VkMaxFramebufferLayersMType a)
-
-        writeVkMaxFramebufferLayers ::
-                                    Ptr a -> VkMaxFramebufferLayersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxFramebufferLayers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFramebufferLayers a
-
-class HasVkMaxFramebufferWidth a where
-        type VkMaxFramebufferWidthMType a :: *
-
-        vkMaxFramebufferWidth :: a -> VkMaxFramebufferWidthMType a
-
-        vkMaxFramebufferWidthByteOffset :: a -> Int
-
-        readVkMaxFramebufferWidth ::
-                                  Ptr a -> IO (VkMaxFramebufferWidthMType a)
-
-        writeVkMaxFramebufferWidth ::
-                                   Ptr a -> VkMaxFramebufferWidthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxFramebufferWidth'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxFramebufferWidth a
-
-class HasVkMaxGeometryInputComponents a where
-        type VkMaxGeometryInputComponentsMType a :: *
-
-        vkMaxGeometryInputComponents ::
-                                     a -> VkMaxGeometryInputComponentsMType a
-
-        vkMaxGeometryInputComponentsByteOffset :: a -> Int
-
-        readVkMaxGeometryInputComponents ::
-                                         Ptr a -> IO (VkMaxGeometryInputComponentsMType a)
-
-        writeVkMaxGeometryInputComponents ::
-                                          Ptr a -> VkMaxGeometryInputComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxGeometryInputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxGeometryInputComponents a
-
-class HasVkMaxGeometryOutputComponents a where
-        type VkMaxGeometryOutputComponentsMType a :: *
-
-        vkMaxGeometryOutputComponents ::
-                                      a -> VkMaxGeometryOutputComponentsMType a
-
-        vkMaxGeometryOutputComponentsByteOffset :: a -> Int
-
-        readVkMaxGeometryOutputComponents ::
-                                          Ptr a -> IO (VkMaxGeometryOutputComponentsMType a)
-
-        writeVkMaxGeometryOutputComponents ::
-                                           Ptr a -> VkMaxGeometryOutputComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxGeometryOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxGeometryOutputComponents a
-
-class HasVkMaxGeometryOutputVertices a where
-        type VkMaxGeometryOutputVerticesMType a :: *
-
-        vkMaxGeometryOutputVertices ::
-                                    a -> VkMaxGeometryOutputVerticesMType a
-
-        vkMaxGeometryOutputVerticesByteOffset :: a -> Int
-
-        readVkMaxGeometryOutputVertices ::
-                                        Ptr a -> IO (VkMaxGeometryOutputVerticesMType a)
-
-        writeVkMaxGeometryOutputVertices ::
-                                         Ptr a -> VkMaxGeometryOutputVerticesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxGeometryOutputVertices'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxGeometryOutputVertices a
-
-class HasVkMaxGeometryShaderInvocations a where
-        type VkMaxGeometryShaderInvocationsMType a :: *
-
-        vkMaxGeometryShaderInvocations ::
-                                       a -> VkMaxGeometryShaderInvocationsMType a
-
-        vkMaxGeometryShaderInvocationsByteOffset :: a -> Int
-
-        readVkMaxGeometryShaderInvocations ::
-                                           Ptr a -> IO (VkMaxGeometryShaderInvocationsMType a)
-
-        writeVkMaxGeometryShaderInvocations ::
-                                            Ptr a -> VkMaxGeometryShaderInvocationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxGeometryShaderInvocations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxGeometryShaderInvocations a
-
-class HasVkMaxGeometryTotalOutputComponents a where
-        type VkMaxGeometryTotalOutputComponentsMType a :: *
-
-        vkMaxGeometryTotalOutputComponents ::
-                                           a -> VkMaxGeometryTotalOutputComponentsMType a
-
-        vkMaxGeometryTotalOutputComponentsByteOffset :: a -> Int
-
-        readVkMaxGeometryTotalOutputComponents ::
-                                               Ptr a ->
-                                                 IO (VkMaxGeometryTotalOutputComponentsMType a)
-
-        writeVkMaxGeometryTotalOutputComponents ::
-                                                Ptr a ->
-                                                  VkMaxGeometryTotalOutputComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxGeometryTotalOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxGeometryTotalOutputComponents a
-
-class HasVkMaxImageArrayLayers a where
-        type VkMaxImageArrayLayersMType a :: *
-
-        vkMaxImageArrayLayers :: a -> VkMaxImageArrayLayersMType a
-
-        vkMaxImageArrayLayersByteOffset :: a -> Int
-
-        readVkMaxImageArrayLayers ::
-                                  Ptr a -> IO (VkMaxImageArrayLayersMType a)
-
-        writeVkMaxImageArrayLayers ::
-                                   Ptr a -> VkMaxImageArrayLayersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageArrayLayers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageArrayLayers a
-
-class HasVkMaxImageCount a where
-        type VkMaxImageCountMType a :: *
-
-        vkMaxImageCount :: a -> VkMaxImageCountMType a
-
-        vkMaxImageCountByteOffset :: a -> Int
-
-        readVkMaxImageCount :: Ptr a -> IO (VkMaxImageCountMType a)
-
-        writeVkMaxImageCount :: Ptr a -> VkMaxImageCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageCount a
-
-class HasVkMaxImageDimension1D a where
-        type VkMaxImageDimension1DMType a :: *
-
-        vkMaxImageDimension1D :: a -> VkMaxImageDimension1DMType a
-
-        vkMaxImageDimension1DByteOffset :: a -> Int
-
-        readVkMaxImageDimension1D ::
-                                  Ptr a -> IO (VkMaxImageDimension1DMType a)
-
-        writeVkMaxImageDimension1D ::
-                                   Ptr a -> VkMaxImageDimension1DMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageDimension1D'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageDimension1D a
-
-class HasVkMaxImageDimension2D a where
-        type VkMaxImageDimension2DMType a :: *
-
-        vkMaxImageDimension2D :: a -> VkMaxImageDimension2DMType a
-
-        vkMaxImageDimension2DByteOffset :: a -> Int
-
-        readVkMaxImageDimension2D ::
-                                  Ptr a -> IO (VkMaxImageDimension2DMType a)
-
-        writeVkMaxImageDimension2D ::
-                                   Ptr a -> VkMaxImageDimension2DMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageDimension2D'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageDimension2D a
-
-class HasVkMaxImageDimension3D a where
-        type VkMaxImageDimension3DMType a :: *
-
-        vkMaxImageDimension3D :: a -> VkMaxImageDimension3DMType a
-
-        vkMaxImageDimension3DByteOffset :: a -> Int
-
-        readVkMaxImageDimension3D ::
-                                  Ptr a -> IO (VkMaxImageDimension3DMType a)
-
-        writeVkMaxImageDimension3D ::
-                                   Ptr a -> VkMaxImageDimension3DMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageDimension3D'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageDimension3D a
-
-class HasVkMaxImageDimensionCube a where
-        type VkMaxImageDimensionCubeMType a :: *
-
-        vkMaxImageDimensionCube :: a -> VkMaxImageDimensionCubeMType a
-
-        vkMaxImageDimensionCubeByteOffset :: a -> Int
-
-        readVkMaxImageDimensionCube ::
-                                    Ptr a -> IO (VkMaxImageDimensionCubeMType a)
-
-        writeVkMaxImageDimensionCube ::
-                                     Ptr a -> VkMaxImageDimensionCubeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageDimensionCube'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageDimensionCube a
-
-class HasVkMaxImageExtent a where
-        type VkMaxImageExtentMType a :: *
-
-        vkMaxImageExtent :: a -> VkMaxImageExtentMType a
-
-        vkMaxImageExtentByteOffset :: a -> Int
-
-        readVkMaxImageExtent :: Ptr a -> IO (VkMaxImageExtentMType a)
-
-        writeVkMaxImageExtent :: Ptr a -> VkMaxImageExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxImageExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxImageExtent a
-
-class HasVkMaxIndirectCommandsLayoutTokenCount a where
-        type VkMaxIndirectCommandsLayoutTokenCountMType a :: *
-
-        vkMaxIndirectCommandsLayoutTokenCount ::
-                                              a -> VkMaxIndirectCommandsLayoutTokenCountMType a
-
-        vkMaxIndirectCommandsLayoutTokenCountByteOffset :: a -> Int
-
-        readVkMaxIndirectCommandsLayoutTokenCount ::
-                                                  Ptr a ->
-                                                    IO
-                                                      (VkMaxIndirectCommandsLayoutTokenCountMType a)
-
-        writeVkMaxIndirectCommandsLayoutTokenCount ::
-                                                   Ptr a ->
-                                                     VkMaxIndirectCommandsLayoutTokenCountMType a ->
-                                                       IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxIndirectCommandsLayoutTokenCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxIndirectCommandsLayoutTokenCount a
-
-class HasVkMaxInterpolationOffset a where
-        type VkMaxInterpolationOffsetMType a :: *
-
-        vkMaxInterpolationOffset :: a -> VkMaxInterpolationOffsetMType a
-
-        vkMaxInterpolationOffsetByteOffset :: a -> Int
-
-        readVkMaxInterpolationOffset ::
-                                     Ptr a -> IO (VkMaxInterpolationOffsetMType a)
-
-        writeVkMaxInterpolationOffset ::
-                                      Ptr a -> VkMaxInterpolationOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxInterpolationOffset'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxInterpolationOffset a
-
-class HasVkMaxLod a where
-        type VkMaxLodMType a :: *
-
-        vkMaxLod :: a -> VkMaxLodMType a
-
-        vkMaxLodByteOffset :: a -> Int
-
-        readVkMaxLod :: Ptr a -> IO (VkMaxLodMType a)
-
-        writeVkMaxLod :: Ptr a -> VkMaxLodMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxLod'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxLod a
-
-class HasVkMaxLuminance a where
-        type VkMaxLuminanceMType a :: *
-
-        vkMaxLuminance :: a -> VkMaxLuminanceMType a
-
-        vkMaxLuminanceByteOffset :: a -> Int
-
-        readVkMaxLuminance :: Ptr a -> IO (VkMaxLuminanceMType a)
-
-        writeVkMaxLuminance :: Ptr a -> VkMaxLuminanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxLuminance'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxLuminance a
-
-class HasVkMaxMemoryAllocationCount a where
-        type VkMaxMemoryAllocationCountMType a :: *
-
-        vkMaxMemoryAllocationCount ::
-                                   a -> VkMaxMemoryAllocationCountMType a
-
-        vkMaxMemoryAllocationCountByteOffset :: a -> Int
-
-        readVkMaxMemoryAllocationCount ::
-                                       Ptr a -> IO (VkMaxMemoryAllocationCountMType a)
-
-        writeVkMaxMemoryAllocationCount ::
-                                        Ptr a -> VkMaxMemoryAllocationCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxMemoryAllocationCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxMemoryAllocationCount a
-
-class HasVkMaxMipLevels a where
-        type VkMaxMipLevelsMType a :: *
-
-        vkMaxMipLevels :: a -> VkMaxMipLevelsMType a
-
-        vkMaxMipLevelsByteOffset :: a -> Int
-
-        readVkMaxMipLevels :: Ptr a -> IO (VkMaxMipLevelsMType a)
-
-        writeVkMaxMipLevels :: Ptr a -> VkMaxMipLevelsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxMipLevels'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxMipLevels a
-
-class HasVkMaxMultiviewInstanceIndex a where
-        type VkMaxMultiviewInstanceIndexMType a :: *
-
-        vkMaxMultiviewInstanceIndex ::
-                                    a -> VkMaxMultiviewInstanceIndexMType a
-
-        vkMaxMultiviewInstanceIndexByteOffset :: a -> Int
-
-        readVkMaxMultiviewInstanceIndex ::
-                                        Ptr a -> IO (VkMaxMultiviewInstanceIndexMType a)
-
-        writeVkMaxMultiviewInstanceIndex ::
-                                         Ptr a -> VkMaxMultiviewInstanceIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxMultiviewInstanceIndex'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxMultiviewInstanceIndex a
-
-class HasVkMaxMultiviewViewCount a where
-        type VkMaxMultiviewViewCountMType a :: *
-
-        vkMaxMultiviewViewCount :: a -> VkMaxMultiviewViewCountMType a
-
-        vkMaxMultiviewViewCountByteOffset :: a -> Int
-
-        readVkMaxMultiviewViewCount ::
-                                    Ptr a -> IO (VkMaxMultiviewViewCountMType a)
-
-        writeVkMaxMultiviewViewCount ::
-                                     Ptr a -> VkMaxMultiviewViewCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxMultiviewViewCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxMultiviewViewCount a
-
-class HasVkMaxObjectEntryCounts a where
-        type VkMaxObjectEntryCountsMType a :: *
-
-        vkMaxObjectEntryCounts :: a -> VkMaxObjectEntryCountsMType a
-
-        vkMaxObjectEntryCountsByteOffset :: a -> Int
-
-        readVkMaxObjectEntryCounts ::
-                                   Ptr a -> IO (VkMaxObjectEntryCountsMType a)
-
-        writeVkMaxObjectEntryCounts ::
-                                    Ptr a -> VkMaxObjectEntryCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxObjectEntryCounts'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxObjectEntryCounts a
-
-class HasVkMaxPerStageDescriptorInputAttachments a where
-        type VkMaxPerStageDescriptorInputAttachmentsMType a :: *
-
-        vkMaxPerStageDescriptorInputAttachments ::
-                                                a -> VkMaxPerStageDescriptorInputAttachmentsMType a
-
-        vkMaxPerStageDescriptorInputAttachmentsByteOffset :: a -> Int
-
-        readVkMaxPerStageDescriptorInputAttachments ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkMaxPerStageDescriptorInputAttachmentsMType
-                                                           a)
-
-        writeVkMaxPerStageDescriptorInputAttachments ::
-                                                     Ptr a ->
-                                                       VkMaxPerStageDescriptorInputAttachmentsMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxPerStageDescriptorInputAttachments'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageDescriptorInputAttachments a
-
-class HasVkMaxPerStageDescriptorSampledImages a where
-        type VkMaxPerStageDescriptorSampledImagesMType a :: *
-
-        vkMaxPerStageDescriptorSampledImages ::
-                                             a -> VkMaxPerStageDescriptorSampledImagesMType a
-
-        vkMaxPerStageDescriptorSampledImagesByteOffset :: a -> Int
-
-        readVkMaxPerStageDescriptorSampledImages ::
-                                                 Ptr a ->
-                                                   IO (VkMaxPerStageDescriptorSampledImagesMType a)
-
-        writeVkMaxPerStageDescriptorSampledImages ::
-                                                  Ptr a ->
-                                                    VkMaxPerStageDescriptorSampledImagesMType a ->
-                                                      IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxPerStageDescriptorSampledImages'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageDescriptorSampledImages a
-
-class HasVkMaxPerStageDescriptorSamplers a where
-        type VkMaxPerStageDescriptorSamplersMType a :: *
-
-        vkMaxPerStageDescriptorSamplers ::
-                                        a -> VkMaxPerStageDescriptorSamplersMType a
-
-        vkMaxPerStageDescriptorSamplersByteOffset :: a -> Int
-
-        readVkMaxPerStageDescriptorSamplers ::
-                                            Ptr a -> IO (VkMaxPerStageDescriptorSamplersMType a)
-
-        writeVkMaxPerStageDescriptorSamplers ::
-                                             Ptr a ->
-                                               VkMaxPerStageDescriptorSamplersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxPerStageDescriptorSamplers'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageDescriptorSamplers a
-
-class HasVkMaxPerStageDescriptorStorageBuffers a where
-        type VkMaxPerStageDescriptorStorageBuffersMType a :: *
-
-        vkMaxPerStageDescriptorStorageBuffers ::
-                                              a -> VkMaxPerStageDescriptorStorageBuffersMType a
-
-        vkMaxPerStageDescriptorStorageBuffersByteOffset :: a -> Int
-
-        readVkMaxPerStageDescriptorStorageBuffers ::
-                                                  Ptr a ->
-                                                    IO
-                                                      (VkMaxPerStageDescriptorStorageBuffersMType a)
-
-        writeVkMaxPerStageDescriptorStorageBuffers ::
-                                                   Ptr a ->
-                                                     VkMaxPerStageDescriptorStorageBuffersMType a ->
-                                                       IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxPerStageDescriptorStorageBuffers'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageDescriptorStorageBuffers a
-
-class HasVkMaxPerStageDescriptorStorageImages a where
-        type VkMaxPerStageDescriptorStorageImagesMType a :: *
-
-        vkMaxPerStageDescriptorStorageImages ::
-                                             a -> VkMaxPerStageDescriptorStorageImagesMType a
-
-        vkMaxPerStageDescriptorStorageImagesByteOffset :: a -> Int
-
-        readVkMaxPerStageDescriptorStorageImages ::
-                                                 Ptr a ->
-                                                   IO (VkMaxPerStageDescriptorStorageImagesMType a)
-
-        writeVkMaxPerStageDescriptorStorageImages ::
-                                                  Ptr a ->
-                                                    VkMaxPerStageDescriptorStorageImagesMType a ->
-                                                      IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxPerStageDescriptorStorageImages'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageDescriptorStorageImages a
-
-class HasVkMaxPerStageDescriptorUniformBuffers a where
-        type VkMaxPerStageDescriptorUniformBuffersMType a :: *
-
-        vkMaxPerStageDescriptorUniformBuffers ::
-                                              a -> VkMaxPerStageDescriptorUniformBuffersMType a
-
-        vkMaxPerStageDescriptorUniformBuffersByteOffset :: a -> Int
-
-        readVkMaxPerStageDescriptorUniformBuffers ::
-                                                  Ptr a ->
-                                                    IO
-                                                      (VkMaxPerStageDescriptorUniformBuffersMType a)
-
-        writeVkMaxPerStageDescriptorUniformBuffers ::
-                                                   Ptr a ->
-                                                     VkMaxPerStageDescriptorUniformBuffersMType a ->
-                                                       IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxPerStageDescriptorUniformBuffers'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageDescriptorUniformBuffers a
-
-class HasVkMaxPerStageResources a where
-        type VkMaxPerStageResourcesMType a :: *
-
-        vkMaxPerStageResources :: a -> VkMaxPerStageResourcesMType a
-
-        vkMaxPerStageResourcesByteOffset :: a -> Int
-
-        readVkMaxPerStageResources ::
-                                   Ptr a -> IO (VkMaxPerStageResourcesMType a)
-
-        writeVkMaxPerStageResources ::
-                                    Ptr a -> VkMaxPerStageResourcesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxPerStageResources'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPerStageResources a
-
-class HasVkMaxPipelineLayouts a where
-        type VkMaxPipelineLayoutsMType a :: *
-
-        vkMaxPipelineLayouts :: a -> VkMaxPipelineLayoutsMType a
-
-        vkMaxPipelineLayoutsByteOffset :: a -> Int
-
-        readVkMaxPipelineLayouts ::
-                                 Ptr a -> IO (VkMaxPipelineLayoutsMType a)
-
-        writeVkMaxPipelineLayouts ::
-                                  Ptr a -> VkMaxPipelineLayoutsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxPipelineLayouts'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPipelineLayouts a
-
-class HasVkMaxPushConstantsSize a where
-        type VkMaxPushConstantsSizeMType a :: *
-
-        vkMaxPushConstantsSize :: a -> VkMaxPushConstantsSizeMType a
-
-        vkMaxPushConstantsSizeByteOffset :: a -> Int
-
-        readVkMaxPushConstantsSize ::
-                                   Ptr a -> IO (VkMaxPushConstantsSizeMType a)
-
-        writeVkMaxPushConstantsSize ::
-                                    Ptr a -> VkMaxPushConstantsSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxPushConstantsSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPushConstantsSize a
-
-class HasVkMaxPushDescriptors a where
-        type VkMaxPushDescriptorsMType a :: *
-
-        vkMaxPushDescriptors :: a -> VkMaxPushDescriptorsMType a
-
-        vkMaxPushDescriptorsByteOffset :: a -> Int
-
-        readVkMaxPushDescriptors ::
-                                 Ptr a -> IO (VkMaxPushDescriptorsMType a)
-
-        writeVkMaxPushDescriptors ::
-                                  Ptr a -> VkMaxPushDescriptorsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxPushDescriptors'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxPushDescriptors a
-
-class HasVkMaxResourceSize a where
-        type VkMaxResourceSizeMType a :: *
-
-        vkMaxResourceSize :: a -> VkMaxResourceSizeMType a
-
-        vkMaxResourceSizeByteOffset :: a -> Int
-
-        readVkMaxResourceSize :: Ptr a -> IO (VkMaxResourceSizeMType a)
-
-        writeVkMaxResourceSize ::
-                               Ptr a -> VkMaxResourceSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxResourceSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxResourceSize a
-
-class HasVkMaxSampleLocationGridSize a where
-        type VkMaxSampleLocationGridSizeMType a :: *
-
-        vkMaxSampleLocationGridSize ::
-                                    a -> VkMaxSampleLocationGridSizeMType a
-
-        vkMaxSampleLocationGridSizeByteOffset :: a -> Int
-
-        readVkMaxSampleLocationGridSize ::
-                                        Ptr a -> IO (VkMaxSampleLocationGridSizeMType a)
-
-        writeVkMaxSampleLocationGridSize ::
-                                         Ptr a -> VkMaxSampleLocationGridSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSampleLocationGridSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSampleLocationGridSize a
-
-class HasVkMaxSampleMaskWords a where
-        type VkMaxSampleMaskWordsMType a :: *
-
-        vkMaxSampleMaskWords :: a -> VkMaxSampleMaskWordsMType a
-
-        vkMaxSampleMaskWordsByteOffset :: a -> Int
-
-        readVkMaxSampleMaskWords ::
-                                 Ptr a -> IO (VkMaxSampleMaskWordsMType a)
-
-        writeVkMaxSampleMaskWords ::
-                                  Ptr a -> VkMaxSampleMaskWordsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSampleMaskWords'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSampleMaskWords a
-
-class HasVkMaxSampledImagesPerDescriptor a where
-        type VkMaxSampledImagesPerDescriptorMType a :: *
-
-        vkMaxSampledImagesPerDescriptor ::
-                                        a -> VkMaxSampledImagesPerDescriptorMType a
-
-        vkMaxSampledImagesPerDescriptorByteOffset :: a -> Int
-
-        readVkMaxSampledImagesPerDescriptor ::
-                                            Ptr a -> IO (VkMaxSampledImagesPerDescriptorMType a)
-
-        writeVkMaxSampledImagesPerDescriptor ::
-                                             Ptr a ->
-                                               VkMaxSampledImagesPerDescriptorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxSampledImagesPerDescriptor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSampledImagesPerDescriptor a
-
-class HasVkMaxSamplerAllocationCount a where
-        type VkMaxSamplerAllocationCountMType a :: *
-
-        vkMaxSamplerAllocationCount ::
-                                    a -> VkMaxSamplerAllocationCountMType a
-
-        vkMaxSamplerAllocationCountByteOffset :: a -> Int
-
-        readVkMaxSamplerAllocationCount ::
-                                        Ptr a -> IO (VkMaxSamplerAllocationCountMType a)
-
-        writeVkMaxSamplerAllocationCount ::
-                                         Ptr a -> VkMaxSamplerAllocationCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSamplerAllocationCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSamplerAllocationCount a
-
-class HasVkMaxSamplerAnisotropy a where
-        type VkMaxSamplerAnisotropyMType a :: *
-
-        vkMaxSamplerAnisotropy :: a -> VkMaxSamplerAnisotropyMType a
-
-        vkMaxSamplerAnisotropyByteOffset :: a -> Int
-
-        readVkMaxSamplerAnisotropy ::
-                                   Ptr a -> IO (VkMaxSamplerAnisotropyMType a)
-
-        writeVkMaxSamplerAnisotropy ::
-                                    Ptr a -> VkMaxSamplerAnisotropyMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSamplerAnisotropy'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSamplerAnisotropy a
-
-class HasVkMaxSamplerLodBias a where
-        type VkMaxSamplerLodBiasMType a :: *
-
-        vkMaxSamplerLodBias :: a -> VkMaxSamplerLodBiasMType a
-
-        vkMaxSamplerLodBiasByteOffset :: a -> Int
-
-        readVkMaxSamplerLodBias :: Ptr a -> IO (VkMaxSamplerLodBiasMType a)
-
-        writeVkMaxSamplerLodBias ::
-                                 Ptr a -> VkMaxSamplerLodBiasMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSamplerLodBias'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSamplerLodBias a
-
-class HasVkMaxSequencesCount a where
-        type VkMaxSequencesCountMType a :: *
-
-        vkMaxSequencesCount :: a -> VkMaxSequencesCountMType a
-
-        vkMaxSequencesCountByteOffset :: a -> Int
-
-        readVkMaxSequencesCount :: Ptr a -> IO (VkMaxSequencesCountMType a)
-
-        writeVkMaxSequencesCount ::
-                                 Ptr a -> VkMaxSequencesCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSequencesCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSequencesCount a
-
-class HasVkMaxSets a where
-        type VkMaxSetsMType a :: *
-
-        vkMaxSets :: a -> VkMaxSetsMType a
-
-        vkMaxSetsByteOffset :: a -> Int
-
-        readVkMaxSets :: Ptr a -> IO (VkMaxSetsMType a)
-
-        writeVkMaxSets :: Ptr a -> VkMaxSetsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSets'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSets a
-
-class HasVkMaxSrcExtent a where
-        type VkMaxSrcExtentMType a :: *
-
-        vkMaxSrcExtent :: a -> VkMaxSrcExtentMType a
-
-        vkMaxSrcExtentByteOffset :: a -> Int
-
-        readVkMaxSrcExtent :: Ptr a -> IO (VkMaxSrcExtentMType a)
-
-        writeVkMaxSrcExtent :: Ptr a -> VkMaxSrcExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSrcExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSrcExtent a
-
-class HasVkMaxSrcPosition a where
-        type VkMaxSrcPositionMType a :: *
-
-        vkMaxSrcPosition :: a -> VkMaxSrcPositionMType a
-
-        vkMaxSrcPositionByteOffset :: a -> Int
-
-        readVkMaxSrcPosition :: Ptr a -> IO (VkMaxSrcPositionMType a)
-
-        writeVkMaxSrcPosition :: Ptr a -> VkMaxSrcPositionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxSrcPosition'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxSrcPosition a
-
-class HasVkMaxStorageBufferRange a where
-        type VkMaxStorageBufferRangeMType a :: *
-
-        vkMaxStorageBufferRange :: a -> VkMaxStorageBufferRangeMType a
-
-        vkMaxStorageBufferRangeByteOffset :: a -> Int
-
-        readVkMaxStorageBufferRange ::
-                                    Ptr a -> IO (VkMaxStorageBufferRangeMType a)
-
-        writeVkMaxStorageBufferRange ::
-                                     Ptr a -> VkMaxStorageBufferRangeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxStorageBufferRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxStorageBufferRange a
-
-class HasVkMaxStorageBuffersPerDescriptor a where
-        type VkMaxStorageBuffersPerDescriptorMType a :: *
-
-        vkMaxStorageBuffersPerDescriptor ::
-                                         a -> VkMaxStorageBuffersPerDescriptorMType a
-
-        vkMaxStorageBuffersPerDescriptorByteOffset :: a -> Int
-
-        readVkMaxStorageBuffersPerDescriptor ::
-                                             Ptr a -> IO (VkMaxStorageBuffersPerDescriptorMType a)
-
-        writeVkMaxStorageBuffersPerDescriptor ::
-                                              Ptr a ->
-                                                VkMaxStorageBuffersPerDescriptorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxStorageBuffersPerDescriptor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxStorageBuffersPerDescriptor a
-
-class HasVkMaxStorageImagesPerDescriptor a where
-        type VkMaxStorageImagesPerDescriptorMType a :: *
-
-        vkMaxStorageImagesPerDescriptor ::
-                                        a -> VkMaxStorageImagesPerDescriptorMType a
-
-        vkMaxStorageImagesPerDescriptorByteOffset :: a -> Int
-
-        readVkMaxStorageImagesPerDescriptor ::
-                                            Ptr a -> IO (VkMaxStorageImagesPerDescriptorMType a)
-
-        writeVkMaxStorageImagesPerDescriptor ::
-                                             Ptr a ->
-                                               VkMaxStorageImagesPerDescriptorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxStorageImagesPerDescriptor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxStorageImagesPerDescriptor a
-
-class HasVkMaxTessellationControlPerPatchOutputComponents a where
-        type VkMaxTessellationControlPerPatchOutputComponentsMType a :: *
-
-        vkMaxTessellationControlPerPatchOutputComponents ::
-                                                         a ->
-                                                           VkMaxTessellationControlPerPatchOutputComponentsMType
-                                                             a
-
-        vkMaxTessellationControlPerPatchOutputComponentsByteOffset ::
-                                                                   a -> Int
-
-        readVkMaxTessellationControlPerPatchOutputComponents ::
-                                                             Ptr a ->
-                                                               IO
-                                                                 (VkMaxTessellationControlPerPatchOutputComponentsMType
-                                                                    a)
-
-        writeVkMaxTessellationControlPerPatchOutputComponents ::
-                                                              Ptr a ->
-                                                                VkMaxTessellationControlPerPatchOutputComponentsMType
-                                                                  a
-                                                                  -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationControlPerPatchOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationControlPerPatchOutputComponents a
-
-class HasVkMaxTessellationControlPerVertexInputComponents a where
-        type VkMaxTessellationControlPerVertexInputComponentsMType a :: *
-
-        vkMaxTessellationControlPerVertexInputComponents ::
-                                                         a ->
-                                                           VkMaxTessellationControlPerVertexInputComponentsMType
-                                                             a
-
-        vkMaxTessellationControlPerVertexInputComponentsByteOffset ::
-                                                                   a -> Int
-
-        readVkMaxTessellationControlPerVertexInputComponents ::
-                                                             Ptr a ->
-                                                               IO
-                                                                 (VkMaxTessellationControlPerVertexInputComponentsMType
-                                                                    a)
-
-        writeVkMaxTessellationControlPerVertexInputComponents ::
-                                                              Ptr a ->
-                                                                VkMaxTessellationControlPerVertexInputComponentsMType
-                                                                  a
-                                                                  -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationControlPerVertexInputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationControlPerVertexInputComponents a
-
-class HasVkMaxTessellationControlPerVertexOutputComponents a where
-        type VkMaxTessellationControlPerVertexOutputComponentsMType a :: *
-
-        vkMaxTessellationControlPerVertexOutputComponents ::
-                                                          a ->
-                                                            VkMaxTessellationControlPerVertexOutputComponentsMType
-                                                              a
-
-        vkMaxTessellationControlPerVertexOutputComponentsByteOffset ::
-                                                                    a -> Int
-
-        readVkMaxTessellationControlPerVertexOutputComponents ::
-                                                              Ptr a ->
-                                                                IO
-                                                                  (VkMaxTessellationControlPerVertexOutputComponentsMType
-                                                                     a)
-
-        writeVkMaxTessellationControlPerVertexOutputComponents ::
-                                                               Ptr a ->
-                                                                 VkMaxTessellationControlPerVertexOutputComponentsMType
-                                                                   a
-                                                                   -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationControlPerVertexOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationControlPerVertexOutputComponents a
-
-class HasVkMaxTessellationControlTotalOutputComponents a where
-        type VkMaxTessellationControlTotalOutputComponentsMType a :: *
-
-        vkMaxTessellationControlTotalOutputComponents ::
-                                                      a ->
-                                                        VkMaxTessellationControlTotalOutputComponentsMType
-                                                          a
-
-        vkMaxTessellationControlTotalOutputComponentsByteOffset :: a -> Int
-
-        readVkMaxTessellationControlTotalOutputComponents ::
-                                                          Ptr a ->
-                                                            IO
-                                                              (VkMaxTessellationControlTotalOutputComponentsMType
-                                                                 a)
-
-        writeVkMaxTessellationControlTotalOutputComponents ::
-                                                           Ptr a ->
-                                                             VkMaxTessellationControlTotalOutputComponentsMType
-                                                               a
-                                                               -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationControlTotalOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationControlTotalOutputComponents a
-
-class HasVkMaxTessellationEvaluationInputComponents a where
-        type VkMaxTessellationEvaluationInputComponentsMType a :: *
-
-        vkMaxTessellationEvaluationInputComponents ::
-                                                   a ->
-                                                     VkMaxTessellationEvaluationInputComponentsMType
-                                                       a
-
-        vkMaxTessellationEvaluationInputComponentsByteOffset :: a -> Int
-
-        readVkMaxTessellationEvaluationInputComponents ::
-                                                       Ptr a ->
-                                                         IO
-                                                           (VkMaxTessellationEvaluationInputComponentsMType
-                                                              a)
-
-        writeVkMaxTessellationEvaluationInputComponents ::
-                                                        Ptr a ->
-                                                          VkMaxTessellationEvaluationInputComponentsMType
-                                                            a
-                                                            -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationEvaluationInputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationEvaluationInputComponents a
-
-class HasVkMaxTessellationEvaluationOutputComponents a where
-        type VkMaxTessellationEvaluationOutputComponentsMType a :: *
-
-        vkMaxTessellationEvaluationOutputComponents ::
-                                                    a ->
-                                                      VkMaxTessellationEvaluationOutputComponentsMType
-                                                        a
-
-        vkMaxTessellationEvaluationOutputComponentsByteOffset :: a -> Int
-
-        readVkMaxTessellationEvaluationOutputComponents ::
-                                                        Ptr a ->
-                                                          IO
-                                                            (VkMaxTessellationEvaluationOutputComponentsMType
-                                                               a)
-
-        writeVkMaxTessellationEvaluationOutputComponents ::
-                                                         Ptr a ->
-                                                           VkMaxTessellationEvaluationOutputComponentsMType
-                                                             a
-                                                             -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationEvaluationOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationEvaluationOutputComponents a
-
-class HasVkMaxTessellationGenerationLevel a where
-        type VkMaxTessellationGenerationLevelMType a :: *
-
-        vkMaxTessellationGenerationLevel ::
-                                         a -> VkMaxTessellationGenerationLevelMType a
-
-        vkMaxTessellationGenerationLevelByteOffset :: a -> Int
-
-        readVkMaxTessellationGenerationLevel ::
-                                             Ptr a -> IO (VkMaxTessellationGenerationLevelMType a)
-
-        writeVkMaxTessellationGenerationLevel ::
-                                              Ptr a ->
-                                                VkMaxTessellationGenerationLevelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxTessellationGenerationLevel'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationGenerationLevel a
-
-class HasVkMaxTessellationPatchSize a where
-        type VkMaxTessellationPatchSizeMType a :: *
-
-        vkMaxTessellationPatchSize ::
-                                   a -> VkMaxTessellationPatchSizeMType a
-
-        vkMaxTessellationPatchSizeByteOffset :: a -> Int
-
-        readVkMaxTessellationPatchSize ::
-                                       Ptr a -> IO (VkMaxTessellationPatchSizeMType a)
-
-        writeVkMaxTessellationPatchSize ::
-                                        Ptr a -> VkMaxTessellationPatchSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxTessellationPatchSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTessellationPatchSize a
-
-class HasVkMaxTexelBufferElements a where
-        type VkMaxTexelBufferElementsMType a :: *
-
-        vkMaxTexelBufferElements :: a -> VkMaxTexelBufferElementsMType a
-
-        vkMaxTexelBufferElementsByteOffset :: a -> Int
-
-        readVkMaxTexelBufferElements ::
-                                     Ptr a -> IO (VkMaxTexelBufferElementsMType a)
-
-        writeVkMaxTexelBufferElements ::
-                                      Ptr a -> VkMaxTexelBufferElementsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxTexelBufferElements'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTexelBufferElements a
-
-class HasVkMaxTexelGatherOffset a where
-        type VkMaxTexelGatherOffsetMType a :: *
-
-        vkMaxTexelGatherOffset :: a -> VkMaxTexelGatherOffsetMType a
-
-        vkMaxTexelGatherOffsetByteOffset :: a -> Int
-
-        readVkMaxTexelGatherOffset ::
-                                   Ptr a -> IO (VkMaxTexelGatherOffsetMType a)
-
-        writeVkMaxTexelGatherOffset ::
-                                    Ptr a -> VkMaxTexelGatherOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxTexelGatherOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTexelGatherOffset a
-
-class HasVkMaxTexelOffset a where
-        type VkMaxTexelOffsetMType a :: *
-
-        vkMaxTexelOffset :: a -> VkMaxTexelOffsetMType a
-
-        vkMaxTexelOffsetByteOffset :: a -> Int
-
-        readVkMaxTexelOffset :: Ptr a -> IO (VkMaxTexelOffsetMType a)
-
-        writeVkMaxTexelOffset :: Ptr a -> VkMaxTexelOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxTexelOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxTexelOffset a
-
-class HasVkMaxUniformBufferRange a where
-        type VkMaxUniformBufferRangeMType a :: *
-
-        vkMaxUniformBufferRange :: a -> VkMaxUniformBufferRangeMType a
-
-        vkMaxUniformBufferRangeByteOffset :: a -> Int
-
-        readVkMaxUniformBufferRange ::
-                                    Ptr a -> IO (VkMaxUniformBufferRangeMType a)
-
-        writeVkMaxUniformBufferRange ::
-                                     Ptr a -> VkMaxUniformBufferRangeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxUniformBufferRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxUniformBufferRange a
-
-class HasVkMaxUniformBuffersPerDescriptor a where
-        type VkMaxUniformBuffersPerDescriptorMType a :: *
-
-        vkMaxUniformBuffersPerDescriptor ::
-                                         a -> VkMaxUniformBuffersPerDescriptorMType a
-
-        vkMaxUniformBuffersPerDescriptorByteOffset :: a -> Int
-
-        readVkMaxUniformBuffersPerDescriptor ::
-                                             Ptr a -> IO (VkMaxUniformBuffersPerDescriptorMType a)
-
-        writeVkMaxUniformBuffersPerDescriptor ::
-                                              Ptr a ->
-                                                VkMaxUniformBuffersPerDescriptorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxUniformBuffersPerDescriptor'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxUniformBuffersPerDescriptor a
-
-class HasVkMaxVertexInputAttributeOffset a where
-        type VkMaxVertexInputAttributeOffsetMType a :: *
-
-        vkMaxVertexInputAttributeOffset ::
-                                        a -> VkMaxVertexInputAttributeOffsetMType a
-
-        vkMaxVertexInputAttributeOffsetByteOffset :: a -> Int
-
-        readVkMaxVertexInputAttributeOffset ::
-                                            Ptr a -> IO (VkMaxVertexInputAttributeOffsetMType a)
-
-        writeVkMaxVertexInputAttributeOffset ::
-                                             Ptr a ->
-                                               VkMaxVertexInputAttributeOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'maxVertexInputAttributeOffset'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxVertexInputAttributeOffset a
-
-class HasVkMaxVertexInputAttributes a where
-        type VkMaxVertexInputAttributesMType a :: *
-
-        vkMaxVertexInputAttributes ::
-                                   a -> VkMaxVertexInputAttributesMType a
-
-        vkMaxVertexInputAttributesByteOffset :: a -> Int
-
-        readVkMaxVertexInputAttributes ::
-                                       Ptr a -> IO (VkMaxVertexInputAttributesMType a)
-
-        writeVkMaxVertexInputAttributes ::
-                                        Ptr a -> VkMaxVertexInputAttributesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxVertexInputAttributes'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxVertexInputAttributes a
-
-class HasVkMaxVertexInputBindingStride a where
-        type VkMaxVertexInputBindingStrideMType a :: *
-
-        vkMaxVertexInputBindingStride ::
-                                      a -> VkMaxVertexInputBindingStrideMType a
-
-        vkMaxVertexInputBindingStrideByteOffset :: a -> Int
-
-        readVkMaxVertexInputBindingStride ::
-                                          Ptr a -> IO (VkMaxVertexInputBindingStrideMType a)
-
-        writeVkMaxVertexInputBindingStride ::
-                                           Ptr a -> VkMaxVertexInputBindingStrideMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxVertexInputBindingStride'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxVertexInputBindingStride a
-
-class HasVkMaxVertexInputBindings a where
-        type VkMaxVertexInputBindingsMType a :: *
-
-        vkMaxVertexInputBindings :: a -> VkMaxVertexInputBindingsMType a
-
-        vkMaxVertexInputBindingsByteOffset :: a -> Int
-
-        readVkMaxVertexInputBindings ::
-                                     Ptr a -> IO (VkMaxVertexInputBindingsMType a)
-
-        writeVkMaxVertexInputBindings ::
-                                      Ptr a -> VkMaxVertexInputBindingsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxVertexInputBindings'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxVertexInputBindings a
-
-class HasVkMaxVertexOutputComponents a where
-        type VkMaxVertexOutputComponentsMType a :: *
-
-        vkMaxVertexOutputComponents ::
-                                    a -> VkMaxVertexOutputComponentsMType a
-
-        vkMaxVertexOutputComponentsByteOffset :: a -> Int
-
-        readVkMaxVertexOutputComponents ::
-                                        Ptr a -> IO (VkMaxVertexOutputComponentsMType a)
-
-        writeVkMaxVertexOutputComponents ::
-                                         Ptr a -> VkMaxVertexOutputComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxVertexOutputComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxVertexOutputComponents a
-
-class HasVkMaxViewportDimensionsArray a where
-        type VkMaxViewportDimensionsArrayMType a :: *
-
-        vkMaxViewportDimensionsArray ::
-                                     a -> Int -> VkMaxViewportDimensionsArrayMType a
-
-        vkMaxViewportDimensionsArrayByteOffset :: a -> Int
-
-        readVkMaxViewportDimensionsArray ::
-                                         Ptr a -> Int -> IO (VkMaxViewportDimensionsArrayMType a)
-
-        writeVkMaxViewportDimensionsArray ::
-                                          Ptr a ->
-                                            Int -> VkMaxViewportDimensionsArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxViewportDimensions'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxViewportDimensionsArray a
-
-class HasVkMaxViewports a where
-        type VkMaxViewportsMType a :: *
-
-        vkMaxViewports :: a -> VkMaxViewportsMType a
-
-        vkMaxViewportsByteOffset :: a -> Int
-
-        readVkMaxViewports :: Ptr a -> IO (VkMaxViewportsMType a)
-
-        writeVkMaxViewports :: Ptr a -> VkMaxViewportsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'maxViewports'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMaxViewports a
-
-class HasVkMemory a where
-        type VkMemoryMType a :: *
-
-        vkMemory :: a -> VkMemoryMType a
-
-        vkMemoryByteOffset :: a -> Int
-
-        readVkMemory :: Ptr a -> IO (VkMemoryMType a)
-
-        writeVkMemory :: Ptr a -> VkMemoryMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memory'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemory a
-
-class HasVkMemoryDeviceIndex a where
-        type VkMemoryDeviceIndexMType a :: *
-
-        vkMemoryDeviceIndex :: a -> VkMemoryDeviceIndexMType a
-
-        vkMemoryDeviceIndexByteOffset :: a -> Int
-
-        readVkMemoryDeviceIndex :: Ptr a -> IO (VkMemoryDeviceIndexMType a)
-
-        writeVkMemoryDeviceIndex ::
-                                 Ptr a -> VkMemoryDeviceIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryDeviceIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryDeviceIndex a
-
-class HasVkMemoryHeapCount a where
-        type VkMemoryHeapCountMType a :: *
-
-        vkMemoryHeapCount :: a -> VkMemoryHeapCountMType a
-
-        vkMemoryHeapCountByteOffset :: a -> Int
-
-        readVkMemoryHeapCount :: Ptr a -> IO (VkMemoryHeapCountMType a)
-
-        writeVkMemoryHeapCount ::
-                               Ptr a -> VkMemoryHeapCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryHeapCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryHeapCount a
-
-class HasVkMemoryHeapsArray a where
-        type VkMemoryHeapsArrayMType a :: *
-
-        vkMemoryHeapsArray :: a -> Int -> VkMemoryHeapsArrayMType a
-
-        vkMemoryHeapsArrayByteOffset :: a -> Int
-
-        readVkMemoryHeapsArray ::
-                               Ptr a -> Int -> IO (VkMemoryHeapsArrayMType a)
-
-        writeVkMemoryHeapsArray ::
-                                Ptr a -> Int -> VkMemoryHeapsArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryHeaps'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryHeapsArray a
-
-class HasVkMemoryOffset a where
-        type VkMemoryOffsetMType a :: *
-
-        vkMemoryOffset :: a -> VkMemoryOffsetMType a
-
-        vkMemoryOffsetByteOffset :: a -> Int
-
-        readVkMemoryOffset :: Ptr a -> IO (VkMemoryOffsetMType a)
-
-        writeVkMemoryOffset :: Ptr a -> VkMemoryOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryOffset a
-
-class HasVkMemoryProperties a where
-        type VkMemoryPropertiesMType a :: *
-
-        vkMemoryProperties :: a -> VkMemoryPropertiesMType a
-
-        vkMemoryPropertiesByteOffset :: a -> Int
-
-        readVkMemoryProperties :: Ptr a -> IO (VkMemoryPropertiesMType a)
-
-        writeVkMemoryProperties ::
-                                Ptr a -> VkMemoryPropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryProperties'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryProperties a
-
-class HasVkMemoryRequirements a where
-        type VkMemoryRequirementsMType a :: *
-
-        vkMemoryRequirements :: a -> VkMemoryRequirementsMType a
-
-        vkMemoryRequirementsByteOffset :: a -> Int
-
-        readVkMemoryRequirements ::
-                                 Ptr a -> IO (VkMemoryRequirementsMType a)
-
-        writeVkMemoryRequirements ::
-                                  Ptr a -> VkMemoryRequirementsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryRequirements'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryRequirements a
-
-class HasVkMemoryTypeBits a where
-        type VkMemoryTypeBitsMType a :: *
-
-        vkMemoryTypeBits :: a -> VkMemoryTypeBitsMType a
-
-        vkMemoryTypeBitsByteOffset :: a -> Int
-
-        readVkMemoryTypeBits :: Ptr a -> IO (VkMemoryTypeBitsMType a)
-
-        writeVkMemoryTypeBits :: Ptr a -> VkMemoryTypeBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryTypeBits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryTypeBits a
-
-class HasVkMemoryTypeCount a where
-        type VkMemoryTypeCountMType a :: *
-
-        vkMemoryTypeCount :: a -> VkMemoryTypeCountMType a
-
-        vkMemoryTypeCountByteOffset :: a -> Int
-
-        readVkMemoryTypeCount :: Ptr a -> IO (VkMemoryTypeCountMType a)
-
-        writeVkMemoryTypeCount ::
-                               Ptr a -> VkMemoryTypeCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryTypeCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryTypeCount a
-
-class HasVkMemoryTypeIndex a where
-        type VkMemoryTypeIndexMType a :: *
-
-        vkMemoryTypeIndex :: a -> VkMemoryTypeIndexMType a
-
-        vkMemoryTypeIndexByteOffset :: a -> Int
-
-        readVkMemoryTypeIndex :: Ptr a -> IO (VkMemoryTypeIndexMType a)
-
-        writeVkMemoryTypeIndex ::
-                               Ptr a -> VkMemoryTypeIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryTypeIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryTypeIndex a
-
-class HasVkMemoryTypesArray a where
-        type VkMemoryTypesArrayMType a :: *
-
-        vkMemoryTypesArray :: a -> Int -> VkMemoryTypesArrayMType a
-
-        vkMemoryTypesArrayByteOffset :: a -> Int
-
-        readVkMemoryTypesArray ::
-                               Ptr a -> Int -> IO (VkMemoryTypesArrayMType a)
-
-        writeVkMemoryTypesArray ::
-                                Ptr a -> Int -> VkMemoryTypesArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'memoryTypes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMemoryTypesArray a
-
-class HasVkMinCommandsTokenBufferOffsetAlignment a where
-        type VkMinCommandsTokenBufferOffsetAlignmentMType a :: *
-
-        vkMinCommandsTokenBufferOffsetAlignment ::
-                                                a -> VkMinCommandsTokenBufferOffsetAlignmentMType a
-
-        vkMinCommandsTokenBufferOffsetAlignmentByteOffset :: a -> Int
-
-        readVkMinCommandsTokenBufferOffsetAlignment ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkMinCommandsTokenBufferOffsetAlignmentMType
-                                                           a)
-
-        writeVkMinCommandsTokenBufferOffsetAlignment ::
-                                                     Ptr a ->
-                                                       VkMinCommandsTokenBufferOffsetAlignmentMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minCommandsTokenBufferOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinCommandsTokenBufferOffsetAlignment a
-
-class HasVkMinDepth a where
-        type VkMinDepthMType a :: *
-
-        vkMinDepth :: a -> VkMinDepthMType a
-
-        vkMinDepthByteOffset :: a -> Int
-
-        readVkMinDepth :: Ptr a -> IO (VkMinDepthMType a)
-
-        writeVkMinDepth :: Ptr a -> VkMinDepthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minDepth'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinDepth a
-
-class HasVkMinDepthBounds a where
-        type VkMinDepthBoundsMType a :: *
-
-        vkMinDepthBounds :: a -> VkMinDepthBoundsMType a
-
-        vkMinDepthBoundsByteOffset :: a -> Int
-
-        readVkMinDepthBounds :: Ptr a -> IO (VkMinDepthBoundsMType a)
-
-        writeVkMinDepthBounds :: Ptr a -> VkMinDepthBoundsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minDepthBounds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinDepthBounds a
-
-class HasVkMinDstExtent a where
-        type VkMinDstExtentMType a :: *
-
-        vkMinDstExtent :: a -> VkMinDstExtentMType a
-
-        vkMinDstExtentByteOffset :: a -> Int
-
-        readVkMinDstExtent :: Ptr a -> IO (VkMinDstExtentMType a)
-
-        writeVkMinDstExtent :: Ptr a -> VkMinDstExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minDstExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinDstExtent a
-
-class HasVkMinDstPosition a where
-        type VkMinDstPositionMType a :: *
-
-        vkMinDstPosition :: a -> VkMinDstPositionMType a
-
-        vkMinDstPositionByteOffset :: a -> Int
-
-        readVkMinDstPosition :: Ptr a -> IO (VkMinDstPositionMType a)
-
-        writeVkMinDstPosition :: Ptr a -> VkMinDstPositionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minDstPosition'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinDstPosition a
-
-class HasVkMinFilter a where
-        type VkMinFilterMType a :: *
-
-        vkMinFilter :: a -> VkMinFilterMType a
-
-        vkMinFilterByteOffset :: a -> Int
-
-        readVkMinFilter :: Ptr a -> IO (VkMinFilterMType a)
-
-        writeVkMinFilter :: Ptr a -> VkMinFilterMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minFilter'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinFilter a
-
-class HasVkMinImageCount a where
-        type VkMinImageCountMType a :: *
-
-        vkMinImageCount :: a -> VkMinImageCountMType a
-
-        vkMinImageCountByteOffset :: a -> Int
-
-        readVkMinImageCount :: Ptr a -> IO (VkMinImageCountMType a)
-
-        writeVkMinImageCount :: Ptr a -> VkMinImageCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minImageCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinImageCount a
-
-class HasVkMinImageExtent a where
-        type VkMinImageExtentMType a :: *
-
-        vkMinImageExtent :: a -> VkMinImageExtentMType a
-
-        vkMinImageExtentByteOffset :: a -> Int
-
-        readVkMinImageExtent :: Ptr a -> IO (VkMinImageExtentMType a)
-
-        writeVkMinImageExtent :: Ptr a -> VkMinImageExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minImageExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinImageExtent a
-
-class HasVkMinImageTransferGranularity a where
-        type VkMinImageTransferGranularityMType a :: *
-
-        vkMinImageTransferGranularity ::
-                                      a -> VkMinImageTransferGranularityMType a
-
-        vkMinImageTransferGranularityByteOffset :: a -> Int
-
-        readVkMinImageTransferGranularity ::
-                                          Ptr a -> IO (VkMinImageTransferGranularityMType a)
-
-        writeVkMinImageTransferGranularity ::
-                                           Ptr a -> VkMinImageTransferGranularityMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minImageTransferGranularity'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinImageTransferGranularity a
-
-class HasVkMinImportedHostPointerAlignment a where
-        type VkMinImportedHostPointerAlignmentMType a :: *
-
-        vkMinImportedHostPointerAlignment ::
-                                          a -> VkMinImportedHostPointerAlignmentMType a
-
-        vkMinImportedHostPointerAlignmentByteOffset :: a -> Int
-
-        readVkMinImportedHostPointerAlignment ::
-                                              Ptr a -> IO (VkMinImportedHostPointerAlignmentMType a)
-
-        writeVkMinImportedHostPointerAlignment ::
-                                               Ptr a ->
-                                                 VkMinImportedHostPointerAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minImportedHostPointerAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinImportedHostPointerAlignment a
-
-class HasVkMinInterpolationOffset a where
-        type VkMinInterpolationOffsetMType a :: *
-
-        vkMinInterpolationOffset :: a -> VkMinInterpolationOffsetMType a
-
-        vkMinInterpolationOffsetByteOffset :: a -> Int
-
-        readVkMinInterpolationOffset ::
-                                     Ptr a -> IO (VkMinInterpolationOffsetMType a)
-
-        writeVkMinInterpolationOffset ::
-                                      Ptr a -> VkMinInterpolationOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minInterpolationOffset'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinInterpolationOffset a
-
-class HasVkMinLod a where
-        type VkMinLodMType a :: *
-
-        vkMinLod :: a -> VkMinLodMType a
-
-        vkMinLodByteOffset :: a -> Int
-
-        readVkMinLod :: Ptr a -> IO (VkMinLodMType a)
-
-        writeVkMinLod :: Ptr a -> VkMinLodMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minLod'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinLod a
-
-class HasVkMinLuminance a where
-        type VkMinLuminanceMType a :: *
-
-        vkMinLuminance :: a -> VkMinLuminanceMType a
-
-        vkMinLuminanceByteOffset :: a -> Int
-
-        readVkMinLuminance :: Ptr a -> IO (VkMinLuminanceMType a)
-
-        writeVkMinLuminance :: Ptr a -> VkMinLuminanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minLuminance'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinLuminance a
-
-class HasVkMinMemoryMapAlignment a where
-        type VkMinMemoryMapAlignmentMType a :: *
-
-        vkMinMemoryMapAlignment :: a -> VkMinMemoryMapAlignmentMType a
-
-        vkMinMemoryMapAlignmentByteOffset :: a -> Int
-
-        readVkMinMemoryMapAlignment ::
-                                    Ptr a -> IO (VkMinMemoryMapAlignmentMType a)
-
-        writeVkMinMemoryMapAlignment ::
-                                     Ptr a -> VkMinMemoryMapAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minMemoryMapAlignment'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinMemoryMapAlignment a
-
-class HasVkMinSampleShading a where
-        type VkMinSampleShadingMType a :: *
-
-        vkMinSampleShading :: a -> VkMinSampleShadingMType a
-
-        vkMinSampleShadingByteOffset :: a -> Int
-
-        readVkMinSampleShading :: Ptr a -> IO (VkMinSampleShadingMType a)
-
-        writeVkMinSampleShading ::
-                                Ptr a -> VkMinSampleShadingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minSampleShading'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinSampleShading a
-
-class HasVkMinSequenceCountBufferOffsetAlignment a where
-        type VkMinSequenceCountBufferOffsetAlignmentMType a :: *
-
-        vkMinSequenceCountBufferOffsetAlignment ::
-                                                a -> VkMinSequenceCountBufferOffsetAlignmentMType a
-
-        vkMinSequenceCountBufferOffsetAlignmentByteOffset :: a -> Int
-
-        readVkMinSequenceCountBufferOffsetAlignment ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkMinSequenceCountBufferOffsetAlignmentMType
-                                                           a)
-
-        writeVkMinSequenceCountBufferOffsetAlignment ::
-                                                     Ptr a ->
-                                                       VkMinSequenceCountBufferOffsetAlignmentMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minSequenceCountBufferOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinSequenceCountBufferOffsetAlignment a
-
-class HasVkMinSequenceIndexBufferOffsetAlignment a where
-        type VkMinSequenceIndexBufferOffsetAlignmentMType a :: *
-
-        vkMinSequenceIndexBufferOffsetAlignment ::
-                                                a -> VkMinSequenceIndexBufferOffsetAlignmentMType a
-
-        vkMinSequenceIndexBufferOffsetAlignmentByteOffset :: a -> Int
-
-        readVkMinSequenceIndexBufferOffsetAlignment ::
-                                                    Ptr a ->
-                                                      IO
-                                                        (VkMinSequenceIndexBufferOffsetAlignmentMType
-                                                           a)
-
-        writeVkMinSequenceIndexBufferOffsetAlignment ::
-                                                     Ptr a ->
-                                                       VkMinSequenceIndexBufferOffsetAlignmentMType
-                                                         a
-                                                         -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minSequenceIndexBufferOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinSequenceIndexBufferOffsetAlignment a
-
-class HasVkMinSrcExtent a where
-        type VkMinSrcExtentMType a :: *
-
-        vkMinSrcExtent :: a -> VkMinSrcExtentMType a
-
-        vkMinSrcExtentByteOffset :: a -> Int
-
-        readVkMinSrcExtent :: Ptr a -> IO (VkMinSrcExtentMType a)
-
-        writeVkMinSrcExtent :: Ptr a -> VkMinSrcExtentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minSrcExtent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinSrcExtent a
-
-class HasVkMinSrcPosition a where
-        type VkMinSrcPositionMType a :: *
-
-        vkMinSrcPosition :: a -> VkMinSrcPositionMType a
-
-        vkMinSrcPositionByteOffset :: a -> Int
-
-        readVkMinSrcPosition :: Ptr a -> IO (VkMinSrcPositionMType a)
-
-        writeVkMinSrcPosition :: Ptr a -> VkMinSrcPositionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minSrcPosition'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinSrcPosition a
-
-class HasVkMinStorageBufferOffsetAlignment a where
-        type VkMinStorageBufferOffsetAlignmentMType a :: *
-
-        vkMinStorageBufferOffsetAlignment ::
-                                          a -> VkMinStorageBufferOffsetAlignmentMType a
-
-        vkMinStorageBufferOffsetAlignmentByteOffset :: a -> Int
-
-        readVkMinStorageBufferOffsetAlignment ::
-                                              Ptr a -> IO (VkMinStorageBufferOffsetAlignmentMType a)
-
-        writeVkMinStorageBufferOffsetAlignment ::
-                                               Ptr a ->
-                                                 VkMinStorageBufferOffsetAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minStorageBufferOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinStorageBufferOffsetAlignment a
-
-class HasVkMinTexelBufferOffsetAlignment a where
-        type VkMinTexelBufferOffsetAlignmentMType a :: *
-
-        vkMinTexelBufferOffsetAlignment ::
-                                        a -> VkMinTexelBufferOffsetAlignmentMType a
-
-        vkMinTexelBufferOffsetAlignmentByteOffset :: a -> Int
-
-        readVkMinTexelBufferOffsetAlignment ::
-                                            Ptr a -> IO (VkMinTexelBufferOffsetAlignmentMType a)
-
-        writeVkMinTexelBufferOffsetAlignment ::
-                                             Ptr a ->
-                                               VkMinTexelBufferOffsetAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minTexelBufferOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinTexelBufferOffsetAlignment a
-
-class HasVkMinTexelGatherOffset a where
-        type VkMinTexelGatherOffsetMType a :: *
-
-        vkMinTexelGatherOffset :: a -> VkMinTexelGatherOffsetMType a
-
-        vkMinTexelGatherOffsetByteOffset :: a -> Int
-
-        readVkMinTexelGatherOffset ::
-                                   Ptr a -> IO (VkMinTexelGatherOffsetMType a)
-
-        writeVkMinTexelGatherOffset ::
-                                    Ptr a -> VkMinTexelGatherOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minTexelGatherOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinTexelGatherOffset a
-
-class HasVkMinTexelOffset a where
-        type VkMinTexelOffsetMType a :: *
-
-        vkMinTexelOffset :: a -> VkMinTexelOffsetMType a
-
-        vkMinTexelOffsetByteOffset :: a -> Int
-
-        readVkMinTexelOffset :: Ptr a -> IO (VkMinTexelOffsetMType a)
-
-        writeVkMinTexelOffset :: Ptr a -> VkMinTexelOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'minTexelOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinTexelOffset a
-
-class HasVkMinUniformBufferOffsetAlignment a where
-        type VkMinUniformBufferOffsetAlignmentMType a :: *
-
-        vkMinUniformBufferOffsetAlignment ::
-                                          a -> VkMinUniformBufferOffsetAlignmentMType a
-
-        vkMinUniformBufferOffsetAlignmentByteOffset :: a -> Int
-
-        readVkMinUniformBufferOffsetAlignment ::
-                                              Ptr a -> IO (VkMinUniformBufferOffsetAlignmentMType a)
-
-        writeVkMinUniformBufferOffsetAlignment ::
-                                               Ptr a ->
-                                                 VkMinUniformBufferOffsetAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'minUniformBufferOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMinUniformBufferOffsetAlignment a
-
-class HasVkMipLevel a where
-        type VkMipLevelMType a :: *
-
-        vkMipLevel :: a -> VkMipLevelMType a
-
-        vkMipLevelByteOffset :: a -> Int
-
-        readVkMipLevel :: Ptr a -> IO (VkMipLevelMType a)
-
-        writeVkMipLevel :: Ptr a -> VkMipLevelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mipLevel'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMipLevel a
-
-class HasVkMipLevels a where
-        type VkMipLevelsMType a :: *
-
-        vkMipLevels :: a -> VkMipLevelsMType a
-
-        vkMipLevelsByteOffset :: a -> Int
-
-        readVkMipLevels :: Ptr a -> IO (VkMipLevelsMType a)
-
-        writeVkMipLevels :: Ptr a -> VkMipLevelsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mipLevels'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMipLevels a
-
-class HasVkMipLodBias a where
-        type VkMipLodBiasMType a :: *
-
-        vkMipLodBias :: a -> VkMipLodBiasMType a
-
-        vkMipLodBiasByteOffset :: a -> Int
-
-        readVkMipLodBias :: Ptr a -> IO (VkMipLodBiasMType a)
-
-        writeVkMipLodBias :: Ptr a -> VkMipLodBiasMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mipLodBias'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMipLodBias a
-
-class HasVkMipmapMode a where
-        type VkMipmapModeMType a :: *
-
-        vkMipmapMode :: a -> VkMipmapModeMType a
-
-        vkMipmapModeByteOffset :: a -> Int
-
-        readVkMipmapMode :: Ptr a -> IO (VkMipmapModeMType a)
-
-        writeVkMipmapMode :: Ptr a -> VkMipmapModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mipmapMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMipmapMode a
-
-class HasVkMipmapPrecisionBits a where
-        type VkMipmapPrecisionBitsMType a :: *
-
-        vkMipmapPrecisionBits :: a -> VkMipmapPrecisionBitsMType a
-
-        vkMipmapPrecisionBitsByteOffset :: a -> Int
-
-        readVkMipmapPrecisionBits ::
-                                  Ptr a -> IO (VkMipmapPrecisionBitsMType a)
-
-        writeVkMipmapPrecisionBits ::
-                                   Ptr a -> VkMipmapPrecisionBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mipmapPrecisionBits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMipmapPrecisionBits a
-
-class HasVkMirSurface a where
-        type VkMirSurfaceMType a :: *
-
-        vkMirSurface :: a -> VkMirSurfaceMType a
-
-        vkMirSurfaceByteOffset :: a -> Int
-
-        readVkMirSurface :: Ptr a -> IO (VkMirSurfaceMType a)
-
-        writeVkMirSurface :: Ptr a -> VkMirSurfaceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mirSurface'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMirSurface a
-
-class HasVkMode a where
-        type VkModeMType a :: *
-
-        vkMode :: a -> VkModeMType a
-
-        vkModeByteOffset :: a -> Int
-
-        readVkMode :: Ptr a -> IO (VkModeMType a)
-
-        writeVkMode :: Ptr a -> VkModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'mode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMode a
-
-class HasVkModes a where
-        type VkModesMType a :: *
-
-        vkModes :: a -> VkModesMType a
-
-        vkModesByteOffset :: a -> Int
-
-        readVkModes :: Ptr a -> IO (VkModesMType a)
-
-        writeVkModes :: Ptr a -> VkModesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'modes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkModes a
-
-class HasVkModule a where
-        type VkModuleMType a :: *
-
-        vkModule :: a -> VkModuleMType a
-
-        vkModuleByteOffset :: a -> Int
-
-        readVkModule :: Ptr a -> IO (VkModuleMType a)
-
-        writeVkModule :: Ptr a -> VkModuleMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'module'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkModule a
-
-class HasVkMultiDrawIndirect a where
-        type VkMultiDrawIndirectMType a :: *
-
-        vkMultiDrawIndirect :: a -> VkMultiDrawIndirectMType a
-
-        vkMultiDrawIndirectByteOffset :: a -> Int
-
-        readVkMultiDrawIndirect :: Ptr a -> IO (VkMultiDrawIndirectMType a)
-
-        writeVkMultiDrawIndirect ::
-                                 Ptr a -> VkMultiDrawIndirectMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'multiDrawIndirect'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMultiDrawIndirect a
-
-class HasVkMultiViewport a where
-        type VkMultiViewportMType a :: *
-
-        vkMultiViewport :: a -> VkMultiViewportMType a
-
-        vkMultiViewportByteOffset :: a -> Int
-
-        readVkMultiViewport :: Ptr a -> IO (VkMultiViewportMType a)
-
-        writeVkMultiViewport :: Ptr a -> VkMultiViewportMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'multiViewport'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMultiViewport a
-
-class HasVkMultiview a where
-        type VkMultiviewMType a :: *
-
-        vkMultiview :: a -> VkMultiviewMType a
-
-        vkMultiviewByteOffset :: a -> Int
-
-        readVkMultiview :: Ptr a -> IO (VkMultiviewMType a)
-
-        writeVkMultiview :: Ptr a -> VkMultiviewMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'multiview'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMultiview a
-
-class HasVkMultiviewGeometryShader a where
-        type VkMultiviewGeometryShaderMType a :: *
-
-        vkMultiviewGeometryShader :: a -> VkMultiviewGeometryShaderMType a
-
-        vkMultiviewGeometryShaderByteOffset :: a -> Int
-
-        readVkMultiviewGeometryShader ::
-                                      Ptr a -> IO (VkMultiviewGeometryShaderMType a)
-
-        writeVkMultiviewGeometryShader ::
-                                       Ptr a -> VkMultiviewGeometryShaderMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'multiviewGeometryShader'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMultiviewGeometryShader a
-
-class HasVkMultiviewTessellationShader a where
-        type VkMultiviewTessellationShaderMType a :: *
-
-        vkMultiviewTessellationShader ::
-                                      a -> VkMultiviewTessellationShaderMType a
-
-        vkMultiviewTessellationShaderByteOffset :: a -> Int
-
-        readVkMultiviewTessellationShader ::
-                                          Ptr a -> IO (VkMultiviewTessellationShaderMType a)
-
-        writeVkMultiviewTessellationShader ::
-                                           Ptr a -> VkMultiviewTessellationShaderMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'multiviewTessellationShader'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkMultiviewTessellationShader a
-
-class HasVkName a where
-        type VkNameMType a :: *
-
-        vkName :: a -> VkNameMType a
-
-        vkNameByteOffset :: a -> Int
-
-        readVkName :: Ptr a -> IO (VkNameMType a)
-
-        writeVkName :: Ptr a -> VkNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'name'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkName a
-
-class HasVkNewLayout a where
-        type VkNewLayoutMType a :: *
-
-        vkNewLayout :: a -> VkNewLayoutMType a
-
-        vkNewLayoutByteOffset :: a -> Int
-
-        readVkNewLayout :: Ptr a -> IO (VkNewLayoutMType a)
-
-        writeVkNewLayout :: Ptr a -> VkNewLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'newLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNewLayout a
-
-class HasVkNonCoherentAtomSize a where
-        type VkNonCoherentAtomSizeMType a :: *
-
-        vkNonCoherentAtomSize :: a -> VkNonCoherentAtomSizeMType a
-
-        vkNonCoherentAtomSizeByteOffset :: a -> Int
-
-        readVkNonCoherentAtomSize ::
-                                  Ptr a -> IO (VkNonCoherentAtomSizeMType a)
-
-        writeVkNonCoherentAtomSize ::
-                                   Ptr a -> VkNonCoherentAtomSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'nonCoherentAtomSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNonCoherentAtomSize a
-
-class HasVkNumAvailableSgprs a where
-        type VkNumAvailableSgprsMType a :: *
-
-        vkNumAvailableSgprs :: a -> VkNumAvailableSgprsMType a
-
-        vkNumAvailableSgprsByteOffset :: a -> Int
-
-        readVkNumAvailableSgprs :: Ptr a -> IO (VkNumAvailableSgprsMType a)
-
-        writeVkNumAvailableSgprs ::
-                                 Ptr a -> VkNumAvailableSgprsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'numAvailableSgprs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNumAvailableSgprs a
-
-class HasVkNumAvailableVgprs a where
-        type VkNumAvailableVgprsMType a :: *
-
-        vkNumAvailableVgprs :: a -> VkNumAvailableVgprsMType a
-
-        vkNumAvailableVgprsByteOffset :: a -> Int
-
-        readVkNumAvailableVgprs :: Ptr a -> IO (VkNumAvailableVgprsMType a)
-
-        writeVkNumAvailableVgprs ::
-                                 Ptr a -> VkNumAvailableVgprsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'numAvailableVgprs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNumAvailableVgprs a
-
-class HasVkNumPhysicalSgprs a where
-        type VkNumPhysicalSgprsMType a :: *
-
-        vkNumPhysicalSgprs :: a -> VkNumPhysicalSgprsMType a
-
-        vkNumPhysicalSgprsByteOffset :: a -> Int
-
-        readVkNumPhysicalSgprs :: Ptr a -> IO (VkNumPhysicalSgprsMType a)
-
-        writeVkNumPhysicalSgprs ::
-                                Ptr a -> VkNumPhysicalSgprsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'numPhysicalSgprs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNumPhysicalSgprs a
-
-class HasVkNumPhysicalVgprs a where
-        type VkNumPhysicalVgprsMType a :: *
-
-        vkNumPhysicalVgprs :: a -> VkNumPhysicalVgprsMType a
-
-        vkNumPhysicalVgprsByteOffset :: a -> Int
-
-        readVkNumPhysicalVgprs :: Ptr a -> IO (VkNumPhysicalVgprsMType a)
-
-        writeVkNumPhysicalVgprs ::
-                                Ptr a -> VkNumPhysicalVgprsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'numPhysicalVgprs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNumPhysicalVgprs a
-
-class HasVkNumUsedSgprs a where
-        type VkNumUsedSgprsMType a :: *
-
-        vkNumUsedSgprs :: a -> VkNumUsedSgprsMType a
-
-        vkNumUsedSgprsByteOffset :: a -> Int
-
-        readVkNumUsedSgprs :: Ptr a -> IO (VkNumUsedSgprsMType a)
-
-        writeVkNumUsedSgprs :: Ptr a -> VkNumUsedSgprsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'numUsedSgprs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNumUsedSgprs a
-
-class HasVkNumUsedVgprs a where
-        type VkNumUsedVgprsMType a :: *
-
-        vkNumUsedVgprs :: a -> VkNumUsedVgprsMType a
-
-        vkNumUsedVgprsByteOffset :: a -> Int
-
-        readVkNumUsedVgprs :: Ptr a -> IO (VkNumUsedVgprsMType a)
-
-        writeVkNumUsedVgprs :: Ptr a -> VkNumUsedVgprsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'numUsedVgprs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkNumUsedVgprs a
-
-class HasVkObject a where
-        type VkObjectMType a :: *
-
-        vkObject :: a -> VkObjectMType a
-
-        vkObjectByteOffset :: a -> Int
-
-        readVkObject :: Ptr a -> IO (VkObjectMType a)
-
-        writeVkObject :: Ptr a -> VkObjectMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'object'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkObject a
-
-class HasVkObjectCount a where
-        type VkObjectCountMType a :: *
-
-        vkObjectCount :: a -> VkObjectCountMType a
-
-        vkObjectCountByteOffset :: a -> Int
-
-        readVkObjectCount :: Ptr a -> IO (VkObjectCountMType a)
-
-        writeVkObjectCount :: Ptr a -> VkObjectCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'objectCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkObjectCount a
-
-class HasVkObjectTable a where
-        type VkObjectTableMType a :: *
-
-        vkObjectTable :: a -> VkObjectTableMType a
-
-        vkObjectTableByteOffset :: a -> Int
-
-        readVkObjectTable :: Ptr a -> IO (VkObjectTableMType a)
-
-        writeVkObjectTable :: Ptr a -> VkObjectTableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'objectTable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkObjectTable a
-
-class HasVkObjectType a where
-        type VkObjectTypeMType a :: *
-
-        vkObjectType :: a -> VkObjectTypeMType a
-
-        vkObjectTypeByteOffset :: a -> Int
-
-        readVkObjectType :: Ptr a -> IO (VkObjectTypeMType a)
-
-        writeVkObjectType :: Ptr a -> VkObjectTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'objectType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkObjectType a
-
-class HasVkOcclusionQueryEnable a where
-        type VkOcclusionQueryEnableMType a :: *
-
-        vkOcclusionQueryEnable :: a -> VkOcclusionQueryEnableMType a
-
-        vkOcclusionQueryEnableByteOffset :: a -> Int
-
-        readVkOcclusionQueryEnable ::
-                                   Ptr a -> IO (VkOcclusionQueryEnableMType a)
-
-        writeVkOcclusionQueryEnable ::
-                                    Ptr a -> VkOcclusionQueryEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'occlusionQueryEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOcclusionQueryEnable a
-
-class HasVkOcclusionQueryPrecise a where
-        type VkOcclusionQueryPreciseMType a :: *
-
-        vkOcclusionQueryPrecise :: a -> VkOcclusionQueryPreciseMType a
-
-        vkOcclusionQueryPreciseByteOffset :: a -> Int
-
-        readVkOcclusionQueryPrecise ::
-                                    Ptr a -> IO (VkOcclusionQueryPreciseMType a)
-
-        writeVkOcclusionQueryPrecise ::
-                                     Ptr a -> VkOcclusionQueryPreciseMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'occlusionQueryPrecise'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOcclusionQueryPrecise a
-
-class HasVkOffset a where
-        type VkOffsetMType a :: *
-
-        vkOffset :: a -> VkOffsetMType a
-
-        vkOffsetByteOffset :: a -> Int
-
-        readVkOffset :: Ptr a -> IO (VkOffsetMType a)
-
-        writeVkOffset :: Ptr a -> VkOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'offset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOffset a
-
-class HasVkOldLayout a where
-        type VkOldLayoutMType a :: *
-
-        vkOldLayout :: a -> VkOldLayoutMType a
-
-        vkOldLayoutByteOffset :: a -> Int
-
-        readVkOldLayout :: Ptr a -> IO (VkOldLayoutMType a)
-
-        writeVkOldLayout :: Ptr a -> VkOldLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'oldLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOldLayout a
-
-class HasVkOldSwapchain a where
-        type VkOldSwapchainMType a :: *
-
-        vkOldSwapchain :: a -> VkOldSwapchainMType a
-
-        vkOldSwapchainByteOffset :: a -> Int
-
-        readVkOldSwapchain :: Ptr a -> IO (VkOldSwapchainMType a)
-
-        writeVkOldSwapchain :: Ptr a -> VkOldSwapchainMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'oldSwapchain'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOldSwapchain a
-
-class HasVkOptimalBufferCopyOffsetAlignment a where
-        type VkOptimalBufferCopyOffsetAlignmentMType a :: *
-
-        vkOptimalBufferCopyOffsetAlignment ::
-                                           a -> VkOptimalBufferCopyOffsetAlignmentMType a
-
-        vkOptimalBufferCopyOffsetAlignmentByteOffset :: a -> Int
-
-        readVkOptimalBufferCopyOffsetAlignment ::
-                                               Ptr a ->
-                                                 IO (VkOptimalBufferCopyOffsetAlignmentMType a)
-
-        writeVkOptimalBufferCopyOffsetAlignment ::
-                                                Ptr a ->
-                                                  VkOptimalBufferCopyOffsetAlignmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'optimalBufferCopyOffsetAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOptimalBufferCopyOffsetAlignment a
-
-class HasVkOptimalBufferCopyRowPitchAlignment a where
-        type VkOptimalBufferCopyRowPitchAlignmentMType a :: *
-
-        vkOptimalBufferCopyRowPitchAlignment ::
-                                             a -> VkOptimalBufferCopyRowPitchAlignmentMType a
-
-        vkOptimalBufferCopyRowPitchAlignmentByteOffset :: a -> Int
-
-        readVkOptimalBufferCopyRowPitchAlignment ::
-                                                 Ptr a ->
-                                                   IO (VkOptimalBufferCopyRowPitchAlignmentMType a)
-
-        writeVkOptimalBufferCopyRowPitchAlignment ::
-                                                  Ptr a ->
-                                                    VkOptimalBufferCopyRowPitchAlignmentMType a ->
-                                                      IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'optimalBufferCopyRowPitchAlignment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOptimalBufferCopyRowPitchAlignment a
-
-class HasVkOptimalTilingFeatures a where
-        type VkOptimalTilingFeaturesMType a :: *
-
-        vkOptimalTilingFeatures :: a -> VkOptimalTilingFeaturesMType a
-
-        vkOptimalTilingFeaturesByteOffset :: a -> Int
-
-        readVkOptimalTilingFeatures ::
-                                    Ptr a -> IO (VkOptimalTilingFeaturesMType a)
-
-        writeVkOptimalTilingFeatures ::
-                                     Ptr a -> VkOptimalTilingFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'optimalTilingFeatures'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkOptimalTilingFeatures a
-
-class HasVkPAcquireKeys a where
-        type VkPAcquireKeysMType a :: *
-
-        vkPAcquireKeys :: a -> VkPAcquireKeysMType a
-
-        vkPAcquireKeysByteOffset :: a -> Int
-
-        readVkPAcquireKeys :: Ptr a -> IO (VkPAcquireKeysMType a)
-
-        writeVkPAcquireKeys :: Ptr a -> VkPAcquireKeysMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAcquireKeys'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAcquireKeys a
-
-class HasVkPAcquireSyncs a where
-        type VkPAcquireSyncsMType a :: *
-
-        vkPAcquireSyncs :: a -> VkPAcquireSyncsMType a
-
-        vkPAcquireSyncsByteOffset :: a -> Int
-
-        readVkPAcquireSyncs :: Ptr a -> IO (VkPAcquireSyncsMType a)
-
-        writeVkPAcquireSyncs :: Ptr a -> VkPAcquireSyncsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAcquireSyncs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAcquireSyncs a
-
-class HasVkPAcquireTimeoutMilliseconds a where
-        type VkPAcquireTimeoutMillisecondsMType a :: *
-
-        vkPAcquireTimeoutMilliseconds ::
-                                      a -> VkPAcquireTimeoutMillisecondsMType a
-
-        vkPAcquireTimeoutMillisecondsByteOffset :: a -> Int
-
-        readVkPAcquireTimeoutMilliseconds ::
-                                          Ptr a -> IO (VkPAcquireTimeoutMillisecondsMType a)
-
-        writeVkPAcquireTimeoutMilliseconds ::
-                                           Ptr a -> VkPAcquireTimeoutMillisecondsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAcquireTimeoutMilliseconds'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAcquireTimeoutMilliseconds a
-
-class HasVkPAcquireTimeouts a where
-        type VkPAcquireTimeoutsMType a :: *
-
-        vkPAcquireTimeouts :: a -> VkPAcquireTimeoutsMType a
-
-        vkPAcquireTimeoutsByteOffset :: a -> Int
-
-        readVkPAcquireTimeouts :: Ptr a -> IO (VkPAcquireTimeoutsMType a)
-
-        writeVkPAcquireTimeouts ::
-                                Ptr a -> VkPAcquireTimeoutsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAcquireTimeouts'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAcquireTimeouts a
-
-class HasVkPApplicationInfo a where
-        type VkPApplicationInfoMType a :: *
-
-        vkPApplicationInfo :: a -> VkPApplicationInfoMType a
-
-        vkPApplicationInfoByteOffset :: a -> Int
-
-        readVkPApplicationInfo :: Ptr a -> IO (VkPApplicationInfoMType a)
-
-        writeVkPApplicationInfo ::
-                                Ptr a -> VkPApplicationInfoMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pApplicationInfo'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPApplicationInfo a
-
-class HasVkPApplicationName a where
-        type VkPApplicationNameMType a :: *
-
-        vkPApplicationName :: a -> VkPApplicationNameMType a
-
-        vkPApplicationNameByteOffset :: a -> Int
-
-        readVkPApplicationName :: Ptr a -> IO (VkPApplicationNameMType a)
-
-        writeVkPApplicationName ::
-                                Ptr a -> VkPApplicationNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pApplicationName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPApplicationName a
-
-class HasVkPAspectReferences a where
-        type VkPAspectReferencesMType a :: *
-
-        vkPAspectReferences :: a -> VkPAspectReferencesMType a
-
-        vkPAspectReferencesByteOffset :: a -> Int
-
-        readVkPAspectReferences :: Ptr a -> IO (VkPAspectReferencesMType a)
-
-        writeVkPAspectReferences ::
-                                 Ptr a -> VkPAspectReferencesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAspectReferences'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAspectReferences a
-
-class HasVkPAttachmentInitialSampleLocations a where
-        type VkPAttachmentInitialSampleLocationsMType a :: *
-
-        vkPAttachmentInitialSampleLocations ::
-                                            a -> VkPAttachmentInitialSampleLocationsMType a
-
-        vkPAttachmentInitialSampleLocationsByteOffset :: a -> Int
-
-        readVkPAttachmentInitialSampleLocations ::
-                                                Ptr a ->
-                                                  IO (VkPAttachmentInitialSampleLocationsMType a)
-
-        writeVkPAttachmentInitialSampleLocations ::
-                                                 Ptr a ->
-                                                   VkPAttachmentInitialSampleLocationsMType a ->
-                                                     IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'pAttachmentInitialSampleLocations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAttachmentInitialSampleLocations a
-
-class HasVkPAttachments a where
-        type VkPAttachmentsMType a :: *
-
-        vkPAttachments :: a -> VkPAttachmentsMType a
-
-        vkPAttachmentsByteOffset :: a -> Int
-
-        readVkPAttachments :: Ptr a -> IO (VkPAttachmentsMType a)
-
-        writeVkPAttachments :: Ptr a -> VkPAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAttachments'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAttachments a
-
-class HasVkPAttributes a where
-        type VkPAttributesMType a :: *
-
-        vkPAttributes :: a -> VkPAttributesMType a
-
-        vkPAttributesByteOffset :: a -> Int
-
-        readVkPAttributes :: Ptr a -> IO (VkPAttributesMType a)
-
-        writeVkPAttributes :: Ptr a -> VkPAttributesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pAttributes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPAttributes a
-
-class HasVkPBindings a where
-        type VkPBindingsMType a :: *
-
-        vkPBindings :: a -> VkPBindingsMType a
-
-        vkPBindingsByteOffset :: a -> Int
-
-        readVkPBindings :: Ptr a -> IO (VkPBindingsMType a)
-
-        writeVkPBindings :: Ptr a -> VkPBindingsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pBindings'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPBindings a
-
-class HasVkPBinds a where
-        type VkPBindsMType a :: *
-
-        vkPBinds :: a -> VkPBindsMType a
-
-        vkPBindsByteOffset :: a -> Int
-
-        readVkPBinds :: Ptr a -> IO (VkPBindsMType a)
-
-        writeVkPBinds :: Ptr a -> VkPBindsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pBinds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPBinds a
-
-class HasVkPBufferBinds a where
-        type VkPBufferBindsMType a :: *
-
-        vkPBufferBinds :: a -> VkPBufferBindsMType a
-
-        vkPBufferBindsByteOffset :: a -> Int
-
-        readVkPBufferBinds :: Ptr a -> IO (VkPBufferBindsMType a)
-
-        writeVkPBufferBinds :: Ptr a -> VkPBufferBindsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pBufferBinds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPBufferBinds a
-
-class HasVkPBufferInfo a where
-        type VkPBufferInfoMType a :: *
-
-        vkPBufferInfo :: a -> VkPBufferInfoMType a
-
-        vkPBufferInfoByteOffset :: a -> Int
-
-        readVkPBufferInfo :: Ptr a -> IO (VkPBufferInfoMType a)
-
-        writeVkPBufferInfo :: Ptr a -> VkPBufferInfoMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pBufferInfo'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPBufferInfo a
-
-class HasVkPClearValues a where
-        type VkPClearValuesMType a :: *
-
-        vkPClearValues :: a -> VkPClearValuesMType a
-
-        vkPClearValuesByteOffset :: a -> Int
-
-        readVkPClearValues :: Ptr a -> IO (VkPClearValuesMType a)
-
-        writeVkPClearValues :: Ptr a -> VkPClearValuesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pClearValues'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPClearValues a
-
-class HasVkPCode a where
-        type VkPCodeMType a :: *
-
-        vkPCode :: a -> VkPCodeMType a
-
-        vkPCodeByteOffset :: a -> Int
-
-        readVkPCode :: Ptr a -> IO (VkPCodeMType a)
-
-        writeVkPCode :: Ptr a -> VkPCodeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pCode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPCode a
-
-class HasVkPColorAttachments a where
-        type VkPColorAttachmentsMType a :: *
-
-        vkPColorAttachments :: a -> VkPColorAttachmentsMType a
-
-        vkPColorAttachmentsByteOffset :: a -> Int
-
-        readVkPColorAttachments :: Ptr a -> IO (VkPColorAttachmentsMType a)
-
-        writeVkPColorAttachments ::
-                                 Ptr a -> VkPColorAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pColorAttachments'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPColorAttachments a
-
-class HasVkPColorBlendState a where
-        type VkPColorBlendStateMType a :: *
-
-        vkPColorBlendState :: a -> VkPColorBlendStateMType a
-
-        vkPColorBlendStateByteOffset :: a -> Int
-
-        readVkPColorBlendState :: Ptr a -> IO (VkPColorBlendStateMType a)
-
-        writeVkPColorBlendState ::
-                                Ptr a -> VkPColorBlendStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pColorBlendState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPColorBlendState a
-
-class HasVkPCommandBufferDeviceMasks a where
-        type VkPCommandBufferDeviceMasksMType a :: *
-
-        vkPCommandBufferDeviceMasks ::
-                                    a -> VkPCommandBufferDeviceMasksMType a
-
-        vkPCommandBufferDeviceMasksByteOffset :: a -> Int
-
-        readVkPCommandBufferDeviceMasks ::
-                                        Ptr a -> IO (VkPCommandBufferDeviceMasksMType a)
-
-        writeVkPCommandBufferDeviceMasks ::
-                                         Ptr a -> VkPCommandBufferDeviceMasksMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pCommandBufferDeviceMasks'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPCommandBufferDeviceMasks a
-
-class HasVkPCommandBuffers a where
-        type VkPCommandBuffersMType a :: *
-
-        vkPCommandBuffers :: a -> VkPCommandBuffersMType a
-
-        vkPCommandBuffersByteOffset :: a -> Int
-
-        readVkPCommandBuffers :: Ptr a -> IO (VkPCommandBuffersMType a)
-
-        writeVkPCommandBuffers ::
-                               Ptr a -> VkPCommandBuffersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pCommandBuffers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPCommandBuffers a
-
-class HasVkPCorrelationMasks a where
-        type VkPCorrelationMasksMType a :: *
-
-        vkPCorrelationMasks :: a -> VkPCorrelationMasksMType a
-
-        vkPCorrelationMasksByteOffset :: a -> Int
-
-        readVkPCorrelationMasks :: Ptr a -> IO (VkPCorrelationMasksMType a)
-
-        writeVkPCorrelationMasks ::
-                                 Ptr a -> VkPCorrelationMasksMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pCorrelationMasks'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPCorrelationMasks a
-
-class HasVkPCoverageModulationTable a where
-        type VkPCoverageModulationTableMType a :: *
-
-        vkPCoverageModulationTable ::
-                                   a -> VkPCoverageModulationTableMType a
-
-        vkPCoverageModulationTableByteOffset :: a -> Int
-
-        readVkPCoverageModulationTable ::
-                                       Ptr a -> IO (VkPCoverageModulationTableMType a)
-
-        writeVkPCoverageModulationTable ::
-                                        Ptr a -> VkPCoverageModulationTableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pCoverageModulationTable'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPCoverageModulationTable a
-
-class HasVkPData a where
-        type VkPDataMType a :: *
-
-        vkPData :: a -> VkPDataMType a
-
-        vkPDataByteOffset :: a -> Int
-
-        readVkPData :: Ptr a -> IO (VkPDataMType a)
-
-        writeVkPData :: Ptr a -> VkPDataMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pData'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPData a
-
-class HasVkPDependencies a where
-        type VkPDependenciesMType a :: *
-
-        vkPDependencies :: a -> VkPDependenciesMType a
-
-        vkPDependenciesByteOffset :: a -> Int
-
-        readVkPDependencies :: Ptr a -> IO (VkPDependenciesMType a)
-
-        writeVkPDependencies :: Ptr a -> VkPDependenciesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDependencies'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDependencies a
-
-class HasVkPDepthStencilAttachment a where
-        type VkPDepthStencilAttachmentMType a :: *
-
-        vkPDepthStencilAttachment :: a -> VkPDepthStencilAttachmentMType a
-
-        vkPDepthStencilAttachmentByteOffset :: a -> Int
-
-        readVkPDepthStencilAttachment ::
-                                      Ptr a -> IO (VkPDepthStencilAttachmentMType a)
-
-        writeVkPDepthStencilAttachment ::
-                                       Ptr a -> VkPDepthStencilAttachmentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDepthStencilAttachment'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDepthStencilAttachment a
-
-class HasVkPDepthStencilState a where
-        type VkPDepthStencilStateMType a :: *
-
-        vkPDepthStencilState :: a -> VkPDepthStencilStateMType a
-
-        vkPDepthStencilStateByteOffset :: a -> Int
-
-        readVkPDepthStencilState ::
-                                 Ptr a -> IO (VkPDepthStencilStateMType a)
-
-        writeVkPDepthStencilState ::
-                                  Ptr a -> VkPDepthStencilStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDepthStencilState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDepthStencilState a
-
-class HasVkPDescriptorUpdateEntries a where
-        type VkPDescriptorUpdateEntriesMType a :: *
-
-        vkPDescriptorUpdateEntries ::
-                                   a -> VkPDescriptorUpdateEntriesMType a
-
-        vkPDescriptorUpdateEntriesByteOffset :: a -> Int
-
-        readVkPDescriptorUpdateEntries ::
-                                       Ptr a -> IO (VkPDescriptorUpdateEntriesMType a)
-
-        writeVkPDescriptorUpdateEntries ::
-                                        Ptr a -> VkPDescriptorUpdateEntriesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDescriptorUpdateEntries'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDescriptorUpdateEntries a
-
-class HasVkPDeviceIndices a where
-        type VkPDeviceIndicesMType a :: *
-
-        vkPDeviceIndices :: a -> VkPDeviceIndicesMType a
-
-        vkPDeviceIndicesByteOffset :: a -> Int
-
-        readVkPDeviceIndices :: Ptr a -> IO (VkPDeviceIndicesMType a)
-
-        writeVkPDeviceIndices :: Ptr a -> VkPDeviceIndicesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDeviceIndices'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDeviceIndices a
-
-class HasVkPDeviceMasks a where
-        type VkPDeviceMasksMType a :: *
-
-        vkPDeviceMasks :: a -> VkPDeviceMasksMType a
-
-        vkPDeviceMasksByteOffset :: a -> Int
-
-        readVkPDeviceMasks :: Ptr a -> IO (VkPDeviceMasksMType a)
-
-        writeVkPDeviceMasks :: Ptr a -> VkPDeviceMasksMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDeviceMasks'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDeviceMasks a
-
-class HasVkPDeviceRenderAreas a where
-        type VkPDeviceRenderAreasMType a :: *
-
-        vkPDeviceRenderAreas :: a -> VkPDeviceRenderAreasMType a
-
-        vkPDeviceRenderAreasByteOffset :: a -> Int
-
-        readVkPDeviceRenderAreas ::
-                                 Ptr a -> IO (VkPDeviceRenderAreasMType a)
-
-        writeVkPDeviceRenderAreas ::
-                                  Ptr a -> VkPDeviceRenderAreasMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDeviceRenderAreas'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDeviceRenderAreas a
-
-class HasVkPDisabledValidationChecks a where
-        type VkPDisabledValidationChecksMType a :: *
-
-        vkPDisabledValidationChecks ::
-                                    a -> VkPDisabledValidationChecksMType a
-
-        vkPDisabledValidationChecksByteOffset :: a -> Int
-
-        readVkPDisabledValidationChecks ::
-                                        Ptr a -> IO (VkPDisabledValidationChecksMType a)
-
-        writeVkPDisabledValidationChecks ::
-                                         Ptr a -> VkPDisabledValidationChecksMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDisabledValidationChecks'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDisabledValidationChecks a
-
-class HasVkPDiscardRectangles a where
-        type VkPDiscardRectanglesMType a :: *
-
-        vkPDiscardRectangles :: a -> VkPDiscardRectanglesMType a
-
-        vkPDiscardRectanglesByteOffset :: a -> Int
-
-        readVkPDiscardRectangles ::
-                                 Ptr a -> IO (VkPDiscardRectanglesMType a)
-
-        writeVkPDiscardRectangles ::
-                                  Ptr a -> VkPDiscardRectanglesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDiscardRectangles'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDiscardRectangles a
-
-class HasVkPDynamicState a where
-        type VkPDynamicStateMType a :: *
-
-        vkPDynamicState :: a -> VkPDynamicStateMType a
-
-        vkPDynamicStateByteOffset :: a -> Int
-
-        readVkPDynamicState :: Ptr a -> IO (VkPDynamicStateMType a)
-
-        writeVkPDynamicState :: Ptr a -> VkPDynamicStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDynamicState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDynamicState a
-
-class HasVkPDynamicStates a where
-        type VkPDynamicStatesMType a :: *
-
-        vkPDynamicStates :: a -> VkPDynamicStatesMType a
-
-        vkPDynamicStatesByteOffset :: a -> Int
-
-        readVkPDynamicStates :: Ptr a -> IO (VkPDynamicStatesMType a)
-
-        writeVkPDynamicStates :: Ptr a -> VkPDynamicStatesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pDynamicStates'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPDynamicStates a
-
-class HasVkPEnabledFeatures a where
-        type VkPEnabledFeaturesMType a :: *
-
-        vkPEnabledFeatures :: a -> VkPEnabledFeaturesMType a
-
-        vkPEnabledFeaturesByteOffset :: a -> Int
-
-        readVkPEnabledFeatures :: Ptr a -> IO (VkPEnabledFeaturesMType a)
-
-        writeVkPEnabledFeatures ::
-                                Ptr a -> VkPEnabledFeaturesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pEnabledFeatures'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPEnabledFeatures a
-
-class HasVkPEngineName a where
-        type VkPEngineNameMType a :: *
-
-        vkPEngineName :: a -> VkPEngineNameMType a
-
-        vkPEngineNameByteOffset :: a -> Int
-
-        readVkPEngineName :: Ptr a -> IO (VkPEngineNameMType a)
-
-        writeVkPEngineName :: Ptr a -> VkPEngineNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pEngineName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPEngineName a
-
-class HasVkPHostPointer a where
-        type VkPHostPointerMType a :: *
-
-        vkPHostPointer :: a -> VkPHostPointerMType a
-
-        vkPHostPointerByteOffset :: a -> Int
-
-        readVkPHostPointer :: Ptr a -> IO (VkPHostPointerMType a)
-
-        writeVkPHostPointer :: Ptr a -> VkPHostPointerMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pHostPointer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPHostPointer a
-
-class HasVkPImageBinds a where
-        type VkPImageBindsMType a :: *
-
-        vkPImageBinds :: a -> VkPImageBindsMType a
-
-        vkPImageBindsByteOffset :: a -> Int
-
-        readVkPImageBinds :: Ptr a -> IO (VkPImageBindsMType a)
-
-        writeVkPImageBinds :: Ptr a -> VkPImageBindsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pImageBinds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPImageBinds a
-
-class HasVkPImageIndices a where
-        type VkPImageIndicesMType a :: *
-
-        vkPImageIndices :: a -> VkPImageIndicesMType a
-
-        vkPImageIndicesByteOffset :: a -> Int
-
-        readVkPImageIndices :: Ptr a -> IO (VkPImageIndicesMType a)
-
-        writeVkPImageIndices :: Ptr a -> VkPImageIndicesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pImageIndices'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPImageIndices a
-
-class HasVkPImageInfo a where
-        type VkPImageInfoMType a :: *
-
-        vkPImageInfo :: a -> VkPImageInfoMType a
-
-        vkPImageInfoByteOffset :: a -> Int
-
-        readVkPImageInfo :: Ptr a -> IO (VkPImageInfoMType a)
-
-        writeVkPImageInfo :: Ptr a -> VkPImageInfoMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pImageInfo'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPImageInfo a
-
-class HasVkPImageOpaqueBinds a where
-        type VkPImageOpaqueBindsMType a :: *
-
-        vkPImageOpaqueBinds :: a -> VkPImageOpaqueBindsMType a
-
-        vkPImageOpaqueBindsByteOffset :: a -> Int
-
-        readVkPImageOpaqueBinds :: Ptr a -> IO (VkPImageOpaqueBindsMType a)
-
-        writeVkPImageOpaqueBinds ::
-                                 Ptr a -> VkPImageOpaqueBindsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pImageOpaqueBinds'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPImageOpaqueBinds a
-
-class HasVkPImmutableSamplers a where
-        type VkPImmutableSamplersMType a :: *
-
-        vkPImmutableSamplers :: a -> VkPImmutableSamplersMType a
-
-        vkPImmutableSamplersByteOffset :: a -> Int
-
-        readVkPImmutableSamplers ::
-                                 Ptr a -> IO (VkPImmutableSamplersMType a)
-
-        writeVkPImmutableSamplers ::
-                                  Ptr a -> VkPImmutableSamplersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pImmutableSamplers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPImmutableSamplers a
-
-class HasVkPIndirectCommandsTokens a where
-        type VkPIndirectCommandsTokensMType a :: *
-
-        vkPIndirectCommandsTokens :: a -> VkPIndirectCommandsTokensMType a
-
-        vkPIndirectCommandsTokensByteOffset :: a -> Int
-
-        readVkPIndirectCommandsTokens ::
-                                      Ptr a -> IO (VkPIndirectCommandsTokensMType a)
-
-        writeVkPIndirectCommandsTokens ::
-                                       Ptr a -> VkPIndirectCommandsTokensMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pIndirectCommandsTokens'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPIndirectCommandsTokens a
-
-class HasVkPInheritanceInfo a where
-        type VkPInheritanceInfoMType a :: *
-
-        vkPInheritanceInfo :: a -> VkPInheritanceInfoMType a
-
-        vkPInheritanceInfoByteOffset :: a -> Int
-
-        readVkPInheritanceInfo :: Ptr a -> IO (VkPInheritanceInfoMType a)
-
-        writeVkPInheritanceInfo ::
-                                Ptr a -> VkPInheritanceInfoMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pInheritanceInfo'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPInheritanceInfo a
-
-class HasVkPInitialData a where
-        type VkPInitialDataMType a :: *
-
-        vkPInitialData :: a -> VkPInitialDataMType a
-
-        vkPInitialDataByteOffset :: a -> Int
-
-        readVkPInitialData :: Ptr a -> IO (VkPInitialDataMType a)
-
-        writeVkPInitialData :: Ptr a -> VkPInitialDataMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pInitialData'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPInitialData a
-
-class HasVkPInputAssemblyState a where
-        type VkPInputAssemblyStateMType a :: *
-
-        vkPInputAssemblyState :: a -> VkPInputAssemblyStateMType a
-
-        vkPInputAssemblyStateByteOffset :: a -> Int
-
-        readVkPInputAssemblyState ::
-                                  Ptr a -> IO (VkPInputAssemblyStateMType a)
-
-        writeVkPInputAssemblyState ::
-                                   Ptr a -> VkPInputAssemblyStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pInputAssemblyState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPInputAssemblyState a
-
-class HasVkPInputAttachments a where
-        type VkPInputAttachmentsMType a :: *
-
-        vkPInputAttachments :: a -> VkPInputAttachmentsMType a
-
-        vkPInputAttachmentsByteOffset :: a -> Int
-
-        readVkPInputAttachments :: Ptr a -> IO (VkPInputAttachmentsMType a)
-
-        writeVkPInputAttachments ::
-                                 Ptr a -> VkPInputAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pInputAttachments'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPInputAttachments a
-
-class HasVkPMapEntries a where
-        type VkPMapEntriesMType a :: *
-
-        vkPMapEntries :: a -> VkPMapEntriesMType a
-
-        vkPMapEntriesByteOffset :: a -> Int
-
-        readVkPMapEntries :: Ptr a -> IO (VkPMapEntriesMType a)
-
-        writeVkPMapEntries :: Ptr a -> VkPMapEntriesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pMapEntries'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPMapEntries a
-
-class HasVkPMarkerName a where
-        type VkPMarkerNameMType a :: *
-
-        vkPMarkerName :: a -> VkPMarkerNameMType a
-
-        vkPMarkerNameByteOffset :: a -> Int
-
-        readVkPMarkerName :: Ptr a -> IO (VkPMarkerNameMType a)
-
-        writeVkPMarkerName :: Ptr a -> VkPMarkerNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pMarkerName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPMarkerName a
-
-class HasVkPMultisampleState a where
-        type VkPMultisampleStateMType a :: *
-
-        vkPMultisampleState :: a -> VkPMultisampleStateMType a
-
-        vkPMultisampleStateByteOffset :: a -> Int
-
-        readVkPMultisampleState :: Ptr a -> IO (VkPMultisampleStateMType a)
-
-        writeVkPMultisampleState ::
-                                 Ptr a -> VkPMultisampleStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pMultisampleState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPMultisampleState a
-
-class HasVkPName a where
-        type VkPNameMType a :: *
-
-        vkPName :: a -> VkPNameMType a
-
-        vkPNameByteOffset :: a -> Int
-
-        readVkPName :: Ptr a -> IO (VkPNameMType a)
-
-        writeVkPName :: Ptr a -> VkPNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPName a
-
-class HasVkPNext a where
-        type VkPNextMType a :: *
-
-        vkPNext :: a -> VkPNextMType a
-
-        vkPNextByteOffset :: a -> Int
-
-        readVkPNext :: Ptr a -> IO (VkPNextMType a)
-
-        writeVkPNext :: Ptr a -> VkPNextMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pNext'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPNext a
-
-class HasVkPObjectEntryCounts a where
-        type VkPObjectEntryCountsMType a :: *
-
-        vkPObjectEntryCounts :: a -> VkPObjectEntryCountsMType a
-
-        vkPObjectEntryCountsByteOffset :: a -> Int
-
-        readVkPObjectEntryCounts ::
-                                 Ptr a -> IO (VkPObjectEntryCountsMType a)
-
-        writeVkPObjectEntryCounts ::
-                                  Ptr a -> VkPObjectEntryCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pObjectEntryCounts'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPObjectEntryCounts a
-
-class HasVkPObjectEntryTypes a where
-        type VkPObjectEntryTypesMType a :: *
-
-        vkPObjectEntryTypes :: a -> VkPObjectEntryTypesMType a
-
-        vkPObjectEntryTypesByteOffset :: a -> Int
-
-        readVkPObjectEntryTypes :: Ptr a -> IO (VkPObjectEntryTypesMType a)
-
-        writeVkPObjectEntryTypes ::
-                                 Ptr a -> VkPObjectEntryTypesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pObjectEntryTypes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPObjectEntryTypes a
-
-class HasVkPObjectEntryUsageFlags a where
-        type VkPObjectEntryUsageFlagsMType a :: *
-
-        vkPObjectEntryUsageFlags :: a -> VkPObjectEntryUsageFlagsMType a
-
-        vkPObjectEntryUsageFlagsByteOffset :: a -> Int
-
-        readVkPObjectEntryUsageFlags ::
-                                     Ptr a -> IO (VkPObjectEntryUsageFlagsMType a)
-
-        writeVkPObjectEntryUsageFlags ::
-                                      Ptr a -> VkPObjectEntryUsageFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pObjectEntryUsageFlags'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPObjectEntryUsageFlags a
-
-class HasVkPObjectName a where
-        type VkPObjectNameMType a :: *
-
-        vkPObjectName :: a -> VkPObjectNameMType a
-
-        vkPObjectNameByteOffset :: a -> Int
-
-        readVkPObjectName :: Ptr a -> IO (VkPObjectNameMType a)
-
-        writeVkPObjectName :: Ptr a -> VkPObjectNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pObjectName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPObjectName a
-
-class HasVkPPhysicalDevices a where
-        type VkPPhysicalDevicesMType a :: *
-
-        vkPPhysicalDevices :: a -> VkPPhysicalDevicesMType a
-
-        vkPPhysicalDevicesByteOffset :: a -> Int
-
-        readVkPPhysicalDevices :: Ptr a -> IO (VkPPhysicalDevicesMType a)
-
-        writeVkPPhysicalDevices ::
-                                Ptr a -> VkPPhysicalDevicesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pPhysicalDevices'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPPhysicalDevices a
-
-class HasVkPPoolSizes a where
-        type VkPPoolSizesMType a :: *
-
-        vkPPoolSizes :: a -> VkPPoolSizesMType a
-
-        vkPPoolSizesByteOffset :: a -> Int
-
-        readVkPPoolSizes :: Ptr a -> IO (VkPPoolSizesMType a)
-
-        writeVkPPoolSizes :: Ptr a -> VkPPoolSizesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pPoolSizes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPPoolSizes a
-
-class HasVkPPostSubpassSampleLocations a where
-        type VkPPostSubpassSampleLocationsMType a :: *
-
-        vkPPostSubpassSampleLocations ::
-                                      a -> VkPPostSubpassSampleLocationsMType a
-
-        vkPPostSubpassSampleLocationsByteOffset :: a -> Int
-
-        readVkPPostSubpassSampleLocations ::
-                                          Ptr a -> IO (VkPPostSubpassSampleLocationsMType a)
-
-        writeVkPPostSubpassSampleLocations ::
-                                           Ptr a -> VkPPostSubpassSampleLocationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pPostSubpassSampleLocations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPPostSubpassSampleLocations a
-
-class HasVkPPreserveAttachments a where
-        type VkPPreserveAttachmentsMType a :: *
-
-        vkPPreserveAttachments :: a -> VkPPreserveAttachmentsMType a
-
-        vkPPreserveAttachmentsByteOffset :: a -> Int
-
-        readVkPPreserveAttachments ::
-                                   Ptr a -> IO (VkPPreserveAttachmentsMType a)
-
-        writeVkPPreserveAttachments ::
-                                    Ptr a -> VkPPreserveAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pPreserveAttachments'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPPreserveAttachments a
-
-class HasVkPPushConstantRanges a where
-        type VkPPushConstantRangesMType a :: *
-
-        vkPPushConstantRanges :: a -> VkPPushConstantRangesMType a
-
-        vkPPushConstantRangesByteOffset :: a -> Int
-
-        readVkPPushConstantRanges ::
-                                  Ptr a -> IO (VkPPushConstantRangesMType a)
-
-        writeVkPPushConstantRanges ::
-                                   Ptr a -> VkPPushConstantRangesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pPushConstantRanges'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPPushConstantRanges a
-
-class HasVkPQueueCreateInfos a where
-        type VkPQueueCreateInfosMType a :: *
-
-        vkPQueueCreateInfos :: a -> VkPQueueCreateInfosMType a
-
-        vkPQueueCreateInfosByteOffset :: a -> Int
-
-        readVkPQueueCreateInfos :: Ptr a -> IO (VkPQueueCreateInfosMType a)
-
-        writeVkPQueueCreateInfos ::
-                                 Ptr a -> VkPQueueCreateInfosMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pQueueCreateInfos'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPQueueCreateInfos a
-
-class HasVkPQueueFamilyIndices a where
-        type VkPQueueFamilyIndicesMType a :: *
-
-        vkPQueueFamilyIndices :: a -> VkPQueueFamilyIndicesMType a
-
-        vkPQueueFamilyIndicesByteOffset :: a -> Int
-
-        readVkPQueueFamilyIndices ::
-                                  Ptr a -> IO (VkPQueueFamilyIndicesMType a)
-
-        writeVkPQueueFamilyIndices ::
-                                   Ptr a -> VkPQueueFamilyIndicesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pQueueFamilyIndices'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPQueueFamilyIndices a
-
-class HasVkPQueuePriorities a where
-        type VkPQueuePrioritiesMType a :: *
-
-        vkPQueuePriorities :: a -> VkPQueuePrioritiesMType a
-
-        vkPQueuePrioritiesByteOffset :: a -> Int
-
-        readVkPQueuePriorities :: Ptr a -> IO (VkPQueuePrioritiesMType a)
-
-        writeVkPQueuePriorities ::
-                                Ptr a -> VkPQueuePrioritiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pQueuePriorities'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPQueuePriorities a
-
-class HasVkPRasterizationState a where
-        type VkPRasterizationStateMType a :: *
-
-        vkPRasterizationState :: a -> VkPRasterizationStateMType a
-
-        vkPRasterizationStateByteOffset :: a -> Int
-
-        readVkPRasterizationState ::
-                                  Ptr a -> IO (VkPRasterizationStateMType a)
-
-        writeVkPRasterizationState ::
-                                   Ptr a -> VkPRasterizationStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pRasterizationState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPRasterizationState a
-
-class HasVkPRectangles a where
-        type VkPRectanglesMType a :: *
-
-        vkPRectangles :: a -> VkPRectanglesMType a
-
-        vkPRectanglesByteOffset :: a -> Int
-
-        readVkPRectangles :: Ptr a -> IO (VkPRectanglesMType a)
-
-        writeVkPRectangles :: Ptr a -> VkPRectanglesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pRectangles'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPRectangles a
-
-class HasVkPRegions a where
-        type VkPRegionsMType a :: *
-
-        vkPRegions :: a -> VkPRegionsMType a
-
-        vkPRegionsByteOffset :: a -> Int
-
-        readVkPRegions :: Ptr a -> IO (VkPRegionsMType a)
-
-        writeVkPRegions :: Ptr a -> VkPRegionsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pRegions'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPRegions a
-
-class HasVkPReleaseKeys a where
-        type VkPReleaseKeysMType a :: *
-
-        vkPReleaseKeys :: a -> VkPReleaseKeysMType a
-
-        vkPReleaseKeysByteOffset :: a -> Int
-
-        readVkPReleaseKeys :: Ptr a -> IO (VkPReleaseKeysMType a)
-
-        writeVkPReleaseKeys :: Ptr a -> VkPReleaseKeysMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pReleaseKeys'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPReleaseKeys a
-
-class HasVkPReleaseSyncs a where
-        type VkPReleaseSyncsMType a :: *
-
-        vkPReleaseSyncs :: a -> VkPReleaseSyncsMType a
-
-        vkPReleaseSyncsByteOffset :: a -> Int
-
-        readVkPReleaseSyncs :: Ptr a -> IO (VkPReleaseSyncsMType a)
-
-        writeVkPReleaseSyncs :: Ptr a -> VkPReleaseSyncsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pReleaseSyncs'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPReleaseSyncs a
-
-class HasVkPResolveAttachments a where
-        type VkPResolveAttachmentsMType a :: *
-
-        vkPResolveAttachments :: a -> VkPResolveAttachmentsMType a
-
-        vkPResolveAttachmentsByteOffset :: a -> Int
-
-        readVkPResolveAttachments ::
-                                  Ptr a -> IO (VkPResolveAttachmentsMType a)
-
-        writeVkPResolveAttachments ::
-                                   Ptr a -> VkPResolveAttachmentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pResolveAttachments'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPResolveAttachments a
-
-class HasVkPResults a where
-        type VkPResultsMType a :: *
-
-        vkPResults :: a -> VkPResultsMType a
-
-        vkPResultsByteOffset :: a -> Int
-
-        readVkPResults :: Ptr a -> IO (VkPResultsMType a)
-
-        writeVkPResults :: Ptr a -> VkPResultsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pResults'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPResults a
-
-class HasVkPSFRRects a where
-        type VkPSFRRectsMType a :: *
-
-        vkPSFRRects :: a -> VkPSFRRectsMType a
-
-        vkPSFRRectsByteOffset :: a -> Int
-
-        readVkPSFRRects :: Ptr a -> IO (VkPSFRRectsMType a)
-
-        writeVkPSFRRects :: Ptr a -> VkPSFRRectsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSFRRects'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSFRRects a
-
-class HasVkPSampleLocations a where
-        type VkPSampleLocationsMType a :: *
-
-        vkPSampleLocations :: a -> VkPSampleLocationsMType a
-
-        vkPSampleLocationsByteOffset :: a -> Int
-
-        readVkPSampleLocations :: Ptr a -> IO (VkPSampleLocationsMType a)
-
-        writeVkPSampleLocations ::
-                                Ptr a -> VkPSampleLocationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSampleLocations'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSampleLocations a
-
-class HasVkPSampleMask a where
-        type VkPSampleMaskMType a :: *
-
-        vkPSampleMask :: a -> VkPSampleMaskMType a
-
-        vkPSampleMaskByteOffset :: a -> Int
-
-        readVkPSampleMask :: Ptr a -> IO (VkPSampleMaskMType a)
-
-        writeVkPSampleMask :: Ptr a -> VkPSampleMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSampleMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSampleMask a
-
-class HasVkPScissors a where
-        type VkPScissorsMType a :: *
-
-        vkPScissors :: a -> VkPScissorsMType a
-
-        vkPScissorsByteOffset :: a -> Int
-
-        readVkPScissors :: Ptr a -> IO (VkPScissorsMType a)
-
-        writeVkPScissors :: Ptr a -> VkPScissorsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pScissors'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPScissors a
-
-class HasVkPSetLayouts a where
-        type VkPSetLayoutsMType a :: *
-
-        vkPSetLayouts :: a -> VkPSetLayoutsMType a
-
-        vkPSetLayoutsByteOffset :: a -> Int
-
-        readVkPSetLayouts :: Ptr a -> IO (VkPSetLayoutsMType a)
-
-        writeVkPSetLayouts :: Ptr a -> VkPSetLayoutsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSetLayouts'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSetLayouts a
-
-class HasVkPSignalSemaphoreDeviceIndices a where
-        type VkPSignalSemaphoreDeviceIndicesMType a :: *
-
-        vkPSignalSemaphoreDeviceIndices ::
-                                        a -> VkPSignalSemaphoreDeviceIndicesMType a
-
-        vkPSignalSemaphoreDeviceIndicesByteOffset :: a -> Int
-
-        readVkPSignalSemaphoreDeviceIndices ::
-                                            Ptr a -> IO (VkPSignalSemaphoreDeviceIndicesMType a)
-
-        writeVkPSignalSemaphoreDeviceIndices ::
-                                             Ptr a ->
-                                               VkPSignalSemaphoreDeviceIndicesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'pSignalSemaphoreDeviceIndices'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSignalSemaphoreDeviceIndices a
-
-class HasVkPSignalSemaphoreValues a where
-        type VkPSignalSemaphoreValuesMType a :: *
-
-        vkPSignalSemaphoreValues :: a -> VkPSignalSemaphoreValuesMType a
-
-        vkPSignalSemaphoreValuesByteOffset :: a -> Int
-
-        readVkPSignalSemaphoreValues ::
-                                     Ptr a -> IO (VkPSignalSemaphoreValuesMType a)
-
-        writeVkPSignalSemaphoreValues ::
-                                      Ptr a -> VkPSignalSemaphoreValuesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSignalSemaphoreValues'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSignalSemaphoreValues a
-
-class HasVkPSignalSemaphores a where
-        type VkPSignalSemaphoresMType a :: *
-
-        vkPSignalSemaphores :: a -> VkPSignalSemaphoresMType a
-
-        vkPSignalSemaphoresByteOffset :: a -> Int
-
-        readVkPSignalSemaphores :: Ptr a -> IO (VkPSignalSemaphoresMType a)
-
-        writeVkPSignalSemaphores ::
-                                 Ptr a -> VkPSignalSemaphoresMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSignalSemaphores'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSignalSemaphores a
-
-class HasVkPSpecializationInfo a where
-        type VkPSpecializationInfoMType a :: *
-
-        vkPSpecializationInfo :: a -> VkPSpecializationInfoMType a
-
-        vkPSpecializationInfoByteOffset :: a -> Int
-
-        readVkPSpecializationInfo ::
-                                  Ptr a -> IO (VkPSpecializationInfoMType a)
-
-        writeVkPSpecializationInfo ::
-                                   Ptr a -> VkPSpecializationInfoMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSpecializationInfo'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSpecializationInfo a
-
-class HasVkPStages a where
-        type VkPStagesMType a :: *
-
-        vkPStages :: a -> VkPStagesMType a
-
-        vkPStagesByteOffset :: a -> Int
-
-        readVkPStages :: Ptr a -> IO (VkPStagesMType a)
-
-        writeVkPStages :: Ptr a -> VkPStagesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pStages'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPStages a
-
-class HasVkPSubpasses a where
-        type VkPSubpassesMType a :: *
-
-        vkPSubpasses :: a -> VkPSubpassesMType a
-
-        vkPSubpassesByteOffset :: a -> Int
-
-        readVkPSubpasses :: Ptr a -> IO (VkPSubpassesMType a)
-
-        writeVkPSubpasses :: Ptr a -> VkPSubpassesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSubpasses'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSubpasses a
-
-class HasVkPSwapchains a where
-        type VkPSwapchainsMType a :: *
-
-        vkPSwapchains :: a -> VkPSwapchainsMType a
-
-        vkPSwapchainsByteOffset :: a -> Int
-
-        readVkPSwapchains :: Ptr a -> IO (VkPSwapchainsMType a)
-
-        writeVkPSwapchains :: Ptr a -> VkPSwapchainsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pSwapchains'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPSwapchains a
-
-class HasVkPTag a where
-        type VkPTagMType a :: *
-
-        vkPTag :: a -> VkPTagMType a
-
-        vkPTagByteOffset :: a -> Int
-
-        readVkPTag :: Ptr a -> IO (VkPTagMType a)
-
-        writeVkPTag :: Ptr a -> VkPTagMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pTag'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPTag a
-
-class HasVkPTessellationState a where
-        type VkPTessellationStateMType a :: *
-
-        vkPTessellationState :: a -> VkPTessellationStateMType a
-
-        vkPTessellationStateByteOffset :: a -> Int
-
-        readVkPTessellationState ::
-                                 Ptr a -> IO (VkPTessellationStateMType a)
-
-        writeVkPTessellationState ::
-                                  Ptr a -> VkPTessellationStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pTessellationState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPTessellationState a
-
-class HasVkPTexelBufferView a where
-        type VkPTexelBufferViewMType a :: *
-
-        vkPTexelBufferView :: a -> VkPTexelBufferViewMType a
-
-        vkPTexelBufferViewByteOffset :: a -> Int
-
-        readVkPTexelBufferView :: Ptr a -> IO (VkPTexelBufferViewMType a)
-
-        writeVkPTexelBufferView ::
-                                Ptr a -> VkPTexelBufferViewMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pTexelBufferView'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPTexelBufferView a
-
-class HasVkPTimes a where
-        type VkPTimesMType a :: *
-
-        vkPTimes :: a -> VkPTimesMType a
-
-        vkPTimesByteOffset :: a -> Int
-
-        readVkPTimes :: Ptr a -> IO (VkPTimesMType a)
-
-        writeVkPTimes :: Ptr a -> VkPTimesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pTimes'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPTimes a
-
-class HasVkPTokens a where
-        type VkPTokensMType a :: *
-
-        vkPTokens :: a -> VkPTokensMType a
-
-        vkPTokensByteOffset :: a -> Int
-
-        readVkPTokens :: Ptr a -> IO (VkPTokensMType a)
-
-        writeVkPTokens :: Ptr a -> VkPTokensMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pTokens'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPTokens a
-
-class HasVkPUserData a where
-        type VkPUserDataMType a :: *
-
-        vkPUserData :: a -> VkPUserDataMType a
-
-        vkPUserDataByteOffset :: a -> Int
-
-        readVkPUserData :: Ptr a -> IO (VkPUserDataMType a)
-
-        writeVkPUserData :: Ptr a -> VkPUserDataMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pUserData'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPUserData a
-
-class HasVkPVertexAttributeDescriptions a where
-        type VkPVertexAttributeDescriptionsMType a :: *
-
-        vkPVertexAttributeDescriptions ::
-                                       a -> VkPVertexAttributeDescriptionsMType a
-
-        vkPVertexAttributeDescriptionsByteOffset :: a -> Int
-
-        readVkPVertexAttributeDescriptions ::
-                                           Ptr a -> IO (VkPVertexAttributeDescriptionsMType a)
-
-        writeVkPVertexAttributeDescriptions ::
-                                            Ptr a -> VkPVertexAttributeDescriptionsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'pVertexAttributeDescriptions'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPVertexAttributeDescriptions a
-
-class HasVkPVertexBindingDescriptions a where
-        type VkPVertexBindingDescriptionsMType a :: *
-
-        vkPVertexBindingDescriptions ::
-                                     a -> VkPVertexBindingDescriptionsMType a
-
-        vkPVertexBindingDescriptionsByteOffset :: a -> Int
-
-        readVkPVertexBindingDescriptions ::
-                                         Ptr a -> IO (VkPVertexBindingDescriptionsMType a)
-
-        writeVkPVertexBindingDescriptions ::
-                                          Ptr a -> VkPVertexBindingDescriptionsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pVertexBindingDescriptions'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPVertexBindingDescriptions a
-
-class HasVkPVertexInputState a where
-        type VkPVertexInputStateMType a :: *
-
-        vkPVertexInputState :: a -> VkPVertexInputStateMType a
-
-        vkPVertexInputStateByteOffset :: a -> Int
-
-        readVkPVertexInputState :: Ptr a -> IO (VkPVertexInputStateMType a)
-
-        writeVkPVertexInputState ::
-                                 Ptr a -> VkPVertexInputStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pVertexInputState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPVertexInputState a
-
-class HasVkPView a where
-        type VkPViewMType a :: *
-
-        vkPView :: a -> VkPViewMType a
-
-        vkPViewByteOffset :: a -> Int
-
-        readVkPView :: Ptr a -> IO (VkPViewMType a)
-
-        writeVkPView :: Ptr a -> VkPViewMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pView'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPView a
-
-class HasVkPViewFormats a where
-        type VkPViewFormatsMType a :: *
-
-        vkPViewFormats :: a -> VkPViewFormatsMType a
-
-        vkPViewFormatsByteOffset :: a -> Int
-
-        readVkPViewFormats :: Ptr a -> IO (VkPViewFormatsMType a)
-
-        writeVkPViewFormats :: Ptr a -> VkPViewFormatsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewFormats'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewFormats a
-
-class HasVkPViewMasks a where
-        type VkPViewMasksMType a :: *
-
-        vkPViewMasks :: a -> VkPViewMasksMType a
-
-        vkPViewMasksByteOffset :: a -> Int
-
-        readVkPViewMasks :: Ptr a -> IO (VkPViewMasksMType a)
-
-        writeVkPViewMasks :: Ptr a -> VkPViewMasksMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewMasks'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewMasks a
-
-class HasVkPViewOffsets a where
-        type VkPViewOffsetsMType a :: *
-
-        vkPViewOffsets :: a -> VkPViewOffsetsMType a
-
-        vkPViewOffsetsByteOffset :: a -> Int
-
-        readVkPViewOffsets :: Ptr a -> IO (VkPViewOffsetsMType a)
-
-        writeVkPViewOffsets :: Ptr a -> VkPViewOffsetsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewOffsets'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewOffsets a
-
-class HasVkPViewportState a where
-        type VkPViewportStateMType a :: *
-
-        vkPViewportState :: a -> VkPViewportStateMType a
-
-        vkPViewportStateByteOffset :: a -> Int
-
-        readVkPViewportState :: Ptr a -> IO (VkPViewportStateMType a)
-
-        writeVkPViewportState :: Ptr a -> VkPViewportStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewportState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewportState a
-
-class HasVkPViewportSwizzles a where
-        type VkPViewportSwizzlesMType a :: *
-
-        vkPViewportSwizzles :: a -> VkPViewportSwizzlesMType a
-
-        vkPViewportSwizzlesByteOffset :: a -> Int
-
-        readVkPViewportSwizzles :: Ptr a -> IO (VkPViewportSwizzlesMType a)
-
-        writeVkPViewportSwizzles ::
-                                 Ptr a -> VkPViewportSwizzlesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewportSwizzles'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewportSwizzles a
-
-class HasVkPViewportWScalings a where
-        type VkPViewportWScalingsMType a :: *
-
-        vkPViewportWScalings :: a -> VkPViewportWScalingsMType a
-
-        vkPViewportWScalingsByteOffset :: a -> Int
-
-        readVkPViewportWScalings ::
-                                 Ptr a -> IO (VkPViewportWScalingsMType a)
-
-        writeVkPViewportWScalings ::
-                                  Ptr a -> VkPViewportWScalingsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewportWScalings'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewportWScalings a
-
-class HasVkPViewports a where
-        type VkPViewportsMType a :: *
-
-        vkPViewports :: a -> VkPViewportsMType a
-
-        vkPViewportsByteOffset :: a -> Int
-
-        readVkPViewports :: Ptr a -> IO (VkPViewportsMType a)
-
-        writeVkPViewports :: Ptr a -> VkPViewportsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pViewports'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPViewports a
-
-class HasVkPWaitDstStageMask a where
-        type VkPWaitDstStageMaskMType a :: *
-
-        vkPWaitDstStageMask :: a -> VkPWaitDstStageMaskMType a
-
-        vkPWaitDstStageMaskByteOffset :: a -> Int
-
-        readVkPWaitDstStageMask :: Ptr a -> IO (VkPWaitDstStageMaskMType a)
-
-        writeVkPWaitDstStageMask ::
-                                 Ptr a -> VkPWaitDstStageMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pWaitDstStageMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPWaitDstStageMask a
-
-class HasVkPWaitSemaphoreDeviceIndices a where
-        type VkPWaitSemaphoreDeviceIndicesMType a :: *
-
-        vkPWaitSemaphoreDeviceIndices ::
-                                      a -> VkPWaitSemaphoreDeviceIndicesMType a
-
-        vkPWaitSemaphoreDeviceIndicesByteOffset :: a -> Int
-
-        readVkPWaitSemaphoreDeviceIndices ::
-                                          Ptr a -> IO (VkPWaitSemaphoreDeviceIndicesMType a)
-
-        writeVkPWaitSemaphoreDeviceIndices ::
-                                           Ptr a -> VkPWaitSemaphoreDeviceIndicesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pWaitSemaphoreDeviceIndices'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPWaitSemaphoreDeviceIndices a
-
-class HasVkPWaitSemaphoreValues a where
-        type VkPWaitSemaphoreValuesMType a :: *
-
-        vkPWaitSemaphoreValues :: a -> VkPWaitSemaphoreValuesMType a
-
-        vkPWaitSemaphoreValuesByteOffset :: a -> Int
-
-        readVkPWaitSemaphoreValues ::
-                                   Ptr a -> IO (VkPWaitSemaphoreValuesMType a)
-
-        writeVkPWaitSemaphoreValues ::
-                                    Ptr a -> VkPWaitSemaphoreValuesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pWaitSemaphoreValues'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPWaitSemaphoreValues a
-
-class HasVkPWaitSemaphores a where
-        type VkPWaitSemaphoresMType a :: *
-
-        vkPWaitSemaphores :: a -> VkPWaitSemaphoresMType a
-
-        vkPWaitSemaphoresByteOffset :: a -> Int
-
-        readVkPWaitSemaphores :: Ptr a -> IO (VkPWaitSemaphoresMType a)
-
-        writeVkPWaitSemaphores ::
-                               Ptr a -> VkPWaitSemaphoresMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pWaitSemaphores'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPWaitSemaphores a
-
-class HasVkParameters a where
-        type VkParametersMType a :: *
-
-        vkParameters :: a -> VkParametersMType a
-
-        vkParametersByteOffset :: a -> Int
-
-        readVkParameters :: Ptr a -> IO (VkParametersMType a)
-
-        writeVkParameters :: Ptr a -> VkParametersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'parameters'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkParameters a
-
-class HasVkPassOp a where
-        type VkPassOpMType a :: *
-
-        vkPassOp :: a -> VkPassOpMType a
-
-        vkPassOpByteOffset :: a -> Int
-
-        readVkPassOp :: Ptr a -> IO (VkPassOpMType a)
-
-        writeVkPassOp :: Ptr a -> VkPassOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'passOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPassOp a
-
-class HasVkPatchControlPoints a where
-        type VkPatchControlPointsMType a :: *
-
-        vkPatchControlPoints :: a -> VkPatchControlPointsMType a
-
-        vkPatchControlPointsByteOffset :: a -> Int
-
-        readVkPatchControlPoints ::
-                                 Ptr a -> IO (VkPatchControlPointsMType a)
-
-        writeVkPatchControlPoints ::
-                                  Ptr a -> VkPatchControlPointsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'patchControlPoints'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPatchControlPoints a
-
-class HasVkPerViewPositionAllComponents a where
-        type VkPerViewPositionAllComponentsMType a :: *
-
-        vkPerViewPositionAllComponents ::
-                                       a -> VkPerViewPositionAllComponentsMType a
-
-        vkPerViewPositionAllComponentsByteOffset :: a -> Int
-
-        readVkPerViewPositionAllComponents ::
-                                           Ptr a -> IO (VkPerViewPositionAllComponentsMType a)
-
-        writeVkPerViewPositionAllComponents ::
-                                            Ptr a -> VkPerViewPositionAllComponentsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'perViewPositionAllComponents'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPerViewPositionAllComponents a
-
-class HasVkPersistent a where
-        type VkPersistentMType a :: *
-
-        vkPersistent :: a -> VkPersistentMType a
-
-        vkPersistentByteOffset :: a -> Int
-
-        readVkPersistent :: Ptr a -> IO (VkPersistentMType a)
-
-        writeVkPersistent :: Ptr a -> VkPersistentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'persistent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPersistent a
-
-class HasVkPersistentContent a where
-        type VkPersistentContentMType a :: *
-
-        vkPersistentContent :: a -> VkPersistentContentMType a
-
-        vkPersistentContentByteOffset :: a -> Int
-
-        readVkPersistentContent :: Ptr a -> IO (VkPersistentContentMType a)
-
-        writeVkPersistentContent ::
-                                 Ptr a -> VkPersistentContentMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'persistentContent'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPersistentContent a
-
-class HasVkPfnAllocation a where
-        type VkPfnAllocationMType a :: *
-
-        vkPfnAllocation :: a -> VkPfnAllocationMType a
-
-        vkPfnAllocationByteOffset :: a -> Int
-
-        readVkPfnAllocation :: Ptr a -> IO (VkPfnAllocationMType a)
-
-        writeVkPfnAllocation :: Ptr a -> VkPfnAllocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pfnAllocation'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPfnAllocation a
-
-class HasVkPfnCallback a where
-        type VkPfnCallbackMType a :: *
-
-        vkPfnCallback :: a -> VkPfnCallbackMType a
-
-        vkPfnCallbackByteOffset :: a -> Int
-
-        readVkPfnCallback :: Ptr a -> IO (VkPfnCallbackMType a)
-
-        writeVkPfnCallback :: Ptr a -> VkPfnCallbackMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pfnCallback'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPfnCallback a
-
-class HasVkPfnFree a where
-        type VkPfnFreeMType a :: *
-
-        vkPfnFree :: a -> VkPfnFreeMType a
-
-        vkPfnFreeByteOffset :: a -> Int
-
-        readVkPfnFree :: Ptr a -> IO (VkPfnFreeMType a)
-
-        writeVkPfnFree :: Ptr a -> VkPfnFreeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pfnFree'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPfnFree a
-
-class HasVkPfnInternalAllocation a where
-        type VkPfnInternalAllocationMType a :: *
-
-        vkPfnInternalAllocation :: a -> VkPfnInternalAllocationMType a
-
-        vkPfnInternalAllocationByteOffset :: a -> Int
-
-        readVkPfnInternalAllocation ::
-                                    Ptr a -> IO (VkPfnInternalAllocationMType a)
-
-        writeVkPfnInternalAllocation ::
-                                     Ptr a -> VkPfnInternalAllocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pfnInternalAllocation'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPfnInternalAllocation a
-
-class HasVkPfnInternalFree a where
-        type VkPfnInternalFreeMType a :: *
-
-        vkPfnInternalFree :: a -> VkPfnInternalFreeMType a
-
-        vkPfnInternalFreeByteOffset :: a -> Int
-
-        readVkPfnInternalFree :: Ptr a -> IO (VkPfnInternalFreeMType a)
-
-        writeVkPfnInternalFree ::
-                               Ptr a -> VkPfnInternalFreeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pfnInternalFree'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPfnInternalFree a
-
-class HasVkPfnReallocation a where
-        type VkPfnReallocationMType a :: *
-
-        vkPfnReallocation :: a -> VkPfnReallocationMType a
-
-        vkPfnReallocationByteOffset :: a -> Int
-
-        readVkPfnReallocation :: Ptr a -> IO (VkPfnReallocationMType a)
-
-        writeVkPfnReallocation ::
-                               Ptr a -> VkPfnReallocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pfnReallocation'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPfnReallocation a
-
-class HasVkPhysicalDeviceCount a where
-        type VkPhysicalDeviceCountMType a :: *
-
-        vkPhysicalDeviceCount :: a -> VkPhysicalDeviceCountMType a
-
-        vkPhysicalDeviceCountByteOffset :: a -> Int
-
-        readVkPhysicalDeviceCount ::
-                                  Ptr a -> IO (VkPhysicalDeviceCountMType a)
-
-        writeVkPhysicalDeviceCount ::
-                                   Ptr a -> VkPhysicalDeviceCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'physicalDeviceCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPhysicalDeviceCount a
-
-class HasVkPhysicalDevicesArray a where
-        type VkPhysicalDevicesArrayMType a :: *
-
-        vkPhysicalDevicesArray :: a -> Int -> VkPhysicalDevicesArrayMType a
-
-        vkPhysicalDevicesArrayByteOffset :: a -> Int
-
-        readVkPhysicalDevicesArray ::
-                                   Ptr a -> Int -> IO (VkPhysicalDevicesArrayMType a)
-
-        writeVkPhysicalDevicesArray ::
-                                    Ptr a -> Int -> VkPhysicalDevicesArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'physicalDevices'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPhysicalDevicesArray a
-
-class HasVkPhysicalDimensions a where
-        type VkPhysicalDimensionsMType a :: *
-
-        vkPhysicalDimensions :: a -> VkPhysicalDimensionsMType a
-
-        vkPhysicalDimensionsByteOffset :: a -> Int
-
-        readVkPhysicalDimensions ::
-                                 Ptr a -> IO (VkPhysicalDimensionsMType a)
-
-        writeVkPhysicalDimensions ::
-                                  Ptr a -> VkPhysicalDimensionsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'physicalDimensions'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPhysicalDimensions a
-
-class HasVkPhysicalResolution a where
-        type VkPhysicalResolutionMType a :: *
-
-        vkPhysicalResolution :: a -> VkPhysicalResolutionMType a
-
-        vkPhysicalResolutionByteOffset :: a -> Int
-
-        readVkPhysicalResolution ::
-                                 Ptr a -> IO (VkPhysicalResolutionMType a)
-
-        writeVkPhysicalResolution ::
-                                  Ptr a -> VkPhysicalResolutionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'physicalResolution'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPhysicalResolution a
-
-class HasVkPipeline a where
-        type VkPipelineMType a :: *
-
-        vkPipeline :: a -> VkPipelineMType a
-
-        vkPipelineByteOffset :: a -> Int
-
-        readVkPipeline :: Ptr a -> IO (VkPipelineMType a)
-
-        writeVkPipeline :: Ptr a -> VkPipelineMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pipeline'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPipeline a
-
-class HasVkPipelineBindPoint a where
-        type VkPipelineBindPointMType a :: *
-
-        vkPipelineBindPoint :: a -> VkPipelineBindPointMType a
-
-        vkPipelineBindPointByteOffset :: a -> Int
-
-        readVkPipelineBindPoint :: Ptr a -> IO (VkPipelineBindPointMType a)
-
-        writeVkPipelineBindPoint ::
-                                 Ptr a -> VkPipelineBindPointMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pipelineBindPoint'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPipelineBindPoint a
-
-class HasVkPipelineCacheUUIDArray a where
-        type VkPipelineCacheUUIDArrayMType a :: *
-
-        vkPipelineCacheUUIDArray ::
-                                 a -> Int -> VkPipelineCacheUUIDArrayMType a
-
-        vkPipelineCacheUUIDArrayByteOffset :: a -> Int
-
-        readVkPipelineCacheUUIDArray ::
-                                     Ptr a -> Int -> IO (VkPipelineCacheUUIDArrayMType a)
-
-        writeVkPipelineCacheUUIDArray ::
-                                      Ptr a -> Int -> VkPipelineCacheUUIDArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pipelineCacheUUID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPipelineCacheUUIDArray a
-
-class HasVkPipelineLayout a where
-        type VkPipelineLayoutMType a :: *
-
-        vkPipelineLayout :: a -> VkPipelineLayoutMType a
-
-        vkPipelineLayoutByteOffset :: a -> Int
-
-        readVkPipelineLayout :: Ptr a -> IO (VkPipelineLayoutMType a)
-
-        writeVkPipelineLayout :: Ptr a -> VkPipelineLayoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pipelineLayout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPipelineLayout a
-
-class HasVkPipelineStatistics a where
-        type VkPipelineStatisticsMType a :: *
-
-        vkPipelineStatistics :: a -> VkPipelineStatisticsMType a
-
-        vkPipelineStatisticsByteOffset :: a -> Int
-
-        readVkPipelineStatistics ::
-                                 Ptr a -> IO (VkPipelineStatisticsMType a)
-
-        writeVkPipelineStatistics ::
-                                  Ptr a -> VkPipelineStatisticsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pipelineStatistics'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPipelineStatistics a
-
-class HasVkPipelineStatisticsQuery a where
-        type VkPipelineStatisticsQueryMType a :: *
-
-        vkPipelineStatisticsQuery :: a -> VkPipelineStatisticsQueryMType a
-
-        vkPipelineStatisticsQueryByteOffset :: a -> Int
-
-        readVkPipelineStatisticsQuery ::
-                                      Ptr a -> IO (VkPipelineStatisticsQueryMType a)
-
-        writeVkPipelineStatisticsQuery ::
-                                       Ptr a -> VkPipelineStatisticsQueryMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pipelineStatisticsQuery'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPipelineStatisticsQuery a
-
-class HasVkPlaneAspect a where
-        type VkPlaneAspectMType a :: *
-
-        vkPlaneAspect :: a -> VkPlaneAspectMType a
-
-        vkPlaneAspectByteOffset :: a -> Int
-
-        readVkPlaneAspect :: Ptr a -> IO (VkPlaneAspectMType a)
-
-        writeVkPlaneAspect :: Ptr a -> VkPlaneAspectMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'planeAspect'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPlaneAspect a
-
-class HasVkPlaneIndex a where
-        type VkPlaneIndexMType a :: *
-
-        vkPlaneIndex :: a -> VkPlaneIndexMType a
-
-        vkPlaneIndexByteOffset :: a -> Int
-
-        readVkPlaneIndex :: Ptr a -> IO (VkPlaneIndexMType a)
-
-        writeVkPlaneIndex :: Ptr a -> VkPlaneIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'planeIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPlaneIndex a
-
-class HasVkPlaneReorderPossible a where
-        type VkPlaneReorderPossibleMType a :: *
-
-        vkPlaneReorderPossible :: a -> VkPlaneReorderPossibleMType a
-
-        vkPlaneReorderPossibleByteOffset :: a -> Int
-
-        readVkPlaneReorderPossible ::
-                                   Ptr a -> IO (VkPlaneReorderPossibleMType a)
-
-        writeVkPlaneReorderPossible ::
-                                    Ptr a -> VkPlaneReorderPossibleMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'planeReorderPossible'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPlaneReorderPossible a
-
-class HasVkPlaneStackIndex a where
-        type VkPlaneStackIndexMType a :: *
-
-        vkPlaneStackIndex :: a -> VkPlaneStackIndexMType a
-
-        vkPlaneStackIndexByteOffset :: a -> Int
-
-        readVkPlaneStackIndex :: Ptr a -> IO (VkPlaneStackIndexMType a)
-
-        writeVkPlaneStackIndex ::
-                               Ptr a -> VkPlaneStackIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'planeStackIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPlaneStackIndex a
-
-class HasVkPointClippingBehavior a where
-        type VkPointClippingBehaviorMType a :: *
-
-        vkPointClippingBehavior :: a -> VkPointClippingBehaviorMType a
-
-        vkPointClippingBehaviorByteOffset :: a -> Int
-
-        readVkPointClippingBehavior ::
-                                    Ptr a -> IO (VkPointClippingBehaviorMType a)
-
-        writeVkPointClippingBehavior ::
-                                     Ptr a -> VkPointClippingBehaviorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pointClippingBehavior'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPointClippingBehavior a
-
-class HasVkPointSizeGranularity a where
-        type VkPointSizeGranularityMType a :: *
-
-        vkPointSizeGranularity :: a -> VkPointSizeGranularityMType a
-
-        vkPointSizeGranularityByteOffset :: a -> Int
-
-        readVkPointSizeGranularity ::
-                                   Ptr a -> IO (VkPointSizeGranularityMType a)
-
-        writeVkPointSizeGranularity ::
-                                    Ptr a -> VkPointSizeGranularityMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pointSizeGranularity'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPointSizeGranularity a
-
-class HasVkPointSizeRangeArray a where
-        type VkPointSizeRangeArrayMType a :: *
-
-        vkPointSizeRangeArray :: a -> Int -> VkPointSizeRangeArrayMType a
-
-        vkPointSizeRangeArrayByteOffset :: a -> Int
-
-        readVkPointSizeRangeArray ::
-                                  Ptr a -> Int -> IO (VkPointSizeRangeArrayMType a)
-
-        writeVkPointSizeRangeArray ::
-                                   Ptr a -> Int -> VkPointSizeRangeArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pointSizeRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPointSizeRangeArray a
-
-class HasVkPolygonMode a where
-        type VkPolygonModeMType a :: *
-
-        vkPolygonMode :: a -> VkPolygonModeMType a
-
-        vkPolygonModeByteOffset :: a -> Int
-
-        readVkPolygonMode :: Ptr a -> IO (VkPolygonModeMType a)
-
-        writeVkPolygonMode :: Ptr a -> VkPolygonModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'polygonMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPolygonMode a
-
-class HasVkPoolSizeCount a where
-        type VkPoolSizeCountMType a :: *
-
-        vkPoolSizeCount :: a -> VkPoolSizeCountMType a
-
-        vkPoolSizeCountByteOffset :: a -> Int
-
-        readVkPoolSizeCount :: Ptr a -> IO (VkPoolSizeCountMType a)
-
-        writeVkPoolSizeCount :: Ptr a -> VkPoolSizeCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'poolSizeCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPoolSizeCount a
-
-class HasVkPostSubpassSampleLocationsCount a where
-        type VkPostSubpassSampleLocationsCountMType a :: *
-
-        vkPostSubpassSampleLocationsCount ::
-                                          a -> VkPostSubpassSampleLocationsCountMType a
-
-        vkPostSubpassSampleLocationsCountByteOffset :: a -> Int
-
-        readVkPostSubpassSampleLocationsCount ::
-                                              Ptr a -> IO (VkPostSubpassSampleLocationsCountMType a)
-
-        writeVkPostSubpassSampleLocationsCount ::
-                                               Ptr a ->
-                                                 VkPostSubpassSampleLocationsCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'postSubpassSampleLocationsCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPostSubpassSampleLocationsCount a
-
-class HasVkPowerState a where
-        type VkPowerStateMType a :: *
-
-        vkPowerState :: a -> VkPowerStateMType a
-
-        vkPowerStateByteOffset :: a -> Int
-
-        readVkPowerState :: Ptr a -> IO (VkPowerStateMType a)
-
-        writeVkPowerState :: Ptr a -> VkPowerStateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'powerState'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPowerState a
-
-class HasVkPpEnabledExtensionNames a where
-        type VkPpEnabledExtensionNamesMType a :: *
-
-        vkPpEnabledExtensionNames :: a -> VkPpEnabledExtensionNamesMType a
-
-        vkPpEnabledExtensionNamesByteOffset :: a -> Int
-
-        readVkPpEnabledExtensionNames ::
-                                      Ptr a -> IO (VkPpEnabledExtensionNamesMType a)
-
-        writeVkPpEnabledExtensionNames ::
-                                       Ptr a -> VkPpEnabledExtensionNamesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ppEnabledExtensionNames'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPpEnabledExtensionNames a
-
-class HasVkPpEnabledLayerNames a where
-        type VkPpEnabledLayerNamesMType a :: *
-
-        vkPpEnabledLayerNames :: a -> VkPpEnabledLayerNamesMType a
-
-        vkPpEnabledLayerNamesByteOffset :: a -> Int
-
-        readVkPpEnabledLayerNames ::
-                                  Ptr a -> IO (VkPpEnabledLayerNamesMType a)
-
-        writeVkPpEnabledLayerNames ::
-                                   Ptr a -> VkPpEnabledLayerNamesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ppEnabledLayerNames'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPpEnabledLayerNames a
-
-class HasVkPreTransform a where
-        type VkPreTransformMType a :: *
-
-        vkPreTransform :: a -> VkPreTransformMType a
-
-        vkPreTransformByteOffset :: a -> Int
-
-        readVkPreTransform :: Ptr a -> IO (VkPreTransformMType a)
-
-        writeVkPreTransform :: Ptr a -> VkPreTransformMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'preTransform'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPreTransform a
-
-class HasVkPrefersDedicatedAllocation a where
-        type VkPrefersDedicatedAllocationMType a :: *
-
-        vkPrefersDedicatedAllocation ::
-                                     a -> VkPrefersDedicatedAllocationMType a
-
-        vkPrefersDedicatedAllocationByteOffset :: a -> Int
-
-        readVkPrefersDedicatedAllocation ::
-                                         Ptr a -> IO (VkPrefersDedicatedAllocationMType a)
-
-        writeVkPrefersDedicatedAllocation ::
-                                          Ptr a -> VkPrefersDedicatedAllocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'prefersDedicatedAllocation'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPrefersDedicatedAllocation a
-
-class HasVkPresentID a where
-        type VkPresentIDMType a :: *
-
-        vkPresentID :: a -> VkPresentIDMType a
-
-        vkPresentIDByteOffset :: a -> Int
-
-        readVkPresentID :: Ptr a -> IO (VkPresentIDMType a)
-
-        writeVkPresentID :: Ptr a -> VkPresentIDMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'presentID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPresentID a
-
-class HasVkPresentMargin a where
-        type VkPresentMarginMType a :: *
-
-        vkPresentMargin :: a -> VkPresentMarginMType a
-
-        vkPresentMarginByteOffset :: a -> Int
-
-        readVkPresentMargin :: Ptr a -> IO (VkPresentMarginMType a)
-
-        writeVkPresentMargin :: Ptr a -> VkPresentMarginMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'presentMargin'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPresentMargin a
-
-class HasVkPresentMaskArray a where
-        type VkPresentMaskArrayMType a :: *
-
-        vkPresentMaskArray :: a -> Int -> VkPresentMaskArrayMType a
-
-        vkPresentMaskArrayByteOffset :: a -> Int
-
-        readVkPresentMaskArray ::
-                               Ptr a -> Int -> IO (VkPresentMaskArrayMType a)
-
-        writeVkPresentMaskArray ::
-                                Ptr a -> Int -> VkPresentMaskArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'presentMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPresentMaskArray a
-
-class HasVkPresentMode a where
-        type VkPresentModeMType a :: *
-
-        vkPresentMode :: a -> VkPresentModeMType a
-
-        vkPresentModeByteOffset :: a -> Int
-
-        readVkPresentMode :: Ptr a -> IO (VkPresentModeMType a)
-
-        writeVkPresentMode :: Ptr a -> VkPresentModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'presentMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPresentMode a
-
-class HasVkPreserveAttachmentCount a where
-        type VkPreserveAttachmentCountMType a :: *
-
-        vkPreserveAttachmentCount :: a -> VkPreserveAttachmentCountMType a
-
-        vkPreserveAttachmentCountByteOffset :: a -> Int
-
-        readVkPreserveAttachmentCount ::
-                                      Ptr a -> IO (VkPreserveAttachmentCountMType a)
-
-        writeVkPreserveAttachmentCount ::
-                                       Ptr a -> VkPreserveAttachmentCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'preserveAttachmentCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPreserveAttachmentCount a
-
-class HasVkPrimitiveOverestimationSize a where
-        type VkPrimitiveOverestimationSizeMType a :: *
-
-        vkPrimitiveOverestimationSize ::
-                                      a -> VkPrimitiveOverestimationSizeMType a
-
-        vkPrimitiveOverestimationSizeByteOffset :: a -> Int
-
-        readVkPrimitiveOverestimationSize ::
-                                          Ptr a -> IO (VkPrimitiveOverestimationSizeMType a)
-
-        writeVkPrimitiveOverestimationSize ::
-                                           Ptr a -> VkPrimitiveOverestimationSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'primitiveOverestimationSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPrimitiveOverestimationSize a
-
-class HasVkPrimitiveRestartEnable a where
-        type VkPrimitiveRestartEnableMType a :: *
-
-        vkPrimitiveRestartEnable :: a -> VkPrimitiveRestartEnableMType a
-
-        vkPrimitiveRestartEnableByteOffset :: a -> Int
-
-        readVkPrimitiveRestartEnable ::
-                                     Ptr a -> IO (VkPrimitiveRestartEnableMType a)
-
-        writeVkPrimitiveRestartEnable ::
-                                      Ptr a -> VkPrimitiveRestartEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'primitiveRestartEnable'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPrimitiveRestartEnable a
-
-class HasVkPrimitiveUnderestimation a where
-        type VkPrimitiveUnderestimationMType a :: *
-
-        vkPrimitiveUnderestimation ::
-                                   a -> VkPrimitiveUnderestimationMType a
-
-        vkPrimitiveUnderestimationByteOffset :: a -> Int
-
-        readVkPrimitiveUnderestimation ::
-                                       Ptr a -> IO (VkPrimitiveUnderestimationMType a)
-
-        writeVkPrimitiveUnderestimation ::
-                                        Ptr a -> VkPrimitiveUnderestimationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'primitiveUnderestimation'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPrimitiveUnderestimation a
-
-class HasVkProperties a where
-        type VkPropertiesMType a :: *
-
-        vkProperties :: a -> VkPropertiesMType a
-
-        vkPropertiesByteOffset :: a -> Int
-
-        readVkProperties :: Ptr a -> IO (VkPropertiesMType a)
-
-        writeVkProperties :: Ptr a -> VkPropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'properties'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkProperties a
-
-class HasVkPropertyFlags a where
-        type VkPropertyFlagsMType a :: *
-
-        vkPropertyFlags :: a -> VkPropertyFlagsMType a
-
-        vkPropertyFlagsByteOffset :: a -> Int
-
-        readVkPropertyFlags :: Ptr a -> IO (VkPropertyFlagsMType a)
-
-        writeVkPropertyFlags :: Ptr a -> VkPropertyFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'propertyFlags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPropertyFlags a
-
-class HasVkPushConstantRangeCount a where
-        type VkPushConstantRangeCountMType a :: *
-
-        vkPushConstantRangeCount :: a -> VkPushConstantRangeCountMType a
-
-        vkPushConstantRangeCountByteOffset :: a -> Int
-
-        readVkPushConstantRangeCount ::
-                                     Ptr a -> IO (VkPushConstantRangeCountMType a)
-
-        writeVkPushConstantRangeCount ::
-                                      Ptr a -> VkPushConstantRangeCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'pushConstantRangeCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkPushConstantRangeCount a
-
-class HasVkQueryCount a where
-        type VkQueryCountMType a :: *
-
-        vkQueryCount :: a -> VkQueryCountMType a
-
-        vkQueryCountByteOffset :: a -> Int
-
-        readVkQueryCount :: Ptr a -> IO (VkQueryCountMType a)
-
-        writeVkQueryCount :: Ptr a -> VkQueryCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queryCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueryCount a
-
-class HasVkQueryFlags a where
-        type VkQueryFlagsMType a :: *
-
-        vkQueryFlags :: a -> VkQueryFlagsMType a
-
-        vkQueryFlagsByteOffset :: a -> Int
-
-        readVkQueryFlags :: Ptr a -> IO (VkQueryFlagsMType a)
-
-        writeVkQueryFlags :: Ptr a -> VkQueryFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queryFlags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueryFlags a
-
-class HasVkQueryType a where
-        type VkQueryTypeMType a :: *
-
-        vkQueryType :: a -> VkQueryTypeMType a
-
-        vkQueryTypeByteOffset :: a -> Int
-
-        readVkQueryType :: Ptr a -> IO (VkQueryTypeMType a)
-
-        writeVkQueryType :: Ptr a -> VkQueryTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queryType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueryType a
-
-class HasVkQueueCount a where
-        type VkQueueCountMType a :: *
-
-        vkQueueCount :: a -> VkQueueCountMType a
-
-        vkQueueCountByteOffset :: a -> Int
-
-        readVkQueueCount :: Ptr a -> IO (VkQueueCountMType a)
-
-        writeVkQueueCount :: Ptr a -> VkQueueCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queueCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueueCount a
-
-class HasVkQueueCreateInfoCount a where
-        type VkQueueCreateInfoCountMType a :: *
-
-        vkQueueCreateInfoCount :: a -> VkQueueCreateInfoCountMType a
-
-        vkQueueCreateInfoCountByteOffset :: a -> Int
-
-        readVkQueueCreateInfoCount ::
-                                   Ptr a -> IO (VkQueueCreateInfoCountMType a)
-
-        writeVkQueueCreateInfoCount ::
-                                    Ptr a -> VkQueueCreateInfoCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queueCreateInfoCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueueCreateInfoCount a
-
-class HasVkQueueFamilyIndex a where
-        type VkQueueFamilyIndexMType a :: *
-
-        vkQueueFamilyIndex :: a -> VkQueueFamilyIndexMType a
-
-        vkQueueFamilyIndexByteOffset :: a -> Int
-
-        readVkQueueFamilyIndex :: Ptr a -> IO (VkQueueFamilyIndexMType a)
-
-        writeVkQueueFamilyIndex ::
-                                Ptr a -> VkQueueFamilyIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queueFamilyIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueueFamilyIndex a
-
-class HasVkQueueFamilyIndexCount a where
-        type VkQueueFamilyIndexCountMType a :: *
-
-        vkQueueFamilyIndexCount :: a -> VkQueueFamilyIndexCountMType a
-
-        vkQueueFamilyIndexCountByteOffset :: a -> Int
-
-        readVkQueueFamilyIndexCount ::
-                                    Ptr a -> IO (VkQueueFamilyIndexCountMType a)
-
-        writeVkQueueFamilyIndexCount ::
-                                     Ptr a -> VkQueueFamilyIndexCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queueFamilyIndexCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueueFamilyIndexCount a
-
-class HasVkQueueFamilyProperties a where
-        type VkQueueFamilyPropertiesMType a :: *
-
-        vkQueueFamilyProperties :: a -> VkQueueFamilyPropertiesMType a
-
-        vkQueueFamilyPropertiesByteOffset :: a -> Int
-
-        readVkQueueFamilyProperties ::
-                                    Ptr a -> IO (VkQueueFamilyPropertiesMType a)
-
-        writeVkQueueFamilyProperties ::
-                                     Ptr a -> VkQueueFamilyPropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queueFamilyProperties'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueueFamilyProperties a
-
-class HasVkQueueFlags a where
-        type VkQueueFlagsMType a :: *
-
-        vkQueueFlags :: a -> VkQueueFlagsMType a
-
-        vkQueueFlagsByteOffset :: a -> Int
-
-        readVkQueueFlags :: Ptr a -> IO (VkQueueFlagsMType a)
-
-        writeVkQueueFlags :: Ptr a -> VkQueueFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'queueFlags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkQueueFlags a
-
-class HasVkR a where
-        type VkRMType a :: *
-
-        vkR :: a -> VkRMType a
-
-        vkRByteOffset :: a -> Int
-
-        readVkR :: Ptr a -> IO (VkRMType a)
-
-        writeVkR :: Ptr a -> VkRMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'r'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkR a
-
-class HasVkRange a where
-        type VkRangeMType a :: *
-
-        vkRange :: a -> VkRangeMType a
-
-        vkRangeByteOffset :: a -> Int
-
-        readVkRange :: Ptr a -> IO (VkRangeMType a)
-
-        writeVkRange :: Ptr a -> VkRangeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'range'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRange a
-
-class HasVkRasterizationOrder a where
-        type VkRasterizationOrderMType a :: *
-
-        vkRasterizationOrder :: a -> VkRasterizationOrderMType a
-
-        vkRasterizationOrderByteOffset :: a -> Int
-
-        readVkRasterizationOrder ::
-                                 Ptr a -> IO (VkRasterizationOrderMType a)
-
-        writeVkRasterizationOrder ::
-                                  Ptr a -> VkRasterizationOrderMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'rasterizationOrder'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRasterizationOrder a
-
-class HasVkRasterizationSamples a where
-        type VkRasterizationSamplesMType a :: *
-
-        vkRasterizationSamples :: a -> VkRasterizationSamplesMType a
-
-        vkRasterizationSamplesByteOffset :: a -> Int
-
-        readVkRasterizationSamples ::
-                                   Ptr a -> IO (VkRasterizationSamplesMType a)
-
-        writeVkRasterizationSamples ::
-                                    Ptr a -> VkRasterizationSamplesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'rasterizationSamples'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRasterizationSamples a
-
-class HasVkRasterizerDiscardEnable a where
-        type VkRasterizerDiscardEnableMType a :: *
-
-        vkRasterizerDiscardEnable :: a -> VkRasterizerDiscardEnableMType a
-
-        vkRasterizerDiscardEnableByteOffset :: a -> Int
-
-        readVkRasterizerDiscardEnable ::
-                                      Ptr a -> IO (VkRasterizerDiscardEnableMType a)
-
-        writeVkRasterizerDiscardEnable ::
-                                       Ptr a -> VkRasterizerDiscardEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'rasterizerDiscardEnable'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRasterizerDiscardEnable a
-
-class HasVkRect a where
-        type VkRectMType a :: *
-
-        vkRect :: a -> VkRectMType a
-
-        vkRectByteOffset :: a -> Int
-
-        readVkRect :: Ptr a -> IO (VkRectMType a)
-
-        writeVkRect :: Ptr a -> VkRectMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'rect'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRect a
-
-class HasVkRectangleCount a where
-        type VkRectangleCountMType a :: *
-
-        vkRectangleCount :: a -> VkRectangleCountMType a
-
-        vkRectangleCountByteOffset :: a -> Int
-
-        readVkRectangleCount :: Ptr a -> IO (VkRectangleCountMType a)
-
-        writeVkRectangleCount :: Ptr a -> VkRectangleCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'rectangleCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRectangleCount a
-
-class HasVkReductionMode a where
-        type VkReductionModeMType a :: *
-
-        vkReductionMode :: a -> VkReductionModeMType a
-
-        vkReductionModeByteOffset :: a -> Int
-
-        readVkReductionMode :: Ptr a -> IO (VkReductionModeMType a)
-
-        writeVkReductionMode :: Ptr a -> VkReductionModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'reductionMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkReductionMode a
-
-class HasVkReference a where
-        type VkReferenceMType a :: *
-
-        vkReference :: a -> VkReferenceMType a
-
-        vkReferenceByteOffset :: a -> Int
-
-        readVkReference :: Ptr a -> IO (VkReferenceMType a)
-
-        writeVkReference :: Ptr a -> VkReferenceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'reference'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkReference a
-
-class HasVkRefreshDuration a where
-        type VkRefreshDurationMType a :: *
-
-        vkRefreshDuration :: a -> VkRefreshDurationMType a
-
-        vkRefreshDurationByteOffset :: a -> Int
-
-        readVkRefreshDuration :: Ptr a -> IO (VkRefreshDurationMType a)
-
-        writeVkRefreshDuration ::
-                               Ptr a -> VkRefreshDurationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'refreshDuration'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRefreshDuration a
-
-class HasVkRefreshRate a where
-        type VkRefreshRateMType a :: *
-
-        vkRefreshRate :: a -> VkRefreshRateMType a
-
-        vkRefreshRateByteOffset :: a -> Int
-
-        readVkRefreshRate :: Ptr a -> IO (VkRefreshRateMType a)
-
-        writeVkRefreshRate :: Ptr a -> VkRefreshRateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'refreshRate'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRefreshRate a
-
-class HasVkReleaseCount a where
-        type VkReleaseCountMType a :: *
-
-        vkReleaseCount :: a -> VkReleaseCountMType a
-
-        vkReleaseCountByteOffset :: a -> Int
-
-        readVkReleaseCount :: Ptr a -> IO (VkReleaseCountMType a)
-
-        writeVkReleaseCount :: Ptr a -> VkReleaseCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'releaseCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkReleaseCount a
-
-class HasVkRenderArea a where
-        type VkRenderAreaMType a :: *
-
-        vkRenderArea :: a -> VkRenderAreaMType a
-
-        vkRenderAreaByteOffset :: a -> Int
-
-        readVkRenderArea :: Ptr a -> IO (VkRenderAreaMType a)
-
-        writeVkRenderArea :: Ptr a -> VkRenderAreaMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'renderArea'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRenderArea a
-
-class HasVkRenderPass a where
-        type VkRenderPassMType a :: *
-
-        vkRenderPass :: a -> VkRenderPassMType a
-
-        vkRenderPassByteOffset :: a -> Int
-
-        readVkRenderPass :: Ptr a -> IO (VkRenderPassMType a)
-
-        writeVkRenderPass :: Ptr a -> VkRenderPassMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'renderPass'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRenderPass a
-
-class HasVkRequiresDedicatedAllocation a where
-        type VkRequiresDedicatedAllocationMType a :: *
-
-        vkRequiresDedicatedAllocation ::
-                                      a -> VkRequiresDedicatedAllocationMType a
-
-        vkRequiresDedicatedAllocationByteOffset :: a -> Int
-
-        readVkRequiresDedicatedAllocation ::
-                                          Ptr a -> IO (VkRequiresDedicatedAllocationMType a)
-
-        writeVkRequiresDedicatedAllocation ::
-                                           Ptr a -> VkRequiresDedicatedAllocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'requiresDedicatedAllocation'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRequiresDedicatedAllocation a
-
-class HasVkResidencyAlignedMipSize a where
-        type VkResidencyAlignedMipSizeMType a :: *
-
-        vkResidencyAlignedMipSize :: a -> VkResidencyAlignedMipSizeMType a
-
-        vkResidencyAlignedMipSizeByteOffset :: a -> Int
-
-        readVkResidencyAlignedMipSize ::
-                                      Ptr a -> IO (VkResidencyAlignedMipSizeMType a)
-
-        writeVkResidencyAlignedMipSize ::
-                                       Ptr a -> VkResidencyAlignedMipSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'residencyAlignedMipSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResidencyAlignedMipSize a
-
-class HasVkResidencyNonResidentStrict a where
-        type VkResidencyNonResidentStrictMType a :: *
-
-        vkResidencyNonResidentStrict ::
-                                     a -> VkResidencyNonResidentStrictMType a
-
-        vkResidencyNonResidentStrictByteOffset :: a -> Int
-
-        readVkResidencyNonResidentStrict ::
-                                         Ptr a -> IO (VkResidencyNonResidentStrictMType a)
-
-        writeVkResidencyNonResidentStrict ::
-                                          Ptr a -> VkResidencyNonResidentStrictMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'residencyNonResidentStrict'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResidencyNonResidentStrict a
-
-class HasVkResidencyStandard2DBlockShape a where
-        type VkResidencyStandard2DBlockShapeMType a :: *
-
-        vkResidencyStandard2DBlockShape ::
-                                        a -> VkResidencyStandard2DBlockShapeMType a
-
-        vkResidencyStandard2DBlockShapeByteOffset :: a -> Int
-
-        readVkResidencyStandard2DBlockShape ::
-                                            Ptr a -> IO (VkResidencyStandard2DBlockShapeMType a)
-
-        writeVkResidencyStandard2DBlockShape ::
-                                             Ptr a ->
-                                               VkResidencyStandard2DBlockShapeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'residencyStandard2DBlockShape'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResidencyStandard2DBlockShape a
-
-class HasVkResidencyStandard2DMultisampleBlockShape a where
-        type VkResidencyStandard2DMultisampleBlockShapeMType a :: *
-
-        vkResidencyStandard2DMultisampleBlockShape ::
-                                                   a ->
-                                                     VkResidencyStandard2DMultisampleBlockShapeMType
-                                                       a
-
-        vkResidencyStandard2DMultisampleBlockShapeByteOffset :: a -> Int
-
-        readVkResidencyStandard2DMultisampleBlockShape ::
-                                                       Ptr a ->
-                                                         IO
-                                                           (VkResidencyStandard2DMultisampleBlockShapeMType
-                                                              a)
-
-        writeVkResidencyStandard2DMultisampleBlockShape ::
-                                                        Ptr a ->
-                                                          VkResidencyStandard2DMultisampleBlockShapeMType
-                                                            a
-                                                            -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'residencyStandard2DMultisampleBlockShape'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResidencyStandard2DMultisampleBlockShape a
-
-class HasVkResidencyStandard3DBlockShape a where
-        type VkResidencyStandard3DBlockShapeMType a :: *
-
-        vkResidencyStandard3DBlockShape ::
-                                        a -> VkResidencyStandard3DBlockShapeMType a
-
-        vkResidencyStandard3DBlockShapeByteOffset :: a -> Int
-
-        readVkResidencyStandard3DBlockShape ::
-                                            Ptr a -> IO (VkResidencyStandard3DBlockShapeMType a)
-
-        writeVkResidencyStandard3DBlockShape ::
-                                             Ptr a ->
-                                               VkResidencyStandard3DBlockShapeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'residencyStandard3DBlockShape'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResidencyStandard3DBlockShape a
-
-class HasVkResourceDeviceIndex a where
-        type VkResourceDeviceIndexMType a :: *
-
-        vkResourceDeviceIndex :: a -> VkResourceDeviceIndexMType a
-
-        vkResourceDeviceIndexByteOffset :: a -> Int
-
-        readVkResourceDeviceIndex ::
-                                  Ptr a -> IO (VkResourceDeviceIndexMType a)
-
-        writeVkResourceDeviceIndex ::
-                                   Ptr a -> VkResourceDeviceIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'resourceDeviceIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResourceDeviceIndex a
-
-class HasVkResourceOffset a where
-        type VkResourceOffsetMType a :: *
-
-        vkResourceOffset :: a -> VkResourceOffsetMType a
-
-        vkResourceOffsetByteOffset :: a -> Int
-
-        readVkResourceOffset :: Ptr a -> IO (VkResourceOffsetMType a)
-
-        writeVkResourceOffset :: Ptr a -> VkResourceOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'resourceOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResourceOffset a
-
-class HasVkResourceUsage a where
-        type VkResourceUsageMType a :: *
-
-        vkResourceUsage :: a -> VkResourceUsageMType a
-
-        vkResourceUsageByteOffset :: a -> Int
-
-        readVkResourceUsage :: Ptr a -> IO (VkResourceUsageMType a)
-
-        writeVkResourceUsage :: Ptr a -> VkResourceUsageMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'resourceUsage'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkResourceUsage a
-
-class HasVkRobustBufferAccess a where
-        type VkRobustBufferAccessMType a :: *
-
-        vkRobustBufferAccess :: a -> VkRobustBufferAccessMType a
-
-        vkRobustBufferAccessByteOffset :: a -> Int
-
-        readVkRobustBufferAccess ::
-                                 Ptr a -> IO (VkRobustBufferAccessMType a)
-
-        writeVkRobustBufferAccess ::
-                                  Ptr a -> VkRobustBufferAccessMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'robustBufferAccess'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRobustBufferAccess a
-
-class HasVkRowPitch a where
-        type VkRowPitchMType a :: *
-
-        vkRowPitch :: a -> VkRowPitchMType a
-
-        vkRowPitchByteOffset :: a -> Int
-
-        readVkRowPitch :: Ptr a -> IO (VkRowPitchMType a)
-
-        writeVkRowPitch :: Ptr a -> VkRowPitchMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'rowPitch'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkRowPitch a
-
-class HasVkSFRRectCount a where
-        type VkSFRRectCountMType a :: *
-
-        vkSFRRectCount :: a -> VkSFRRectCountMType a
-
-        vkSFRRectCountByteOffset :: a -> Int
-
-        readVkSFRRectCount :: Ptr a -> IO (VkSFRRectCountMType a)
-
-        writeVkSFRRectCount :: Ptr a -> VkSFRRectCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'SFRRectCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSFRRectCount a
-
-class HasVkSType a where
-        type VkSTypeMType a :: *
-
-        vkSType :: a -> VkSTypeMType a
-
-        vkSTypeByteOffset :: a -> Int
-
-        readVkSType :: Ptr a -> IO (VkSTypeMType a)
-
-        writeVkSType :: Ptr a -> VkSTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSType a
-
-class HasVkSampleCounts a where
-        type VkSampleCountsMType a :: *
-
-        vkSampleCounts :: a -> VkSampleCountsMType a
-
-        vkSampleCountsByteOffset :: a -> Int
-
-        readVkSampleCounts :: Ptr a -> IO (VkSampleCountsMType a)
-
-        writeVkSampleCounts :: Ptr a -> VkSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleCounts'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleCounts a
-
-class HasVkSampleLocationCoordinateRangeArray a where
-        type VkSampleLocationCoordinateRangeArrayMType a :: *
-
-        vkSampleLocationCoordinateRangeArray ::
-                                             a -> Int -> VkSampleLocationCoordinateRangeArrayMType a
-
-        vkSampleLocationCoordinateRangeArrayByteOffset :: a -> Int
-
-        readVkSampleLocationCoordinateRangeArray ::
-                                                 Ptr a ->
-                                                   Int ->
-                                                     IO
-                                                       (VkSampleLocationCoordinateRangeArrayMType a)
-
-        writeVkSampleLocationCoordinateRangeArray ::
-                                                  Ptr a ->
-                                                    Int ->
-                                                      VkSampleLocationCoordinateRangeArrayMType a ->
-                                                        IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'sampleLocationCoordinateRange'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationCoordinateRangeArray a
-
-class HasVkSampleLocationGridSize a where
-        type VkSampleLocationGridSizeMType a :: *
-
-        vkSampleLocationGridSize :: a -> VkSampleLocationGridSizeMType a
-
-        vkSampleLocationGridSizeByteOffset :: a -> Int
-
-        readVkSampleLocationGridSize ::
-                                     Ptr a -> IO (VkSampleLocationGridSizeMType a)
-
-        writeVkSampleLocationGridSize ::
-                                      Ptr a -> VkSampleLocationGridSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationGridSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationGridSize a
-
-class HasVkSampleLocationSampleCounts a where
-        type VkSampleLocationSampleCountsMType a :: *
-
-        vkSampleLocationSampleCounts ::
-                                     a -> VkSampleLocationSampleCountsMType a
-
-        vkSampleLocationSampleCountsByteOffset :: a -> Int
-
-        readVkSampleLocationSampleCounts ::
-                                         Ptr a -> IO (VkSampleLocationSampleCountsMType a)
-
-        writeVkSampleLocationSampleCounts ::
-                                          Ptr a -> VkSampleLocationSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationSampleCounts a
-
-class HasVkSampleLocationSubPixelBits a where
-        type VkSampleLocationSubPixelBitsMType a :: *
-
-        vkSampleLocationSubPixelBits ::
-                                     a -> VkSampleLocationSubPixelBitsMType a
-
-        vkSampleLocationSubPixelBitsByteOffset :: a -> Int
-
-        readVkSampleLocationSubPixelBits ::
-                                         Ptr a -> IO (VkSampleLocationSubPixelBitsMType a)
-
-        writeVkSampleLocationSubPixelBits ::
-                                          Ptr a -> VkSampleLocationSubPixelBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationSubPixelBits'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationSubPixelBits a
-
-class HasVkSampleLocationsCount a where
-        type VkSampleLocationsCountMType a :: *
-
-        vkSampleLocationsCount :: a -> VkSampleLocationsCountMType a
-
-        vkSampleLocationsCountByteOffset :: a -> Int
-
-        readVkSampleLocationsCount ::
-                                   Ptr a -> IO (VkSampleLocationsCountMType a)
-
-        writeVkSampleLocationsCount ::
-                                    Ptr a -> VkSampleLocationsCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationsCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationsCount a
-
-class HasVkSampleLocationsEnable a where
-        type VkSampleLocationsEnableMType a :: *
-
-        vkSampleLocationsEnable :: a -> VkSampleLocationsEnableMType a
-
-        vkSampleLocationsEnableByteOffset :: a -> Int
-
-        readVkSampleLocationsEnable ::
-                                    Ptr a -> IO (VkSampleLocationsEnableMType a)
-
-        writeVkSampleLocationsEnable ::
-                                     Ptr a -> VkSampleLocationsEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationsEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationsEnable a
-
-class HasVkSampleLocationsInfo a where
-        type VkSampleLocationsInfoMType a :: *
-
-        vkSampleLocationsInfo :: a -> VkSampleLocationsInfoMType a
-
-        vkSampleLocationsInfoByteOffset :: a -> Int
-
-        readVkSampleLocationsInfo ::
-                                  Ptr a -> IO (VkSampleLocationsInfoMType a)
-
-        writeVkSampleLocationsInfo ::
-                                   Ptr a -> VkSampleLocationsInfoMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationsInfo'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationsInfo a
-
-class HasVkSampleLocationsPerPixel a where
-        type VkSampleLocationsPerPixelMType a :: *
-
-        vkSampleLocationsPerPixel :: a -> VkSampleLocationsPerPixelMType a
-
-        vkSampleLocationsPerPixelByteOffset :: a -> Int
-
-        readVkSampleLocationsPerPixel ::
-                                      Ptr a -> IO (VkSampleLocationsPerPixelMType a)
-
-        writeVkSampleLocationsPerPixel ::
-                                       Ptr a -> VkSampleLocationsPerPixelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleLocationsPerPixel'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleLocationsPerPixel a
-
-class HasVkSampleRateShading a where
-        type VkSampleRateShadingMType a :: *
-
-        vkSampleRateShading :: a -> VkSampleRateShadingMType a
-
-        vkSampleRateShadingByteOffset :: a -> Int
-
-        readVkSampleRateShading :: Ptr a -> IO (VkSampleRateShadingMType a)
-
-        writeVkSampleRateShading ::
-                                 Ptr a -> VkSampleRateShadingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleRateShading'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleRateShading a
-
-class HasVkSampleShadingEnable a where
-        type VkSampleShadingEnableMType a :: *
-
-        vkSampleShadingEnable :: a -> VkSampleShadingEnableMType a
-
-        vkSampleShadingEnableByteOffset :: a -> Int
-
-        readVkSampleShadingEnable ::
-                                  Ptr a -> IO (VkSampleShadingEnableMType a)
-
-        writeVkSampleShadingEnable ::
-                                   Ptr a -> VkSampleShadingEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampleShadingEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampleShadingEnable a
-
-class HasVkSampledImageColorSampleCounts a where
-        type VkSampledImageColorSampleCountsMType a :: *
-
-        vkSampledImageColorSampleCounts ::
-                                        a -> VkSampledImageColorSampleCountsMType a
-
-        vkSampledImageColorSampleCountsByteOffset :: a -> Int
-
-        readVkSampledImageColorSampleCounts ::
-                                            Ptr a -> IO (VkSampledImageColorSampleCountsMType a)
-
-        writeVkSampledImageColorSampleCounts ::
-                                             Ptr a ->
-                                               VkSampledImageColorSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'sampledImageColorSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampledImageColorSampleCounts a
-
-class HasVkSampledImageDepthSampleCounts a where
-        type VkSampledImageDepthSampleCountsMType a :: *
-
-        vkSampledImageDepthSampleCounts ::
-                                        a -> VkSampledImageDepthSampleCountsMType a
-
-        vkSampledImageDepthSampleCountsByteOffset :: a -> Int
-
-        readVkSampledImageDepthSampleCounts ::
-                                            Ptr a -> IO (VkSampledImageDepthSampleCountsMType a)
-
-        writeVkSampledImageDepthSampleCounts ::
-                                             Ptr a ->
-                                               VkSampledImageDepthSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'sampledImageDepthSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampledImageDepthSampleCounts a
-
-class HasVkSampledImageIntegerSampleCounts a where
-        type VkSampledImageIntegerSampleCountsMType a :: *
-
-        vkSampledImageIntegerSampleCounts ::
-                                          a -> VkSampledImageIntegerSampleCountsMType a
-
-        vkSampledImageIntegerSampleCountsByteOffset :: a -> Int
-
-        readVkSampledImageIntegerSampleCounts ::
-                                              Ptr a -> IO (VkSampledImageIntegerSampleCountsMType a)
-
-        writeVkSampledImageIntegerSampleCounts ::
-                                               Ptr a ->
-                                                 VkSampledImageIntegerSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'sampledImageIntegerSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampledImageIntegerSampleCounts a
-
-class HasVkSampledImageStencilSampleCounts a where
-        type VkSampledImageStencilSampleCountsMType a :: *
-
-        vkSampledImageStencilSampleCounts ::
-                                          a -> VkSampledImageStencilSampleCountsMType a
-
-        vkSampledImageStencilSampleCountsByteOffset :: a -> Int
-
-        readVkSampledImageStencilSampleCounts ::
-                                              Ptr a -> IO (VkSampledImageStencilSampleCountsMType a)
-
-        writeVkSampledImageStencilSampleCounts ::
-                                               Ptr a ->
-                                                 VkSampledImageStencilSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'sampledImageStencilSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampledImageStencilSampleCounts a
-
-class HasVkSampler a where
-        type VkSamplerMType a :: *
-
-        vkSampler :: a -> VkSamplerMType a
-
-        vkSamplerByteOffset :: a -> Int
-
-        readVkSampler :: Ptr a -> IO (VkSamplerMType a)
-
-        writeVkSampler :: Ptr a -> VkSamplerMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sampler'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSampler a
-
-class HasVkSamplerAnisotropy a where
-        type VkSamplerAnisotropyMType a :: *
-
-        vkSamplerAnisotropy :: a -> VkSamplerAnisotropyMType a
-
-        vkSamplerAnisotropyByteOffset :: a -> Int
-
-        readVkSamplerAnisotropy :: Ptr a -> IO (VkSamplerAnisotropyMType a)
-
-        writeVkSamplerAnisotropy ::
-                                 Ptr a -> VkSamplerAnisotropyMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'samplerAnisotropy'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSamplerAnisotropy a
-
-class HasVkSamplerYcbcrConversion a where
-        type VkSamplerYcbcrConversionMType a :: *
-
-        vkSamplerYcbcrConversion :: a -> VkSamplerYcbcrConversionMType a
-
-        vkSamplerYcbcrConversionByteOffset :: a -> Int
-
-        readVkSamplerYcbcrConversion ::
-                                     Ptr a -> IO (VkSamplerYcbcrConversionMType a)
-
-        writeVkSamplerYcbcrConversion ::
-                                      Ptr a -> VkSamplerYcbcrConversionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'samplerYcbcrConversion'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSamplerYcbcrConversion a
-
-class HasVkSamples a where
-        type VkSamplesMType a :: *
-
-        vkSamples :: a -> VkSamplesMType a
-
-        vkSamplesByteOffset :: a -> Int
-
-        readVkSamples :: Ptr a -> IO (VkSamplesMType a)
-
-        writeVkSamples :: Ptr a -> VkSamplesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'samples'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSamples a
-
-class HasVkScissorCount a where
-        type VkScissorCountMType a :: *
-
-        vkScissorCount :: a -> VkScissorCountMType a
-
-        vkScissorCountByteOffset :: a -> Int
-
-        readVkScissorCount :: Ptr a -> IO (VkScissorCountMType a)
-
-        writeVkScissorCount :: Ptr a -> VkScissorCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'scissorCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkScissorCount a
-
-class HasVkScratchMemUsageInBytes a where
-        type VkScratchMemUsageInBytesMType a :: *
-
-        vkScratchMemUsageInBytes :: a -> VkScratchMemUsageInBytesMType a
-
-        vkScratchMemUsageInBytesByteOffset :: a -> Int
-
-        readVkScratchMemUsageInBytes ::
-                                     Ptr a -> IO (VkScratchMemUsageInBytesMType a)
-
-        writeVkScratchMemUsageInBytes ::
-                                      Ptr a -> VkScratchMemUsageInBytesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'scratchMemUsageInBytes'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkScratchMemUsageInBytes a
-
-class HasVkSemaphore a where
-        type VkSemaphoreMType a :: *
-
-        vkSemaphore :: a -> VkSemaphoreMType a
-
-        vkSemaphoreByteOffset :: a -> Int
-
-        readVkSemaphore :: Ptr a -> IO (VkSemaphoreMType a)
-
-        writeVkSemaphore :: Ptr a -> VkSemaphoreMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'semaphore'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSemaphore a
-
-class HasVkSequencesCountBuffer a where
-        type VkSequencesCountBufferMType a :: *
-
-        vkSequencesCountBuffer :: a -> VkSequencesCountBufferMType a
-
-        vkSequencesCountBufferByteOffset :: a -> Int
-
-        readVkSequencesCountBuffer ::
-                                   Ptr a -> IO (VkSequencesCountBufferMType a)
-
-        writeVkSequencesCountBuffer ::
-                                    Ptr a -> VkSequencesCountBufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sequencesCountBuffer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSequencesCountBuffer a
-
-class HasVkSequencesCountOffset a where
-        type VkSequencesCountOffsetMType a :: *
-
-        vkSequencesCountOffset :: a -> VkSequencesCountOffsetMType a
-
-        vkSequencesCountOffsetByteOffset :: a -> Int
-
-        readVkSequencesCountOffset ::
-                                   Ptr a -> IO (VkSequencesCountOffsetMType a)
-
-        writeVkSequencesCountOffset ::
-                                    Ptr a -> VkSequencesCountOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sequencesCountOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSequencesCountOffset a
-
-class HasVkSequencesIndexBuffer a where
-        type VkSequencesIndexBufferMType a :: *
-
-        vkSequencesIndexBuffer :: a -> VkSequencesIndexBufferMType a
-
-        vkSequencesIndexBufferByteOffset :: a -> Int
-
-        readVkSequencesIndexBuffer ::
-                                   Ptr a -> IO (VkSequencesIndexBufferMType a)
-
-        writeVkSequencesIndexBuffer ::
-                                    Ptr a -> VkSequencesIndexBufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sequencesIndexBuffer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSequencesIndexBuffer a
-
-class HasVkSequencesIndexOffset a where
-        type VkSequencesIndexOffsetMType a :: *
-
-        vkSequencesIndexOffset :: a -> VkSequencesIndexOffsetMType a
-
-        vkSequencesIndexOffsetByteOffset :: a -> Int
-
-        readVkSequencesIndexOffset ::
-                                   Ptr a -> IO (VkSequencesIndexOffsetMType a)
-
-        writeVkSequencesIndexOffset ::
-                                    Ptr a -> VkSequencesIndexOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sequencesIndexOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSequencesIndexOffset a
-
-class HasVkSet a where
-        type VkSetMType a :: *
-
-        vkSet :: a -> VkSetMType a
-
-        vkSetByteOffset :: a -> Int
-
-        readVkSet :: Ptr a -> IO (VkSetMType a)
-
-        writeVkSet :: Ptr a -> VkSetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'set'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSet a
-
-class HasVkSetLayoutCount a where
-        type VkSetLayoutCountMType a :: *
-
-        vkSetLayoutCount :: a -> VkSetLayoutCountMType a
-
-        vkSetLayoutCountByteOffset :: a -> Int
-
-        readVkSetLayoutCount :: Ptr a -> IO (VkSetLayoutCountMType a)
-
-        writeVkSetLayoutCount :: Ptr a -> VkSetLayoutCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'setLayoutCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSetLayoutCount a
-
-class HasVkShaderClipDistance a where
-        type VkShaderClipDistanceMType a :: *
-
-        vkShaderClipDistance :: a -> VkShaderClipDistanceMType a
-
-        vkShaderClipDistanceByteOffset :: a -> Int
-
-        readVkShaderClipDistance ::
-                                 Ptr a -> IO (VkShaderClipDistanceMType a)
-
-        writeVkShaderClipDistance ::
-                                  Ptr a -> VkShaderClipDistanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderClipDistance'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderClipDistance a
-
-class HasVkShaderCullDistance a where
-        type VkShaderCullDistanceMType a :: *
-
-        vkShaderCullDistance :: a -> VkShaderCullDistanceMType a
-
-        vkShaderCullDistanceByteOffset :: a -> Int
-
-        readVkShaderCullDistance ::
-                                 Ptr a -> IO (VkShaderCullDistanceMType a)
-
-        writeVkShaderCullDistance ::
-                                  Ptr a -> VkShaderCullDistanceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderCullDistance'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderCullDistance a
-
-class HasVkShaderFloat64 a where
-        type VkShaderFloat64MType a :: *
-
-        vkShaderFloat64 :: a -> VkShaderFloat64MType a
-
-        vkShaderFloat64ByteOffset :: a -> Int
-
-        readVkShaderFloat64 :: Ptr a -> IO (VkShaderFloat64MType a)
-
-        writeVkShaderFloat64 :: Ptr a -> VkShaderFloat64MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderFloat64'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderFloat64 a
-
-class HasVkShaderImageGatherExtended a where
-        type VkShaderImageGatherExtendedMType a :: *
-
-        vkShaderImageGatherExtended ::
-                                    a -> VkShaderImageGatherExtendedMType a
-
-        vkShaderImageGatherExtendedByteOffset :: a -> Int
-
-        readVkShaderImageGatherExtended ::
-                                        Ptr a -> IO (VkShaderImageGatherExtendedMType a)
-
-        writeVkShaderImageGatherExtended ::
-                                         Ptr a -> VkShaderImageGatherExtendedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderImageGatherExtended'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderImageGatherExtended a
-
-class HasVkShaderInt16 a where
-        type VkShaderInt16MType a :: *
-
-        vkShaderInt16 :: a -> VkShaderInt16MType a
-
-        vkShaderInt16ByteOffset :: a -> Int
-
-        readVkShaderInt16 :: Ptr a -> IO (VkShaderInt16MType a)
-
-        writeVkShaderInt16 :: Ptr a -> VkShaderInt16MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderInt16'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderInt16 a
-
-class HasVkShaderInt64 a where
-        type VkShaderInt64MType a :: *
-
-        vkShaderInt64 :: a -> VkShaderInt64MType a
-
-        vkShaderInt64ByteOffset :: a -> Int
-
-        readVkShaderInt64 :: Ptr a -> IO (VkShaderInt64MType a)
-
-        writeVkShaderInt64 :: Ptr a -> VkShaderInt64MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderInt64'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderInt64 a
-
-class HasVkShaderResourceMinLod a where
-        type VkShaderResourceMinLodMType a :: *
-
-        vkShaderResourceMinLod :: a -> VkShaderResourceMinLodMType a
-
-        vkShaderResourceMinLodByteOffset :: a -> Int
-
-        readVkShaderResourceMinLod ::
-                                   Ptr a -> IO (VkShaderResourceMinLodMType a)
-
-        writeVkShaderResourceMinLod ::
-                                    Ptr a -> VkShaderResourceMinLodMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderResourceMinLod'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderResourceMinLod a
-
-class HasVkShaderResourceResidency a where
-        type VkShaderResourceResidencyMType a :: *
-
-        vkShaderResourceResidency :: a -> VkShaderResourceResidencyMType a
-
-        vkShaderResourceResidencyByteOffset :: a -> Int
-
-        readVkShaderResourceResidency ::
-                                      Ptr a -> IO (VkShaderResourceResidencyMType a)
-
-        writeVkShaderResourceResidency ::
-                                       Ptr a -> VkShaderResourceResidencyMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderResourceResidency'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderResourceResidency a
-
-class HasVkShaderSampledImageArrayDynamicIndexing a where
-        type VkShaderSampledImageArrayDynamicIndexingMType a :: *
-
-        vkShaderSampledImageArrayDynamicIndexing ::
-                                                 a ->
-                                                   VkShaderSampledImageArrayDynamicIndexingMType a
-
-        vkShaderSampledImageArrayDynamicIndexingByteOffset :: a -> Int
-
-        readVkShaderSampledImageArrayDynamicIndexing ::
-                                                     Ptr a ->
-                                                       IO
-                                                         (VkShaderSampledImageArrayDynamicIndexingMType
-                                                            a)
-
-        writeVkShaderSampledImageArrayDynamicIndexing ::
-                                                      Ptr a ->
-                                                        VkShaderSampledImageArrayDynamicIndexingMType
-                                                          a
-                                                          -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderSampledImageArrayDynamicIndexing'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderSampledImageArrayDynamicIndexing a
-
-class HasVkShaderStageMask a where
-        type VkShaderStageMaskMType a :: *
-
-        vkShaderStageMask :: a -> VkShaderStageMaskMType a
-
-        vkShaderStageMaskByteOffset :: a -> Int
-
-        readVkShaderStageMask :: Ptr a -> IO (VkShaderStageMaskMType a)
-
-        writeVkShaderStageMask ::
-                               Ptr a -> VkShaderStageMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'shaderStageMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStageMask a
-
-class HasVkShaderStorageBufferArrayDynamicIndexing a where
-        type VkShaderStorageBufferArrayDynamicIndexingMType a :: *
-
-        vkShaderStorageBufferArrayDynamicIndexing ::
-                                                  a ->
-                                                    VkShaderStorageBufferArrayDynamicIndexingMType a
-
-        vkShaderStorageBufferArrayDynamicIndexingByteOffset :: a -> Int
-
-        readVkShaderStorageBufferArrayDynamicIndexing ::
-                                                      Ptr a ->
-                                                        IO
-                                                          (VkShaderStorageBufferArrayDynamicIndexingMType
-                                                             a)
-
-        writeVkShaderStorageBufferArrayDynamicIndexing ::
-                                                       Ptr a ->
-                                                         VkShaderStorageBufferArrayDynamicIndexingMType
-                                                           a
-                                                           -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderStorageBufferArrayDynamicIndexing'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStorageBufferArrayDynamicIndexing a
-
-class HasVkShaderStorageImageArrayDynamicIndexing a where
-        type VkShaderStorageImageArrayDynamicIndexingMType a :: *
-
-        vkShaderStorageImageArrayDynamicIndexing ::
-                                                 a ->
-                                                   VkShaderStorageImageArrayDynamicIndexingMType a
-
-        vkShaderStorageImageArrayDynamicIndexingByteOffset :: a -> Int
-
-        readVkShaderStorageImageArrayDynamicIndexing ::
-                                                     Ptr a ->
-                                                       IO
-                                                         (VkShaderStorageImageArrayDynamicIndexingMType
-                                                            a)
-
-        writeVkShaderStorageImageArrayDynamicIndexing ::
-                                                      Ptr a ->
-                                                        VkShaderStorageImageArrayDynamicIndexingMType
-                                                          a
-                                                          -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderStorageImageArrayDynamicIndexing'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStorageImageArrayDynamicIndexing a
-
-class HasVkShaderStorageImageExtendedFormats a where
-        type VkShaderStorageImageExtendedFormatsMType a :: *
-
-        vkShaderStorageImageExtendedFormats ::
-                                            a -> VkShaderStorageImageExtendedFormatsMType a
-
-        vkShaderStorageImageExtendedFormatsByteOffset :: a -> Int
-
-        readVkShaderStorageImageExtendedFormats ::
-                                                Ptr a ->
-                                                  IO (VkShaderStorageImageExtendedFormatsMType a)
-
-        writeVkShaderStorageImageExtendedFormats ::
-                                                 Ptr a ->
-                                                   VkShaderStorageImageExtendedFormatsMType a ->
-                                                     IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderStorageImageExtendedFormats'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStorageImageExtendedFormats a
-
-class HasVkShaderStorageImageMultisample a where
-        type VkShaderStorageImageMultisampleMType a :: *
-
-        vkShaderStorageImageMultisample ::
-                                        a -> VkShaderStorageImageMultisampleMType a
-
-        vkShaderStorageImageMultisampleByteOffset :: a -> Int
-
-        readVkShaderStorageImageMultisample ::
-                                            Ptr a -> IO (VkShaderStorageImageMultisampleMType a)
-
-        writeVkShaderStorageImageMultisample ::
-                                             Ptr a ->
-                                               VkShaderStorageImageMultisampleMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderStorageImageMultisample'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStorageImageMultisample a
-
-class HasVkShaderStorageImageReadWithoutFormat a where
-        type VkShaderStorageImageReadWithoutFormatMType a :: *
-
-        vkShaderStorageImageReadWithoutFormat ::
-                                              a -> VkShaderStorageImageReadWithoutFormatMType a
-
-        vkShaderStorageImageReadWithoutFormatByteOffset :: a -> Int
-
-        readVkShaderStorageImageReadWithoutFormat ::
-                                                  Ptr a ->
-                                                    IO
-                                                      (VkShaderStorageImageReadWithoutFormatMType a)
-
-        writeVkShaderStorageImageReadWithoutFormat ::
-                                                   Ptr a ->
-                                                     VkShaderStorageImageReadWithoutFormatMType a ->
-                                                       IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderStorageImageReadWithoutFormat'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStorageImageReadWithoutFormat a
-
-class HasVkShaderStorageImageWriteWithoutFormat a where
-        type VkShaderStorageImageWriteWithoutFormatMType a :: *
-
-        vkShaderStorageImageWriteWithoutFormat ::
-                                               a -> VkShaderStorageImageWriteWithoutFormatMType a
-
-        vkShaderStorageImageWriteWithoutFormatByteOffset :: a -> Int
-
-        readVkShaderStorageImageWriteWithoutFormat ::
-                                                   Ptr a ->
-                                                     IO
-                                                       (VkShaderStorageImageWriteWithoutFormatMType
-                                                          a)
-
-        writeVkShaderStorageImageWriteWithoutFormat ::
-                                                    Ptr a ->
-                                                      VkShaderStorageImageWriteWithoutFormatMType a
-                                                        -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderStorageImageWriteWithoutFormat'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderStorageImageWriteWithoutFormat a
-
-class HasVkShaderTessellationAndGeometryPointSize a where
-        type VkShaderTessellationAndGeometryPointSizeMType a :: *
-
-        vkShaderTessellationAndGeometryPointSize ::
-                                                 a ->
-                                                   VkShaderTessellationAndGeometryPointSizeMType a
-
-        vkShaderTessellationAndGeometryPointSizeByteOffset :: a -> Int
-
-        readVkShaderTessellationAndGeometryPointSize ::
-                                                     Ptr a ->
-                                                       IO
-                                                         (VkShaderTessellationAndGeometryPointSizeMType
-                                                            a)
-
-        writeVkShaderTessellationAndGeometryPointSize ::
-                                                      Ptr a ->
-                                                        VkShaderTessellationAndGeometryPointSizeMType
-                                                          a
-                                                          -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderTessellationAndGeometryPointSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderTessellationAndGeometryPointSize a
-
-class HasVkShaderUniformBufferArrayDynamicIndexing a where
-        type VkShaderUniformBufferArrayDynamicIndexingMType a :: *
-
-        vkShaderUniformBufferArrayDynamicIndexing ::
-                                                  a ->
-                                                    VkShaderUniformBufferArrayDynamicIndexingMType a
-
-        vkShaderUniformBufferArrayDynamicIndexingByteOffset :: a -> Int
-
-        readVkShaderUniformBufferArrayDynamicIndexing ::
-                                                      Ptr a ->
-                                                        IO
-                                                          (VkShaderUniformBufferArrayDynamicIndexingMType
-                                                             a)
-
-        writeVkShaderUniformBufferArrayDynamicIndexing ::
-                                                       Ptr a ->
-                                                         VkShaderUniformBufferArrayDynamicIndexingMType
-                                                           a
-                                                           -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'shaderUniformBufferArrayDynamicIndexing'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkShaderUniformBufferArrayDynamicIndexing a
-
-class HasVkSharedPresentSupportedUsageFlags a where
-        type VkSharedPresentSupportedUsageFlagsMType a :: *
-
-        vkSharedPresentSupportedUsageFlags ::
-                                           a -> VkSharedPresentSupportedUsageFlagsMType a
-
-        vkSharedPresentSupportedUsageFlagsByteOffset :: a -> Int
-
-        readVkSharedPresentSupportedUsageFlags ::
-                                               Ptr a ->
-                                                 IO (VkSharedPresentSupportedUsageFlagsMType a)
-
-        writeVkSharedPresentSupportedUsageFlags ::
-                                                Ptr a ->
-                                                  VkSharedPresentSupportedUsageFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'sharedPresentSupportedUsageFlags'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSharedPresentSupportedUsageFlags a
-
-class HasVkSharingMode a where
-        type VkSharingModeMType a :: *
-
-        vkSharingMode :: a -> VkSharingModeMType a
-
-        vkSharingModeByteOffset :: a -> Int
-
-        readVkSharingMode :: Ptr a -> IO (VkSharingModeMType a)
-
-        writeVkSharingMode :: Ptr a -> VkSharingModeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sharingMode'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSharingMode a
-
-class HasVkSignalSemaphoreCount a where
-        type VkSignalSemaphoreCountMType a :: *
-
-        vkSignalSemaphoreCount :: a -> VkSignalSemaphoreCountMType a
-
-        vkSignalSemaphoreCountByteOffset :: a -> Int
-
-        readVkSignalSemaphoreCount ::
-                                   Ptr a -> IO (VkSignalSemaphoreCountMType a)
-
-        writeVkSignalSemaphoreCount ::
-                                    Ptr a -> VkSignalSemaphoreCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'signalSemaphoreCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSignalSemaphoreCount a
-
-class HasVkSignalSemaphoreValuesCount a where
-        type VkSignalSemaphoreValuesCountMType a :: *
-
-        vkSignalSemaphoreValuesCount ::
-                                     a -> VkSignalSemaphoreValuesCountMType a
-
-        vkSignalSemaphoreValuesCountByteOffset :: a -> Int
-
-        readVkSignalSemaphoreValuesCount ::
-                                         Ptr a -> IO (VkSignalSemaphoreValuesCountMType a)
-
-        writeVkSignalSemaphoreValuesCount ::
-                                          Ptr a -> VkSignalSemaphoreValuesCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'signalSemaphoreValuesCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSignalSemaphoreValuesCount a
-
-class HasVkSize a where
-        type VkSizeMType a :: *
-
-        vkSize :: a -> VkSizeMType a
-
-        vkSizeByteOffset :: a -> Int
-
-        readVkSize :: Ptr a -> IO (VkSizeMType a)
-
-        writeVkSize :: Ptr a -> VkSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'size'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSize a
-
-class HasVkSparseAddressSpaceSize a where
-        type VkSparseAddressSpaceSizeMType a :: *
-
-        vkSparseAddressSpaceSize :: a -> VkSparseAddressSpaceSizeMType a
-
-        vkSparseAddressSpaceSizeByteOffset :: a -> Int
-
-        readVkSparseAddressSpaceSize ::
-                                     Ptr a -> IO (VkSparseAddressSpaceSizeMType a)
-
-        writeVkSparseAddressSpaceSize ::
-                                      Ptr a -> VkSparseAddressSpaceSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseAddressSpaceSize'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseAddressSpaceSize a
-
-class HasVkSparseBinding a where
-        type VkSparseBindingMType a :: *
-
-        vkSparseBinding :: a -> VkSparseBindingMType a
-
-        vkSparseBindingByteOffset :: a -> Int
-
-        readVkSparseBinding :: Ptr a -> IO (VkSparseBindingMType a)
-
-        writeVkSparseBinding :: Ptr a -> VkSparseBindingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseBinding'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseBinding a
-
-class HasVkSparseProperties a where
-        type VkSparsePropertiesMType a :: *
-
-        vkSparseProperties :: a -> VkSparsePropertiesMType a
-
-        vkSparsePropertiesByteOffset :: a -> Int
-
-        readVkSparseProperties :: Ptr a -> IO (VkSparsePropertiesMType a)
-
-        writeVkSparseProperties ::
-                                Ptr a -> VkSparsePropertiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseProperties'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseProperties a
-
-class HasVkSparseResidency16Samples a where
-        type VkSparseResidency16SamplesMType a :: *
-
-        vkSparseResidency16Samples ::
-                                   a -> VkSparseResidency16SamplesMType a
-
-        vkSparseResidency16SamplesByteOffset :: a -> Int
-
-        readVkSparseResidency16Samples ::
-                                       Ptr a -> IO (VkSparseResidency16SamplesMType a)
-
-        writeVkSparseResidency16Samples ::
-                                        Ptr a -> VkSparseResidency16SamplesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidency16Samples'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidency16Samples a
-
-class HasVkSparseResidency2Samples a where
-        type VkSparseResidency2SamplesMType a :: *
-
-        vkSparseResidency2Samples :: a -> VkSparseResidency2SamplesMType a
-
-        vkSparseResidency2SamplesByteOffset :: a -> Int
-
-        readVkSparseResidency2Samples ::
-                                      Ptr a -> IO (VkSparseResidency2SamplesMType a)
-
-        writeVkSparseResidency2Samples ::
-                                       Ptr a -> VkSparseResidency2SamplesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidency2Samples'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidency2Samples a
-
-class HasVkSparseResidency4Samples a where
-        type VkSparseResidency4SamplesMType a :: *
-
-        vkSparseResidency4Samples :: a -> VkSparseResidency4SamplesMType a
-
-        vkSparseResidency4SamplesByteOffset :: a -> Int
-
-        readVkSparseResidency4Samples ::
-                                      Ptr a -> IO (VkSparseResidency4SamplesMType a)
-
-        writeVkSparseResidency4Samples ::
-                                       Ptr a -> VkSparseResidency4SamplesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidency4Samples'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidency4Samples a
-
-class HasVkSparseResidency8Samples a where
-        type VkSparseResidency8SamplesMType a :: *
-
-        vkSparseResidency8Samples :: a -> VkSparseResidency8SamplesMType a
-
-        vkSparseResidency8SamplesByteOffset :: a -> Int
-
-        readVkSparseResidency8Samples ::
-                                      Ptr a -> IO (VkSparseResidency8SamplesMType a)
-
-        writeVkSparseResidency8Samples ::
-                                       Ptr a -> VkSparseResidency8SamplesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidency8Samples'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidency8Samples a
-
-class HasVkSparseResidencyAliased a where
-        type VkSparseResidencyAliasedMType a :: *
-
-        vkSparseResidencyAliased :: a -> VkSparseResidencyAliasedMType a
-
-        vkSparseResidencyAliasedByteOffset :: a -> Int
-
-        readVkSparseResidencyAliased ::
-                                     Ptr a -> IO (VkSparseResidencyAliasedMType a)
-
-        writeVkSparseResidencyAliased ::
-                                      Ptr a -> VkSparseResidencyAliasedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidencyAliased'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidencyAliased a
-
-class HasVkSparseResidencyBuffer a where
-        type VkSparseResidencyBufferMType a :: *
-
-        vkSparseResidencyBuffer :: a -> VkSparseResidencyBufferMType a
-
-        vkSparseResidencyBufferByteOffset :: a -> Int
-
-        readVkSparseResidencyBuffer ::
-                                    Ptr a -> IO (VkSparseResidencyBufferMType a)
-
-        writeVkSparseResidencyBuffer ::
-                                     Ptr a -> VkSparseResidencyBufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidencyBuffer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidencyBuffer a
-
-class HasVkSparseResidencyImage2D a where
-        type VkSparseResidencyImage2DMType a :: *
-
-        vkSparseResidencyImage2D :: a -> VkSparseResidencyImage2DMType a
-
-        vkSparseResidencyImage2DByteOffset :: a -> Int
-
-        readVkSparseResidencyImage2D ::
-                                     Ptr a -> IO (VkSparseResidencyImage2DMType a)
-
-        writeVkSparseResidencyImage2D ::
-                                      Ptr a -> VkSparseResidencyImage2DMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidencyImage2D'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidencyImage2D a
-
-class HasVkSparseResidencyImage3D a where
-        type VkSparseResidencyImage3DMType a :: *
-
-        vkSparseResidencyImage3D :: a -> VkSparseResidencyImage3DMType a
-
-        vkSparseResidencyImage3DByteOffset :: a -> Int
-
-        readVkSparseResidencyImage3D ::
-                                     Ptr a -> IO (VkSparseResidencyImage3DMType a)
-
-        writeVkSparseResidencyImage3D ::
-                                      Ptr a -> VkSparseResidencyImage3DMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'sparseResidencyImage3D'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSparseResidencyImage3D a
-
-class HasVkSpecVersion a where
-        type VkSpecVersionMType a :: *
-
-        vkSpecVersion :: a -> VkSpecVersionMType a
-
-        vkSpecVersionByteOffset :: a -> Int
-
-        readVkSpecVersion :: Ptr a -> IO (VkSpecVersionMType a)
-
-        writeVkSpecVersion :: Ptr a -> VkSpecVersionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'specVersion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSpecVersion a
-
-class HasVkSrcAccessMask a where
-        type VkSrcAccessMaskMType a :: *
-
-        vkSrcAccessMask :: a -> VkSrcAccessMaskMType a
-
-        vkSrcAccessMaskByteOffset :: a -> Int
-
-        readVkSrcAccessMask :: Ptr a -> IO (VkSrcAccessMaskMType a)
-
-        writeVkSrcAccessMask :: Ptr a -> VkSrcAccessMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcAccessMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcAccessMask a
-
-class HasVkSrcAlphaBlendFactor a where
-        type VkSrcAlphaBlendFactorMType a :: *
-
-        vkSrcAlphaBlendFactor :: a -> VkSrcAlphaBlendFactorMType a
-
-        vkSrcAlphaBlendFactorByteOffset :: a -> Int
-
-        readVkSrcAlphaBlendFactor ::
-                                  Ptr a -> IO (VkSrcAlphaBlendFactorMType a)
-
-        writeVkSrcAlphaBlendFactor ::
-                                   Ptr a -> VkSrcAlphaBlendFactorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcAlphaBlendFactor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcAlphaBlendFactor a
-
-class HasVkSrcArrayElement a where
-        type VkSrcArrayElementMType a :: *
-
-        vkSrcArrayElement :: a -> VkSrcArrayElementMType a
-
-        vkSrcArrayElementByteOffset :: a -> Int
-
-        readVkSrcArrayElement :: Ptr a -> IO (VkSrcArrayElementMType a)
-
-        writeVkSrcArrayElement ::
-                               Ptr a -> VkSrcArrayElementMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcArrayElement'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcArrayElement a
-
-class HasVkSrcBinding a where
-        type VkSrcBindingMType a :: *
-
-        vkSrcBinding :: a -> VkSrcBindingMType a
-
-        vkSrcBindingByteOffset :: a -> Int
-
-        readVkSrcBinding :: Ptr a -> IO (VkSrcBindingMType a)
-
-        writeVkSrcBinding :: Ptr a -> VkSrcBindingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcBinding'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcBinding a
-
-class HasVkSrcColorBlendFactor a where
-        type VkSrcColorBlendFactorMType a :: *
-
-        vkSrcColorBlendFactor :: a -> VkSrcColorBlendFactorMType a
-
-        vkSrcColorBlendFactorByteOffset :: a -> Int
-
-        readVkSrcColorBlendFactor ::
-                                  Ptr a -> IO (VkSrcColorBlendFactorMType a)
-
-        writeVkSrcColorBlendFactor ::
-                                   Ptr a -> VkSrcColorBlendFactorMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcColorBlendFactor'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcColorBlendFactor a
-
-class HasVkSrcOffset a where
-        type VkSrcOffsetMType a :: *
-
-        vkSrcOffset :: a -> VkSrcOffsetMType a
-
-        vkSrcOffsetByteOffset :: a -> Int
-
-        readVkSrcOffset :: Ptr a -> IO (VkSrcOffsetMType a)
-
-        writeVkSrcOffset :: Ptr a -> VkSrcOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcOffset a
-
-class HasVkSrcOffsetsArray a where
-        type VkSrcOffsetsArrayMType a :: *
-
-        vkSrcOffsetsArray :: a -> Int -> VkSrcOffsetsArrayMType a
-
-        vkSrcOffsetsArrayByteOffset :: a -> Int
-
-        readVkSrcOffsetsArray ::
-                              Ptr a -> Int -> IO (VkSrcOffsetsArrayMType a)
-
-        writeVkSrcOffsetsArray ::
-                               Ptr a -> Int -> VkSrcOffsetsArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcOffsets'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcOffsetsArray a
-
-class HasVkSrcPremultiplied a where
-        type VkSrcPremultipliedMType a :: *
-
-        vkSrcPremultiplied :: a -> VkSrcPremultipliedMType a
-
-        vkSrcPremultipliedByteOffset :: a -> Int
-
-        readVkSrcPremultiplied :: Ptr a -> IO (VkSrcPremultipliedMType a)
-
-        writeVkSrcPremultiplied ::
-                                Ptr a -> VkSrcPremultipliedMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcPremultiplied'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcPremultiplied a
-
-class HasVkSrcQueueFamilyIndex a where
-        type VkSrcQueueFamilyIndexMType a :: *
-
-        vkSrcQueueFamilyIndex :: a -> VkSrcQueueFamilyIndexMType a
-
-        vkSrcQueueFamilyIndexByteOffset :: a -> Int
-
-        readVkSrcQueueFamilyIndex ::
-                                  Ptr a -> IO (VkSrcQueueFamilyIndexMType a)
-
-        writeVkSrcQueueFamilyIndex ::
-                                   Ptr a -> VkSrcQueueFamilyIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcQueueFamilyIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcQueueFamilyIndex a
-
-class HasVkSrcRect a where
-        type VkSrcRectMType a :: *
-
-        vkSrcRect :: a -> VkSrcRectMType a
-
-        vkSrcRectByteOffset :: a -> Int
-
-        readVkSrcRect :: Ptr a -> IO (VkSrcRectMType a)
-
-        writeVkSrcRect :: Ptr a -> VkSrcRectMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcRect'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcRect a
-
-class HasVkSrcSet a where
-        type VkSrcSetMType a :: *
-
-        vkSrcSet :: a -> VkSrcSetMType a
-
-        vkSrcSetByteOffset :: a -> Int
-
-        readVkSrcSet :: Ptr a -> IO (VkSrcSetMType a)
-
-        writeVkSrcSet :: Ptr a -> VkSrcSetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcSet'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcSet a
-
-class HasVkSrcStageMask a where
-        type VkSrcStageMaskMType a :: *
-
-        vkSrcStageMask :: a -> VkSrcStageMaskMType a
-
-        vkSrcStageMaskByteOffset :: a -> Int
-
-        readVkSrcStageMask :: Ptr a -> IO (VkSrcStageMaskMType a)
-
-        writeVkSrcStageMask :: Ptr a -> VkSrcStageMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcStageMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcStageMask a
-
-class HasVkSrcSubpass a where
-        type VkSrcSubpassMType a :: *
-
-        vkSrcSubpass :: a -> VkSrcSubpassMType a
-
-        vkSrcSubpassByteOffset :: a -> Int
-
-        readVkSrcSubpass :: Ptr a -> IO (VkSrcSubpassMType a)
-
-        writeVkSrcSubpass :: Ptr a -> VkSrcSubpassMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcSubpass'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcSubpass a
-
-class HasVkSrcSubresource a where
-        type VkSrcSubresourceMType a :: *
-
-        vkSrcSubresource :: a -> VkSrcSubresourceMType a
-
-        vkSrcSubresourceByteOffset :: a -> Int
-
-        readVkSrcSubresource :: Ptr a -> IO (VkSrcSubresourceMType a)
-
-        writeVkSrcSubresource :: Ptr a -> VkSrcSubresourceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'srcSubresource'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSrcSubresource a
-
-class HasVkStage a where
-        type VkStageMType a :: *
-
-        vkStage :: a -> VkStageMType a
-
-        vkStageByteOffset :: a -> Int
-
-        readVkStage :: Ptr a -> IO (VkStageMType a)
-
-        writeVkStage :: Ptr a -> VkStageMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stage'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStage a
-
-class HasVkStageCount a where
-        type VkStageCountMType a :: *
-
-        vkStageCount :: a -> VkStageCountMType a
-
-        vkStageCountByteOffset :: a -> Int
-
-        readVkStageCount :: Ptr a -> IO (VkStageCountMType a)
-
-        writeVkStageCount :: Ptr a -> VkStageCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stageCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStageCount a
-
-class HasVkStageFlags a where
-        type VkStageFlagsMType a :: *
-
-        vkStageFlags :: a -> VkStageFlagsMType a
-
-        vkStageFlagsByteOffset :: a -> Int
-
-        readVkStageFlags :: Ptr a -> IO (VkStageFlagsMType a)
-
-        writeVkStageFlags :: Ptr a -> VkStageFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stageFlags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStageFlags a
-
-class HasVkStandardSampleLocations a where
-        type VkStandardSampleLocationsMType a :: *
-
-        vkStandardSampleLocations :: a -> VkStandardSampleLocationsMType a
-
-        vkStandardSampleLocationsByteOffset :: a -> Int
-
-        readVkStandardSampleLocations ::
-                                      Ptr a -> IO (VkStandardSampleLocationsMType a)
-
-        writeVkStandardSampleLocations ::
-                                       Ptr a -> VkStandardSampleLocationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'standardSampleLocations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStandardSampleLocations a
-
-class HasVkStencil a where
-        type VkStencilMType a :: *
-
-        vkStencil :: a -> VkStencilMType a
-
-        vkStencilByteOffset :: a -> Int
-
-        readVkStencil :: Ptr a -> IO (VkStencilMType a)
-
-        writeVkStencil :: Ptr a -> VkStencilMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stencil'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStencil a
-
-class HasVkStencilLoadOp a where
-        type VkStencilLoadOpMType a :: *
-
-        vkStencilLoadOp :: a -> VkStencilLoadOpMType a
-
-        vkStencilLoadOpByteOffset :: a -> Int
-
-        readVkStencilLoadOp :: Ptr a -> IO (VkStencilLoadOpMType a)
-
-        writeVkStencilLoadOp :: Ptr a -> VkStencilLoadOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stencilLoadOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStencilLoadOp a
-
-class HasVkStencilStoreOp a where
-        type VkStencilStoreOpMType a :: *
-
-        vkStencilStoreOp :: a -> VkStencilStoreOpMType a
-
-        vkStencilStoreOpByteOffset :: a -> Int
-
-        readVkStencilStoreOp :: Ptr a -> IO (VkStencilStoreOpMType a)
-
-        writeVkStencilStoreOp :: Ptr a -> VkStencilStoreOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stencilStoreOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStencilStoreOp a
-
-class HasVkStencilTestEnable a where
-        type VkStencilTestEnableMType a :: *
-
-        vkStencilTestEnable :: a -> VkStencilTestEnableMType a
-
-        vkStencilTestEnableByteOffset :: a -> Int
-
-        readVkStencilTestEnable :: Ptr a -> IO (VkStencilTestEnableMType a)
-
-        writeVkStencilTestEnable ::
-                                 Ptr a -> VkStencilTestEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stencilTestEnable'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStencilTestEnable a
-
-class HasVkStorageBuffer16BitAccess a where
-        type VkStorageBuffer16BitAccessMType a :: *
-
-        vkStorageBuffer16BitAccess ::
-                                   a -> VkStorageBuffer16BitAccessMType a
-
-        vkStorageBuffer16BitAccessByteOffset :: a -> Int
-
-        readVkStorageBuffer16BitAccess ::
-                                       Ptr a -> IO (VkStorageBuffer16BitAccessMType a)
-
-        writeVkStorageBuffer16BitAccess ::
-                                        Ptr a -> VkStorageBuffer16BitAccessMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'storageBuffer16BitAccess'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStorageBuffer16BitAccess a
-
-class HasVkStorageImageSampleCounts a where
-        type VkStorageImageSampleCountsMType a :: *
-
-        vkStorageImageSampleCounts ::
-                                   a -> VkStorageImageSampleCountsMType a
-
-        vkStorageImageSampleCountsByteOffset :: a -> Int
-
-        readVkStorageImageSampleCounts ::
-                                       Ptr a -> IO (VkStorageImageSampleCountsMType a)
-
-        writeVkStorageImageSampleCounts ::
-                                        Ptr a -> VkStorageImageSampleCountsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'storageImageSampleCounts'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStorageImageSampleCounts a
-
-class HasVkStorageInputOutput16 a where
-        type VkStorageInputOutput16MType a :: *
-
-        vkStorageInputOutput16 :: a -> VkStorageInputOutput16MType a
-
-        vkStorageInputOutput16ByteOffset :: a -> Int
-
-        readVkStorageInputOutput16 ::
-                                   Ptr a -> IO (VkStorageInputOutput16MType a)
-
-        writeVkStorageInputOutput16 ::
-                                    Ptr a -> VkStorageInputOutput16MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'storageInputOutput16'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStorageInputOutput16 a
-
-class HasVkStoragePushConstant16 a where
-        type VkStoragePushConstant16MType a :: *
-
-        vkStoragePushConstant16 :: a -> VkStoragePushConstant16MType a
-
-        vkStoragePushConstant16ByteOffset :: a -> Int
-
-        readVkStoragePushConstant16 ::
-                                    Ptr a -> IO (VkStoragePushConstant16MType a)
-
-        writeVkStoragePushConstant16 ::
-                                     Ptr a -> VkStoragePushConstant16MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'storagePushConstant16'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStoragePushConstant16 a
-
-class HasVkStoreOp a where
-        type VkStoreOpMType a :: *
-
-        vkStoreOp :: a -> VkStoreOpMType a
-
-        vkStoreOpByteOffset :: a -> Int
-
-        readVkStoreOp :: Ptr a -> IO (VkStoreOpMType a)
-
-        writeVkStoreOp :: Ptr a -> VkStoreOpMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'storeOp'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStoreOp a
-
-class HasVkStrictLines a where
-        type VkStrictLinesMType a :: *
-
-        vkStrictLines :: a -> VkStrictLinesMType a
-
-        vkStrictLinesByteOffset :: a -> Int
-
-        readVkStrictLines :: Ptr a -> IO (VkStrictLinesMType a)
-
-        writeVkStrictLines :: Ptr a -> VkStrictLinesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'strictLines'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStrictLines a
-
-class HasVkStride a where
-        type VkStrideMType a :: *
-
-        vkStride :: a -> VkStrideMType a
-
-        vkStrideByteOffset :: a -> Int
-
-        readVkStride :: Ptr a -> IO (VkStrideMType a)
-
-        writeVkStride :: Ptr a -> VkStrideMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'stride'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkStride a
-
-class HasVkSubPixelInterpolationOffsetBits a where
-        type VkSubPixelInterpolationOffsetBitsMType a :: *
-
-        vkSubPixelInterpolationOffsetBits ::
-                                          a -> VkSubPixelInterpolationOffsetBitsMType a
-
-        vkSubPixelInterpolationOffsetBitsByteOffset :: a -> Int
-
-        readVkSubPixelInterpolationOffsetBits ::
-                                              Ptr a -> IO (VkSubPixelInterpolationOffsetBitsMType a)
-
-        writeVkSubPixelInterpolationOffsetBits ::
-                                               Ptr a ->
-                                                 VkSubPixelInterpolationOffsetBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'subPixelInterpolationOffsetBits'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubPixelInterpolationOffsetBits a
-
-class HasVkSubPixelPrecisionBits a where
-        type VkSubPixelPrecisionBitsMType a :: *
-
-        vkSubPixelPrecisionBits :: a -> VkSubPixelPrecisionBitsMType a
-
-        vkSubPixelPrecisionBitsByteOffset :: a -> Int
-
-        readVkSubPixelPrecisionBits ::
-                                    Ptr a -> IO (VkSubPixelPrecisionBitsMType a)
-
-        writeVkSubPixelPrecisionBits ::
-                                     Ptr a -> VkSubPixelPrecisionBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subPixelPrecisionBits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubPixelPrecisionBits a
-
-class HasVkSubTexelPrecisionBits a where
-        type VkSubTexelPrecisionBitsMType a :: *
-
-        vkSubTexelPrecisionBits :: a -> VkSubTexelPrecisionBitsMType a
-
-        vkSubTexelPrecisionBitsByteOffset :: a -> Int
-
-        readVkSubTexelPrecisionBits ::
-                                    Ptr a -> IO (VkSubTexelPrecisionBitsMType a)
-
-        writeVkSubTexelPrecisionBits ::
-                                     Ptr a -> VkSubTexelPrecisionBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subTexelPrecisionBits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubTexelPrecisionBits a
-
-class HasVkSubpass a where
-        type VkSubpassMType a :: *
-
-        vkSubpass :: a -> VkSubpassMType a
-
-        vkSubpassByteOffset :: a -> Int
-
-        readVkSubpass :: Ptr a -> IO (VkSubpassMType a)
-
-        writeVkSubpass :: Ptr a -> VkSubpassMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subpass'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubpass a
-
-class HasVkSubpassCount a where
-        type VkSubpassCountMType a :: *
-
-        vkSubpassCount :: a -> VkSubpassCountMType a
-
-        vkSubpassCountByteOffset :: a -> Int
-
-        readVkSubpassCount :: Ptr a -> IO (VkSubpassCountMType a)
-
-        writeVkSubpassCount :: Ptr a -> VkSubpassCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subpassCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubpassCount a
-
-class HasVkSubpassIndex a where
-        type VkSubpassIndexMType a :: *
-
-        vkSubpassIndex :: a -> VkSubpassIndexMType a
-
-        vkSubpassIndexByteOffset :: a -> Int
-
-        readVkSubpassIndex :: Ptr a -> IO (VkSubpassIndexMType a)
-
-        writeVkSubpassIndex :: Ptr a -> VkSubpassIndexMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subpassIndex'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubpassIndex a
-
-class HasVkSubresource a where
-        type VkSubresourceMType a :: *
-
-        vkSubresource :: a -> VkSubresourceMType a
-
-        vkSubresourceByteOffset :: a -> Int
-
-        readVkSubresource :: Ptr a -> IO (VkSubresourceMType a)
-
-        writeVkSubresource :: Ptr a -> VkSubresourceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subresource'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubresource a
-
-class HasVkSubresourceRange a where
-        type VkSubresourceRangeMType a :: *
-
-        vkSubresourceRange :: a -> VkSubresourceRangeMType a
-
-        vkSubresourceRangeByteOffset :: a -> Int
-
-        readVkSubresourceRange :: Ptr a -> IO (VkSubresourceRangeMType a)
-
-        writeVkSubresourceRange ::
-                                Ptr a -> VkSubresourceRangeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subresourceRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubresourceRange a
-
-class HasVkSubsetAllocation a where
-        type VkSubsetAllocationMType a :: *
-
-        vkSubsetAllocation :: a -> VkSubsetAllocationMType a
-
-        vkSubsetAllocationByteOffset :: a -> Int
-
-        readVkSubsetAllocation :: Ptr a -> IO (VkSubsetAllocationMType a)
-
-        writeVkSubsetAllocation ::
-                                Ptr a -> VkSubsetAllocationMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'subsetAllocation'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSubsetAllocation a
-
-class HasVkSupportedAlpha a where
-        type VkSupportedAlphaMType a :: *
-
-        vkSupportedAlpha :: a -> VkSupportedAlphaMType a
-
-        vkSupportedAlphaByteOffset :: a -> Int
-
-        readVkSupportedAlpha :: Ptr a -> IO (VkSupportedAlphaMType a)
-
-        writeVkSupportedAlpha :: Ptr a -> VkSupportedAlphaMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'supportedAlpha'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSupportedAlpha a
-
-class HasVkSupportedCompositeAlpha a where
-        type VkSupportedCompositeAlphaMType a :: *
-
-        vkSupportedCompositeAlpha :: a -> VkSupportedCompositeAlphaMType a
-
-        vkSupportedCompositeAlphaByteOffset :: a -> Int
-
-        readVkSupportedCompositeAlpha ::
-                                      Ptr a -> IO (VkSupportedCompositeAlphaMType a)
-
-        writeVkSupportedCompositeAlpha ::
-                                       Ptr a -> VkSupportedCompositeAlphaMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'supportedCompositeAlpha'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSupportedCompositeAlpha a
-
-class HasVkSupportedSurfaceCounters a where
-        type VkSupportedSurfaceCountersMType a :: *
-
-        vkSupportedSurfaceCounters ::
-                                   a -> VkSupportedSurfaceCountersMType a
-
-        vkSupportedSurfaceCountersByteOffset :: a -> Int
-
-        readVkSupportedSurfaceCounters ::
-                                       Ptr a -> IO (VkSupportedSurfaceCountersMType a)
-
-        writeVkSupportedSurfaceCounters ::
-                                        Ptr a -> VkSupportedSurfaceCountersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'supportedSurfaceCounters'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSupportedSurfaceCounters a
-
-class HasVkSupportedTransforms a where
-        type VkSupportedTransformsMType a :: *
-
-        vkSupportedTransforms :: a -> VkSupportedTransformsMType a
-
-        vkSupportedTransformsByteOffset :: a -> Int
-
-        readVkSupportedTransforms ::
-                                  Ptr a -> IO (VkSupportedTransformsMType a)
-
-        writeVkSupportedTransforms ::
-                                   Ptr a -> VkSupportedTransformsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'supportedTransforms'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSupportedTransforms a
-
-class HasVkSupportedUsageFlags a where
-        type VkSupportedUsageFlagsMType a :: *
-
-        vkSupportedUsageFlags :: a -> VkSupportedUsageFlagsMType a
-
-        vkSupportedUsageFlagsByteOffset :: a -> Int
-
-        readVkSupportedUsageFlags ::
-                                  Ptr a -> IO (VkSupportedUsageFlagsMType a)
-
-        writeVkSupportedUsageFlags ::
-                                   Ptr a -> VkSupportedUsageFlagsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'supportedUsageFlags'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSupportedUsageFlags a
-
-class HasVkSupportsTextureGatherLODBiasAMD a where
-        type VkSupportsTextureGatherLODBiasAMDMType a :: *
-
-        vkSupportsTextureGatherLODBiasAMD ::
-                                          a -> VkSupportsTextureGatherLODBiasAMDMType a
-
-        vkSupportsTextureGatherLODBiasAMDByteOffset :: a -> Int
-
-        readVkSupportsTextureGatherLODBiasAMD ::
-                                              Ptr a -> IO (VkSupportsTextureGatherLODBiasAMDMType a)
-
-        writeVkSupportsTextureGatherLODBiasAMD ::
-                                               Ptr a ->
-                                                 VkSupportsTextureGatherLODBiasAMDMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'supportsTextureGatherLODBiasAMD'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSupportsTextureGatherLODBiasAMD a
-
-class HasVkSurface a where
-        type VkSurfaceMType a :: *
-
-        vkSurface :: a -> VkSurfaceMType a
-
-        vkSurfaceByteOffset :: a -> Int
-
-        readVkSurface :: Ptr a -> IO (VkSurfaceMType a)
-
-        writeVkSurface :: Ptr a -> VkSurfaceMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'surface'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSurface a
-
-class HasVkSurfaceCapabilities a where
-        type VkSurfaceCapabilitiesMType a :: *
-
-        vkSurfaceCapabilities :: a -> VkSurfaceCapabilitiesMType a
-
-        vkSurfaceCapabilitiesByteOffset :: a -> Int
-
-        readVkSurfaceCapabilities ::
-                                  Ptr a -> IO (VkSurfaceCapabilitiesMType a)
-
-        writeVkSurfaceCapabilities ::
-                                   Ptr a -> VkSurfaceCapabilitiesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'surfaceCapabilities'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSurfaceCapabilities a
-
-class HasVkSurfaceCounters a where
-        type VkSurfaceCountersMType a :: *
-
-        vkSurfaceCounters :: a -> VkSurfaceCountersMType a
-
-        vkSurfaceCountersByteOffset :: a -> Int
-
-        readVkSurfaceCounters :: Ptr a -> IO (VkSurfaceCountersMType a)
-
-        writeVkSurfaceCounters ::
-                               Ptr a -> VkSurfaceCountersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'surfaceCounters'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSurfaceCounters a
-
-class HasVkSurfaceFormat a where
-        type VkSurfaceFormatMType a :: *
-
-        vkSurfaceFormat :: a -> VkSurfaceFormatMType a
-
-        vkSurfaceFormatByteOffset :: a -> Int
-
-        readVkSurfaceFormat :: Ptr a -> IO (VkSurfaceFormatMType a)
-
-        writeVkSurfaceFormat :: Ptr a -> VkSurfaceFormatMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'surfaceFormat'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSurfaceFormat a
-
-class HasVkSwapchain a where
-        type VkSwapchainMType a :: *
-
-        vkSwapchain :: a -> VkSwapchainMType a
-
-        vkSwapchainByteOffset :: a -> Int
-
-        readVkSwapchain :: Ptr a -> IO (VkSwapchainMType a)
-
-        writeVkSwapchain :: Ptr a -> VkSwapchainMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'swapchain'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSwapchain a
-
-class HasVkSwapchainCount a where
-        type VkSwapchainCountMType a :: *
-
-        vkSwapchainCount :: a -> VkSwapchainCountMType a
-
-        vkSwapchainCountByteOffset :: a -> Int
-
-        readVkSwapchainCount :: Ptr a -> IO (VkSwapchainCountMType a)
-
-        writeVkSwapchainCount :: Ptr a -> VkSwapchainCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'swapchainCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkSwapchainCount a
-
-class HasVkTagName a where
-        type VkTagNameMType a :: *
-
-        vkTagName :: a -> VkTagNameMType a
-
-        vkTagNameByteOffset :: a -> Int
-
-        readVkTagName :: Ptr a -> IO (VkTagNameMType a)
-
-        writeVkTagName :: Ptr a -> VkTagNameMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'tagName'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTagName a
-
-class HasVkTagSize a where
-        type VkTagSizeMType a :: *
-
-        vkTagSize :: a -> VkTagSizeMType a
-
-        vkTagSizeByteOffset :: a -> Int
-
-        readVkTagSize :: Ptr a -> IO (VkTagSizeMType a)
-
-        writeVkTagSize :: Ptr a -> VkTagSizeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'tagSize'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTagSize a
-
-class HasVkTargetCommandBuffer a where
-        type VkTargetCommandBufferMType a :: *
-
-        vkTargetCommandBuffer :: a -> VkTargetCommandBufferMType a
-
-        vkTargetCommandBufferByteOffset :: a -> Int
-
-        readVkTargetCommandBuffer ::
-                                  Ptr a -> IO (VkTargetCommandBufferMType a)
-
-        writeVkTargetCommandBuffer ::
-                                   Ptr a -> VkTargetCommandBufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'targetCommandBuffer'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTargetCommandBuffer a
-
-class HasVkTemplateType a where
-        type VkTemplateTypeMType a :: *
-
-        vkTemplateType :: a -> VkTemplateTypeMType a
-
-        vkTemplateTypeByteOffset :: a -> Int
-
-        readVkTemplateType :: Ptr a -> IO (VkTemplateTypeMType a)
-
-        writeVkTemplateType :: Ptr a -> VkTemplateTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'templateType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTemplateType a
-
-class HasVkTessellationShader a where
-        type VkTessellationShaderMType a :: *
-
-        vkTessellationShader :: a -> VkTessellationShaderMType a
-
-        vkTessellationShaderByteOffset :: a -> Int
-
-        readVkTessellationShader ::
-                                 Ptr a -> IO (VkTessellationShaderMType a)
-
-        writeVkTessellationShader ::
-                                  Ptr a -> VkTessellationShaderMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'tessellationShader'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTessellationShader a
-
-class HasVkTextureCompressionASTC_LDR a where
-        type VkTextureCompressionASTC_LDRMType a :: *
-
-        vkTextureCompressionASTC_LDR ::
-                                     a -> VkTextureCompressionASTC_LDRMType a
-
-        vkTextureCompressionASTC_LDRByteOffset :: a -> Int
-
-        readVkTextureCompressionASTC_LDR ::
-                                         Ptr a -> IO (VkTextureCompressionASTC_LDRMType a)
-
-        writeVkTextureCompressionASTC_LDR ::
-                                          Ptr a -> VkTextureCompressionASTC_LDRMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'textureCompressionASTC_LDR'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTextureCompressionASTC_LDR a
-
-class HasVkTextureCompressionBC a where
-        type VkTextureCompressionBCMType a :: *
-
-        vkTextureCompressionBC :: a -> VkTextureCompressionBCMType a
-
-        vkTextureCompressionBCByteOffset :: a -> Int
-
-        readVkTextureCompressionBC ::
-                                   Ptr a -> IO (VkTextureCompressionBCMType a)
-
-        writeVkTextureCompressionBC ::
-                                    Ptr a -> VkTextureCompressionBCMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'textureCompressionBC'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTextureCompressionBC a
-
-class HasVkTextureCompressionETC2 a where
-        type VkTextureCompressionETC2MType a :: *
-
-        vkTextureCompressionETC2 :: a -> VkTextureCompressionETC2MType a
-
-        vkTextureCompressionETC2ByteOffset :: a -> Int
-
-        readVkTextureCompressionETC2 ::
-                                     Ptr a -> IO (VkTextureCompressionETC2MType a)
-
-        writeVkTextureCompressionETC2 ::
-                                      Ptr a -> VkTextureCompressionETC2MType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'textureCompressionETC2'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTextureCompressionETC2 a
-
-class HasVkTiling a where
-        type VkTilingMType a :: *
-
-        vkTiling :: a -> VkTilingMType a
-
-        vkTilingByteOffset :: a -> Int
-
-        readVkTiling :: Ptr a -> IO (VkTilingMType a)
-
-        writeVkTiling :: Ptr a -> VkTilingMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'tiling'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTiling a
-
-class HasVkTimeout a where
-        type VkTimeoutMType a :: *
-
-        vkTimeout :: a -> VkTimeoutMType a
-
-        vkTimeoutByteOffset :: a -> Int
-
-        readVkTimeout :: Ptr a -> IO (VkTimeoutMType a)
-
-        writeVkTimeout :: Ptr a -> VkTimeoutMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'timeout'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTimeout a
-
-class HasVkTimestampComputeAndGraphics a where
-        type VkTimestampComputeAndGraphicsMType a :: *
-
-        vkTimestampComputeAndGraphics ::
-                                      a -> VkTimestampComputeAndGraphicsMType a
-
-        vkTimestampComputeAndGraphicsByteOffset :: a -> Int
-
-        readVkTimestampComputeAndGraphics ::
-                                          Ptr a -> IO (VkTimestampComputeAndGraphicsMType a)
-
-        writeVkTimestampComputeAndGraphics ::
-                                           Ptr a -> VkTimestampComputeAndGraphicsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'timestampComputeAndGraphics'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTimestampComputeAndGraphics a
-
-class HasVkTimestampPeriod a where
-        type VkTimestampPeriodMType a :: *
-
-        vkTimestampPeriod :: a -> VkTimestampPeriodMType a
-
-        vkTimestampPeriodByteOffset :: a -> Int
-
-        readVkTimestampPeriod :: Ptr a -> IO (VkTimestampPeriodMType a)
-
-        writeVkTimestampPeriod ::
-                               Ptr a -> VkTimestampPeriodMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'timestampPeriod'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTimestampPeriod a
-
-class HasVkTimestampValidBits a where
-        type VkTimestampValidBitsMType a :: *
-
-        vkTimestampValidBits :: a -> VkTimestampValidBitsMType a
-
-        vkTimestampValidBitsByteOffset :: a -> Int
-
-        readVkTimestampValidBits ::
-                                 Ptr a -> IO (VkTimestampValidBitsMType a)
-
-        writeVkTimestampValidBits ::
-                                  Ptr a -> VkTimestampValidBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'timestampValidBits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTimestampValidBits a
-
-class HasVkTokenCount a where
-        type VkTokenCountMType a :: *
-
-        vkTokenCount :: a -> VkTokenCountMType a
-
-        vkTokenCountByteOffset :: a -> Int
-
-        readVkTokenCount :: Ptr a -> IO (VkTokenCountMType a)
-
-        writeVkTokenCount :: Ptr a -> VkTokenCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'tokenCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTokenCount a
-
-class HasVkTokenType a where
-        type VkTokenTypeMType a :: *
-
-        vkTokenType :: a -> VkTokenTypeMType a
-
-        vkTokenTypeByteOffset :: a -> Int
-
-        readVkTokenType :: Ptr a -> IO (VkTokenTypeMType a)
-
-        writeVkTokenType :: Ptr a -> VkTokenTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'tokenType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTokenType a
-
-class HasVkTopology a where
-        type VkTopologyMType a :: *
-
-        vkTopology :: a -> VkTopologyMType a
-
-        vkTopologyByteOffset :: a -> Int
-
-        readVkTopology :: Ptr a -> IO (VkTopologyMType a)
-
-        writeVkTopology :: Ptr a -> VkTopologyMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'topology'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTopology a
-
-class HasVkTransform a where
-        type VkTransformMType a :: *
-
-        vkTransform :: a -> VkTransformMType a
-
-        vkTransformByteOffset :: a -> Int
-
-        readVkTransform :: Ptr a -> IO (VkTransformMType a)
-
-        writeVkTransform :: Ptr a -> VkTransformMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'transform'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkTransform a
-
-class HasVkType a where
-        type VkTypeMType a :: *
-
-        vkType :: a -> VkTypeMType a
-
-        vkTypeByteOffset :: a -> Int
-
-        readVkType :: Ptr a -> IO (VkTypeMType a)
-
-        writeVkType :: Ptr a -> VkTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'type'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkType a
-
-class HasVkUint32Array a where
-        type VkUint32ArrayMType a :: *
-
-        vkUint32Array :: a -> Int -> VkUint32ArrayMType a
-
-        vkUint32ArrayByteOffset :: a -> Int
-
-        readVkUint32Array :: Ptr a -> Int -> IO (VkUint32ArrayMType a)
-
-        writeVkUint32Array :: Ptr a -> Int -> VkUint32ArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'uint32'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkUint32Array a
-
-class HasVkUniformAndStorageBuffer16BitAccess a where
-        type VkUniformAndStorageBuffer16BitAccessMType a :: *
-
-        vkUniformAndStorageBuffer16BitAccess ::
-                                             a -> VkUniformAndStorageBuffer16BitAccessMType a
-
-        vkUniformAndStorageBuffer16BitAccessByteOffset :: a -> Int
-
-        readVkUniformAndStorageBuffer16BitAccess ::
-                                                 Ptr a ->
-                                                   IO (VkUniformAndStorageBuffer16BitAccessMType a)
-
-        writeVkUniformAndStorageBuffer16BitAccess ::
-                                                  Ptr a ->
-                                                    VkUniformAndStorageBuffer16BitAccessMType a ->
-                                                      IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'uniformAndStorageBuffer16BitAccess'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkUniformAndStorageBuffer16BitAccess a
-
-class HasVkUnnormalizedCoordinates a where
-        type VkUnnormalizedCoordinatesMType a :: *
-
-        vkUnnormalizedCoordinates :: a -> VkUnnormalizedCoordinatesMType a
-
-        vkUnnormalizedCoordinatesByteOffset :: a -> Int
-
-        readVkUnnormalizedCoordinates ::
-                                      Ptr a -> IO (VkUnnormalizedCoordinatesMType a)
-
-        writeVkUnnormalizedCoordinates ::
-                                       Ptr a -> VkUnnormalizedCoordinatesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'unnormalizedCoordinates'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkUnnormalizedCoordinates a
-
-class HasVkUsage a where
-        type VkUsageMType a :: *
-
-        vkUsage :: a -> VkUsageMType a
-
-        vkUsageByteOffset :: a -> Int
-
-        readVkUsage :: Ptr a -> IO (VkUsageMType a)
-
-        writeVkUsage :: Ptr a -> VkUsageMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'usage'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkUsage a
-
-class HasVkValidationCache a where
-        type VkValidationCacheMType a :: *
-
-        vkValidationCache :: a -> VkValidationCacheMType a
-
-        vkValidationCacheByteOffset :: a -> Int
-
-        readVkValidationCache :: Ptr a -> IO (VkValidationCacheMType a)
-
-        writeVkValidationCache ::
-                               Ptr a -> VkValidationCacheMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'validationCache'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkValidationCache a
-
-class HasVkVariableMultisampleRate a where
-        type VkVariableMultisampleRateMType a :: *
-
-        vkVariableMultisampleRate :: a -> VkVariableMultisampleRateMType a
-
-        vkVariableMultisampleRateByteOffset :: a -> Int
-
-        readVkVariableMultisampleRate ::
-                                      Ptr a -> IO (VkVariableMultisampleRateMType a)
-
-        writeVkVariableMultisampleRate ::
-                                       Ptr a -> VkVariableMultisampleRateMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'variableMultisampleRate'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVariableMultisampleRate a
-
-class HasVkVariablePointers a where
-        type VkVariablePointersMType a :: *
-
-        vkVariablePointers :: a -> VkVariablePointersMType a
-
-        vkVariablePointersByteOffset :: a -> Int
-
-        readVkVariablePointers :: Ptr a -> IO (VkVariablePointersMType a)
-
-        writeVkVariablePointers ::
-                                Ptr a -> VkVariablePointersMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'variablePointers'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVariablePointers a
-
-class HasVkVariablePointersStorageBuffer a where
-        type VkVariablePointersStorageBufferMType a :: *
-
-        vkVariablePointersStorageBuffer ::
-                                        a -> VkVariablePointersStorageBufferMType a
-
-        vkVariablePointersStorageBufferByteOffset :: a -> Int
-
-        readVkVariablePointersStorageBuffer ::
-                                            Ptr a -> IO (VkVariablePointersStorageBufferMType a)
-
-        writeVkVariablePointersStorageBuffer ::
-                                             Ptr a ->
-                                               VkVariablePointersStorageBufferMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'variablePointersStorageBuffer'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVariablePointersStorageBuffer a
-
-class HasVkVariableSampleLocations a where
-        type VkVariableSampleLocationsMType a :: *
-
-        vkVariableSampleLocations :: a -> VkVariableSampleLocationsMType a
-
-        vkVariableSampleLocationsByteOffset :: a -> Int
-
-        readVkVariableSampleLocations ::
-                                      Ptr a -> IO (VkVariableSampleLocationsMType a)
-
-        writeVkVariableSampleLocations ::
-                                       Ptr a -> VkVariableSampleLocationsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'variableSampleLocations'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVariableSampleLocations a
-
-class HasVkVendorID a where
-        type VkVendorIDMType a :: *
-
-        vkVendorID :: a -> VkVendorIDMType a
-
-        vkVendorIDByteOffset :: a -> Int
-
-        readVkVendorID :: Ptr a -> IO (VkVendorIDMType a)
-
-        writeVkVendorID :: Ptr a -> VkVendorIDMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'vendorID'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVendorID a
-
-class HasVkVertexAttributeDescriptionCount a where
-        type VkVertexAttributeDescriptionCountMType a :: *
-
-        vkVertexAttributeDescriptionCount ::
-                                          a -> VkVertexAttributeDescriptionCountMType a
-
-        vkVertexAttributeDescriptionCountByteOffset :: a -> Int
-
-        readVkVertexAttributeDescriptionCount ::
-                                              Ptr a -> IO (VkVertexAttributeDescriptionCountMType a)
-
-        writeVkVertexAttributeDescriptionCount ::
-                                               Ptr a ->
-                                                 VkVertexAttributeDescriptionCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'vertexAttributeDescriptionCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVertexAttributeDescriptionCount a
-
-class HasVkVertexBindingDescriptionCount a where
-        type VkVertexBindingDescriptionCountMType a :: *
-
-        vkVertexBindingDescriptionCount ::
-                                        a -> VkVertexBindingDescriptionCountMType a
-
-        vkVertexBindingDescriptionCountByteOffset :: a -> Int
-
-        readVkVertexBindingDescriptionCount ::
-                                            Ptr a -> IO (VkVertexBindingDescriptionCountMType a)
-
-        writeVkVertexBindingDescriptionCount ::
-                                             Ptr a ->
-                                               VkVertexBindingDescriptionCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'vertexBindingDescriptionCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVertexBindingDescriptionCount a
-
-class HasVkVertexCount a where
-        type VkVertexCountMType a :: *
-
-        vkVertexCount :: a -> VkVertexCountMType a
-
-        vkVertexCountByteOffset :: a -> Int
-
-        readVkVertexCount :: Ptr a -> IO (VkVertexCountMType a)
-
-        writeVkVertexCount :: Ptr a -> VkVertexCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'vertexCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVertexCount a
-
-class HasVkVertexOffset a where
-        type VkVertexOffsetMType a :: *
-
-        vkVertexOffset :: a -> VkVertexOffsetMType a
-
-        vkVertexOffsetByteOffset :: a -> Int
-
-        readVkVertexOffset :: Ptr a -> IO (VkVertexOffsetMType a)
-
-        writeVkVertexOffset :: Ptr a -> VkVertexOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'vertexOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVertexOffset a
-
-class HasVkVertexPipelineStoresAndAtomics a where
-        type VkVertexPipelineStoresAndAtomicsMType a :: *
-
-        vkVertexPipelineStoresAndAtomics ::
-                                         a -> VkVertexPipelineStoresAndAtomicsMType a
-
-        vkVertexPipelineStoresAndAtomicsByteOffset :: a -> Int
-
-        readVkVertexPipelineStoresAndAtomics ::
-                                             Ptr a -> IO (VkVertexPipelineStoresAndAtomicsMType a)
-
-        writeVkVertexPipelineStoresAndAtomics ::
-                                              Ptr a ->
-                                                VkVertexPipelineStoresAndAtomicsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text
-                " does not seem to have field 'vertexPipelineStoresAndAtomics'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVertexPipelineStoresAndAtomics a
-
-class HasVkViewFormatCount a where
-        type VkViewFormatCountMType a :: *
-
-        vkViewFormatCount :: a -> VkViewFormatCountMType a
-
-        vkViewFormatCountByteOffset :: a -> Int
-
-        readVkViewFormatCount :: Ptr a -> IO (VkViewFormatCountMType a)
-
-        writeVkViewFormatCount ::
-                               Ptr a -> VkViewFormatCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'viewFormatCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkViewFormatCount a
-
-class HasVkViewType a where
-        type VkViewTypeMType a :: *
-
-        vkViewType :: a -> VkViewTypeMType a
-
-        vkViewTypeByteOffset :: a -> Int
-
-        readVkViewType :: Ptr a -> IO (VkViewTypeMType a)
-
-        writeVkViewType :: Ptr a -> VkViewTypeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'viewType'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkViewType a
-
-class HasVkViewportBoundsRangeArray a where
-        type VkViewportBoundsRangeArrayMType a :: *
-
-        vkViewportBoundsRangeArray ::
-                                   a -> Int -> VkViewportBoundsRangeArrayMType a
-
-        vkViewportBoundsRangeArrayByteOffset :: a -> Int
-
-        readVkViewportBoundsRangeArray ::
-                                       Ptr a -> Int -> IO (VkViewportBoundsRangeArrayMType a)
-
-        writeVkViewportBoundsRangeArray ::
-                                        Ptr a -> Int -> VkViewportBoundsRangeArrayMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'viewportBoundsRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkViewportBoundsRangeArray a
-
-class HasVkViewportCount a where
-        type VkViewportCountMType a :: *
-
-        vkViewportCount :: a -> VkViewportCountMType a
-
-        vkViewportCountByteOffset :: a -> Int
-
-        readVkViewportCount :: Ptr a -> IO (VkViewportCountMType a)
-
-        writeVkViewportCount :: Ptr a -> VkViewportCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'viewportCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkViewportCount a
-
-class HasVkViewportSubPixelBits a where
-        type VkViewportSubPixelBitsMType a :: *
-
-        vkViewportSubPixelBits :: a -> VkViewportSubPixelBitsMType a
-
-        vkViewportSubPixelBitsByteOffset :: a -> Int
-
-        readVkViewportSubPixelBits ::
-                                   Ptr a -> IO (VkViewportSubPixelBitsMType a)
-
-        writeVkViewportSubPixelBits ::
-                                    Ptr a -> VkViewportSubPixelBitsMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'viewportSubPixelBits'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkViewportSubPixelBits a
-
-class HasVkViewportWScalingEnable a where
-        type VkViewportWScalingEnableMType a :: *
-
-        vkViewportWScalingEnable :: a -> VkViewportWScalingEnableMType a
-
-        vkViewportWScalingEnableByteOffset :: a -> Int
-
-        readVkViewportWScalingEnable ::
-                                     Ptr a -> IO (VkViewportWScalingEnableMType a)
-
-        writeVkViewportWScalingEnable ::
-                                      Ptr a -> VkViewportWScalingEnableMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'viewportWScalingEnable'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkViewportWScalingEnable a
-
-class HasVkVisibleRegion a where
-        type VkVisibleRegionMType a :: *
-
-        vkVisibleRegion :: a -> VkVisibleRegionMType a
-
-        vkVisibleRegionByteOffset :: a -> Int
-
-        readVkVisibleRegion :: Ptr a -> IO (VkVisibleRegionMType a)
-
-        writeVkVisibleRegion :: Ptr a -> VkVisibleRegionMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'visibleRegion'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkVisibleRegion a
-
-class HasVkW a where
-        type VkWMType a :: *
-
-        vkW :: a -> VkWMType a
-
-        vkWByteOffset :: a -> Int
-
-        readVkW :: Ptr a -> IO (VkWMType a)
-
-        writeVkW :: Ptr a -> VkWMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'w'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkW a
-
-class HasVkWaitSemaphoreCount a where
-        type VkWaitSemaphoreCountMType a :: *
-
-        vkWaitSemaphoreCount :: a -> VkWaitSemaphoreCountMType a
-
-        vkWaitSemaphoreCountByteOffset :: a -> Int
-
-        readVkWaitSemaphoreCount ::
-                                 Ptr a -> IO (VkWaitSemaphoreCountMType a)
-
-        writeVkWaitSemaphoreCount ::
-                                  Ptr a -> VkWaitSemaphoreCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'waitSemaphoreCount'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWaitSemaphoreCount a
-
-class HasVkWaitSemaphoreValuesCount a where
-        type VkWaitSemaphoreValuesCountMType a :: *
-
-        vkWaitSemaphoreValuesCount ::
-                                   a -> VkWaitSemaphoreValuesCountMType a
-
-        vkWaitSemaphoreValuesCountByteOffset :: a -> Int
-
-        readVkWaitSemaphoreValuesCount ::
-                                       Ptr a -> IO (VkWaitSemaphoreValuesCountMType a)
-
-        writeVkWaitSemaphoreValuesCount ::
-                                        Ptr a -> VkWaitSemaphoreValuesCountMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'waitSemaphoreValuesCount'."
-                ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWaitSemaphoreValuesCount a
-
-class HasVkWhitePoint a where
-        type VkWhitePointMType a :: *
-
-        vkWhitePoint :: a -> VkWhitePointMType a
-
-        vkWhitePointByteOffset :: a -> Int
-
-        readVkWhitePoint :: Ptr a -> IO (VkWhitePointMType a)
-
-        writeVkWhitePoint :: Ptr a -> VkWhitePointMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'whitePoint'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWhitePoint a
-
-class HasVkWideLines a where
-        type VkWideLinesMType a :: *
-
-        vkWideLines :: a -> VkWideLinesMType a
-
-        vkWideLinesByteOffset :: a -> Int
-
-        readVkWideLines :: Ptr a -> IO (VkWideLinesMType a)
-
-        writeVkWideLines :: Ptr a -> VkWideLinesMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'wideLines'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWideLines a
-
-class HasVkWidth a where
-        type VkWidthMType a :: *
-
-        vkWidth :: a -> VkWidthMType a
-
-        vkWidthByteOffset :: a -> Int
-
-        readVkWidth :: Ptr a -> IO (VkWidthMType a)
-
-        writeVkWidth :: Ptr a -> VkWidthMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'width'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWidth a
-
-class HasVkWindow a where
-        type VkWindowMType a :: *
-
-        vkWindow :: a -> VkWindowMType a
-
-        vkWindowByteOffset :: a -> Int
-
-        readVkWindow :: Ptr a -> IO (VkWindowMType a)
-
-        writeVkWindow :: Ptr a -> VkWindowMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'window'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWindow a
-
-class HasVkWriteMask a where
-        type VkWriteMaskMType a :: *
-
-        vkWriteMask :: a -> VkWriteMaskMType a
-
-        vkWriteMaskByteOffset :: a -> Int
-
-        readVkWriteMask :: Ptr a -> IO (VkWriteMaskMType a)
-
-        writeVkWriteMask :: Ptr a -> VkWriteMaskMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'writeMask'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkWriteMask a
-
-class HasVkX a where
-        type VkXMType a :: *
-
-        vkX :: a -> VkXMType a
-
-        vkXByteOffset :: a -> Int
-
-        readVkX :: Ptr a -> IO (VkXMType a)
-
-        writeVkX :: Ptr a -> VkXMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'x'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkX a
-
-class HasVkXChromaOffset a where
-        type VkXChromaOffsetMType a :: *
-
-        vkXChromaOffset :: a -> VkXChromaOffsetMType a
-
-        vkXChromaOffsetByteOffset :: a -> Int
-
-        readVkXChromaOffset :: Ptr a -> IO (VkXChromaOffsetMType a)
-
-        writeVkXChromaOffset :: Ptr a -> VkXChromaOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'xChromaOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkXChromaOffset a
-
-class HasVkXcoeff a where
-        type VkXcoeffMType a :: *
-
-        vkXcoeff :: a -> VkXcoeffMType a
-
-        vkXcoeffByteOffset :: a -> Int
-
-        readVkXcoeff :: Ptr a -> IO (VkXcoeffMType a)
-
-        writeVkXcoeff :: Ptr a -> VkXcoeffMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'xcoeff'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkXcoeff a
-
-class HasVkY a where
-        type VkYMType a :: *
-
-        vkY :: a -> VkYMType a
-
-        vkYByteOffset :: a -> Int
-
-        readVkY :: Ptr a -> IO (VkYMType a)
-
-        writeVkY :: Ptr a -> VkYMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'y'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkY a
-
-class HasVkYChromaOffset a where
-        type VkYChromaOffsetMType a :: *
-
-        vkYChromaOffset :: a -> VkYChromaOffsetMType a
-
-        vkYChromaOffsetByteOffset :: a -> Int
-
-        readVkYChromaOffset :: Ptr a -> IO (VkYChromaOffsetMType a)
-
-        writeVkYChromaOffset :: Ptr a -> VkYChromaOffsetMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'yChromaOffset'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkYChromaOffset a
-
-class HasVkYcbcrModel a where
-        type VkYcbcrModelMType a :: *
-
-        vkYcbcrModel :: a -> VkYcbcrModelMType a
-
-        vkYcbcrModelByteOffset :: a -> Int
-
-        readVkYcbcrModel :: Ptr a -> IO (VkYcbcrModelMType a)
-
-        writeVkYcbcrModel :: Ptr a -> VkYcbcrModelMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ycbcrModel'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkYcbcrModel a
-
-class HasVkYcbcrRange a where
-        type VkYcbcrRangeMType a :: *
-
-        vkYcbcrRange :: a -> VkYcbcrRangeMType a
-
-        vkYcbcrRangeByteOffset :: a -> Int
-
-        readVkYcbcrRange :: Ptr a -> IO (VkYcbcrRangeMType a)
-
-        writeVkYcbcrRange :: Ptr a -> VkYcbcrRangeMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ycbcrRange'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkYcbcrRange a
-
-class HasVkYcoeff a where
-        type VkYcoeffMType a :: *
-
-        vkYcoeff :: a -> VkYcoeffMType a
-
-        vkYcoeffByteOffset :: a -> Int
-
-        readVkYcoeff :: Ptr a -> IO (VkYcoeffMType a)
-
-        writeVkYcoeff :: Ptr a -> VkYcoeffMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'ycoeff'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkYcoeff a
-
-class HasVkZ a where
-        type VkZMType a :: *
-
-        vkZ :: a -> VkZMType a
-
-        vkZByteOffset :: a -> Int
-
-        readVkZ :: Ptr a -> IO (VkZMType a)
-
-        writeVkZ :: Ptr a -> VkZMType a -> IO ()
-
-instance {-# OVERLAPPABLE #-}
-         TypeError
-           ('ShowType a ':<>:
-              'Text " does not seem to have field 'z'." ':$$:
-                'Text
-                  "Check Vulkan documentation for available fields of this type.") =>
-         HasVkZ a
diff --git a/src/Graphics/Vulkan.hs b/src/Graphics/Vulkan.hs
--- a/src/Graphics/Vulkan.hs
+++ b/src/Graphics/Vulkan.hs
@@ -4,19 +4,15 @@
 module Graphics.Vulkan
   ( module Graphics.Vulkan.Marshal
   , module Graphics.Vulkan.Constants
-  , module Graphics.Vulkan.Core
   , module Graphics.Vulkan.Types.Defines
   , module Graphics.Vulkan.Types.Funcpointers
   , module Graphics.Vulkan.Types.Handles
   , module Graphics.Vulkan.Types.Include
-  , module Graphics.Vulkan.Types.StructMembers
   ) where
 
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Constants
-import Graphics.Vulkan.Core
 import Graphics.Vulkan.Types.Defines
 import Graphics.Vulkan.Types.Funcpointers
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Include
-import Graphics.Vulkan.Types.StructMembers
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
@@ -32,7 +32,8 @@
   , clearStorable, withPtr
     -- * Type-indexed access to struct members
   , HasField (..), CanReadField (..), CanWriteField (..)
-  , CanReadFieldArray (..), CanWriteFieldArray (..), IndexInBounds
+  , CanReadFieldArray (..), CanWriteFieldArray (..)
+  , IsFieldArray, IndexInBounds
     -- * Re-exported functions from 'Foreign.ForeignPtr'
   , mallocForeignPtr, withForeignPtr, addForeignPtrFinalizer
     -- * Re-exported common types
@@ -43,7 +44,7 @@
     -- * Utilities for string types
   , withCStringField, unsafeCStringField
   , getStringField, readStringField, writeStringField
-  , eqCStrings, eqCStringsN
+  , cmpCStrings, cmpCStringsN
   ) where
 
 import           Data.Data                        (Data)
@@ -69,6 +70,7 @@
 
 import           Graphics.Vulkan.Marshal.Internal
 
+
 -- | Distinguish single bits and bitmasks in vulkan flags
 data FlagType = FlagMask | FlagBit
 
@@ -275,7 +277,9 @@
   -- | Offset of a field in bytes.
   fieldOffset :: Int
 
-class HasField fname a => CanReadField (fname :: Symbol) (a :: Type) where
+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)
 
@@ -284,7 +288,7 @@
 
 class ( HasField fname a
       , IndexInBounds fname idx a
-      , FieldIsArray fname a ~ 'True
+      , IsFieldArray fname a 'True
       ) => CanReadFieldArray (fname :: Symbol) (idx :: Nat) (a :: Type) where
   -- | Length of an array that is a field of a structure or union
   type FieldArrayLength fname a :: Nat
@@ -298,26 +302,28 @@
   writeFieldArray :: Ptr a -> FieldType fname a -> IO ()
 
 instance {-# OVERLAPPABLE #-}
-         TypeError (NoField fname a) => HasField fname a where
+         TypeError (ErrorNoSuchField fname a) => HasField fname a where
+
 instance {-# OVERLAPPABLE #-}
-         TypeError (NoField fname a) => CanReadField fname a where
+         ( HasField fname a
+         , IsFieldArray fname a 'False
+         , TypeError (ErrorNotReadableField fname a)
+         ) => CanReadField fname a where
 instance {-# OVERLAPPABLE #-}
-         TypeError (NoField fname a) => CanWriteField fname a where
+         ( CanReadField fname a
+         , TypeError (ErrorNotWritableField fname a)
+         ) => CanWriteField fname a where
 instance {-# OVERLAPPABLE #-}
-         ( TypeError (NoField fname a)
+         ( HasField fname a
+         , IsFieldArray fname a 'True
          , IndexInBounds fname idx a
-         , FieldIsArray fname a ~ 'True
+         , TypeError (ErrorNotReadableField fname a)
          ) => CanReadFieldArray fname idx a where
 instance {-# OVERLAPPABLE #-}
-         ( TypeError (NoField fname a)
-         , IndexInBounds fname idx a
-         , FieldIsArray fname a ~ 'True
+         ( CanReadFieldArray fname idx a
+         , TypeError (ErrorNotWritableField fname a)
          ) => CanWriteFieldArray fname idx a where
 
-type NoField (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 IndexInBounds (s :: Symbol) (i :: Nat) (a :: Type)
   = IndexInBounds' s i a (CmpNat i (FieldArrayLength s a))
@@ -326,15 +332,77 @@
                            (i :: Nat)
                            (a :: Type) (r :: Ordering) :: Constraint where
   IndexInBounds' _ _ _ 'LT = ()
-  IndexInBounds' s i a _ = TypeError
-    ( '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 "."
-    )
+  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.
@@ -399,20 +467,18 @@
 
 -- | Check first if two CString point to the same memory location.
 --   Otherwise, compare them using C @strcmp@ function.
-eqCStrings :: CString -> CString -> Bool
-eqCStrings a b
-  | a == b = True
-  | c_strcmp a b == 0 = True
-  | otherwise = False
+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.
-eqCStringsN :: CString -> CString -> Int -> Bool
-eqCStringsN a b n
-  | a == b = True
-  | c_strncmp a b (fromIntegral n) == 0 = True
-  | otherwise = False
+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"
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
@@ -2,6 +2,7 @@
 {-# LANGUAGE BangPatterns          #-}
 {-# LANGUAGE ConstraintKinds       #-}
 {-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE ExplicitNamespaces    #-}
 {-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE KindSignatures        #-}
@@ -28,12 +29,13 @@
 
 import           Data.Coerce
 import           Data.Kind                        (Constraint, Type)
-import           Data.Type.Bool                   (If)
+import           Data.Type.Bool                   (If, type (||))
+import           Data.Type.Equality               (type (==))
 import           Foreign.C.String                 (newCString)
 import           Foreign.C.Types                  (CChar)
 import           Foreign.Marshal.Alloc            (finalizerFree, free)
 import           Foreign.Marshal.Array            (newArray, pokeArray0)
-import           Foreign.Ptr                      (plusPtr, nullPtr)
+import           Foreign.Ptr                      (nullPtr, plusPtr)
 import           Foreign.Storable                 (Storable)
 import           GHC.Base                         (IO (..))
 import           GHC.Prim
@@ -43,6 +45,7 @@
 
 import           Graphics.Vulkan.Marshal
 import           Graphics.Vulkan.Marshal.Internal
+import           Graphics.Vulkan.Types.BaseTypes  (VkBool32)
 
 
 -- | Safely fill-in a new vulkan structure
@@ -315,7 +318,8 @@
                               )
 
 type family FieldMustBeOptional (f :: Symbol) (x :: Type) :: Constraint where
-  FieldMustBeOptional f x = If (FieldOptional f x) (() :: Constraint)
+  FieldMustBeOptional f x
+    = If (FieldOptional f x || FieldType f x == VkBool32) (() :: Constraint)
     ( TypeError
       ( 'Text "Non-optional field " ':<>: 'ShowType f
         ':<>: 'Text " of structure " ':<>: 'ShowType x
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
@@ -191,10 +191,8 @@
 cmpBytes# :: Int -> Addr# -> Addr# -> Ordering
 cmpBytes# n a b
   | isTrue# (eqAddr# a b) = EQ
-  | otherwise = case c_memcmp a b (fromIntegral n) of
-     r | r > 0 -> GT
-       | r < 0 -> LT
-       | otherwise -> EQ
+  | otherwise = c_memcmp a b (fromIntegral n) `compare` 0
+
 
 foreign import ccall unsafe "memcmp"
   c_memcmp :: Addr# -> Addr# -> CSize -> CInt
diff --git a/vulkan-api.cabal b/vulkan-api.cabal
--- a/vulkan-api.cabal
+++ b/vulkan-api.cabal
@@ -3,10 +3,16 @@
 -- it is autogenerated at genvulkan/src/Write/Cabal.hs
 --
 name:                vulkan-api
-version:             0.1.0.1
+version:             1.1.0.0
 synopsis:            Low-level low-overhead vulkan api bindings
-description:         Haskell bindings for vulkan api as described in vk.xml.
-homepage:            https://github.com/achirkin/genvulkan#readme
+description:
+  Haskell bindings for vulkan api as described in vk.xml.
+  .
+  You can find some simple examples at <https://github.com/achirkin/vulkan/tree/master/vulkan-examples vulkan-examples> page
+  or a more complete triangle rendering program at <https://github.com/achirkin/vulkan/tree/master/vulkan-triangles vulkan-triangles> page.
+  .
+  For further information, please refer to <https://github.com/achirkin/vulkan#readme README.md>.
+homepage:            https://github.com/achirkin/vulkan#readme
 license:             BSD3
 license-file:        LICENSE
 author:              Artem Chirkin
@@ -16,8 +22,7 @@
 build-type:          Simple
 cabal-version:       >=1.22
 extra-source-files:
-    include/vulkan/vulkan.h
-    include/vulkan/vk_platform.h
+    include/vulkan/*.h
 
 flag usePlatformAndroidKhr
     description:
@@ -75,7 +80,8 @@
 
         Graphics.Vulkan
         Graphics.Vulkan.Constants
-        Graphics.Vulkan.Core
+        Graphics.Vulkan.Core_1_0
+        Graphics.Vulkan.Core_1_1
         Graphics.Vulkan.Ext
         Graphics.Vulkan.Ext.VK_AMD_buffer_marker
         Graphics.Vulkan.Ext.VK_AMD_draw_indirect_count
@@ -96,6 +102,7 @@
         Graphics.Vulkan.Ext.VK_EXT_conservative_rasterization
         Graphics.Vulkan.Ext.VK_EXT_debug_marker
         Graphics.Vulkan.Ext.VK_EXT_debug_report
+        Graphics.Vulkan.Ext.VK_EXT_debug_utils
         Graphics.Vulkan.Ext.VK_EXT_depth_range_unrestricted
         Graphics.Vulkan.Ext.VK_EXT_direct_mode_display
         Graphics.Vulkan.Ext.VK_EXT_discard_rectangles
@@ -116,6 +123,7 @@
         Graphics.Vulkan.Ext.VK_EXT_swapchain_colorspace
         Graphics.Vulkan.Ext.VK_EXT_validation_cache
         Graphics.Vulkan.Ext.VK_EXT_validation_flags
+        Graphics.Vulkan.Ext.VK_EXT_vertex_attribute_divisor
         Graphics.Vulkan.Ext.VK_GOOGLE_display_timing
         Graphics.Vulkan.Ext.VK_IMG_filter_cubic
         Graphics.Vulkan.Ext.VK_IMG_format_pvrtc
@@ -123,6 +131,8 @@
         Graphics.Vulkan.Ext.VK_KHR_bind_memory2
         Graphics.Vulkan.Ext.VK_KHR_dedicated_allocation
         Graphics.Vulkan.Ext.VK_KHR_descriptor_update_template
+        Graphics.Vulkan.Ext.VK_KHR_device_group
+        Graphics.Vulkan.Ext.VK_KHR_device_group_creation
         Graphics.Vulkan.Ext.VK_KHR_display
         Graphics.Vulkan.Ext.VK_KHR_display_swapchain
         Graphics.Vulkan.Ext.VK_KHR_external_fence
@@ -141,6 +151,8 @@
         Graphics.Vulkan.Ext.VK_KHR_incremental_present
         Graphics.Vulkan.Ext.VK_KHR_maintenance1
         Graphics.Vulkan.Ext.VK_KHR_maintenance2
+        Graphics.Vulkan.Ext.VK_KHR_maintenance3
+        Graphics.Vulkan.Ext.VK_KHR_multiview
         Graphics.Vulkan.Ext.VK_KHR_push_descriptor
         Graphics.Vulkan.Ext.VK_KHR_relaxed_block_layout
         Graphics.Vulkan.Ext.VK_KHR_sampler_mirror_clamp_to_edge
@@ -151,9 +163,6 @@
         Graphics.Vulkan.Ext.VK_KHR_surface
         Graphics.Vulkan.Ext.VK_KHR_swapchain
         Graphics.Vulkan.Ext.VK_KHR_variable_pointers
-        Graphics.Vulkan.Ext.VK_KHX_device_group
-        Graphics.Vulkan.Ext.VK_KHX_device_group_creation
-        Graphics.Vulkan.Ext.VK_KHX_multiview
         Graphics.Vulkan.Ext.VK_NVX_device_generated_commands
         Graphics.Vulkan.Ext.VK_NVX_multiview_per_view_attributes
         Graphics.Vulkan.Ext.VK_NV_clip_space_w_scaling
@@ -185,6 +194,7 @@
         Graphics.Vulkan.Types.Enum.VkBufferCreateFlags
         Graphics.Vulkan.Types.Enum.VkBufferUsageFlags
         Graphics.Vulkan.Types.Enum.VkBufferViewCreateFlagBits
+        Graphics.Vulkan.Types.Enum.VkChromaLocation
         Graphics.Vulkan.Types.Enum.VkChromaLocationKHR
         Graphics.Vulkan.Types.Enum.VkColorComponentFlags
         Graphics.Vulkan.Types.Enum.VkColorSpaceKHR
@@ -201,30 +211,40 @@
         Graphics.Vulkan.Types.Enum.VkCullModeFlags
         Graphics.Vulkan.Types.Enum.VkDebugReportFlagsEXT
         Graphics.Vulkan.Types.Enum.VkDebugReportObjectTypeEXT
+        Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageSeverityFlagsEXT
+        Graphics.Vulkan.Types.Enum.VkDebugUtilsMessageTypeFlagsEXT
         Graphics.Vulkan.Types.Enum.VkDependencyFlags
         Graphics.Vulkan.Types.Enum.VkDescriptorPoolCreateFlags
         Graphics.Vulkan.Types.Enum.VkDescriptorSetLayoutCreateFlags
         Graphics.Vulkan.Types.Enum.VkDescriptorType
+        Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateType
         Graphics.Vulkan.Types.Enum.VkDescriptorUpdateTemplateTypeKHR
         Graphics.Vulkan.Types.Enum.VkDeviceCreateFlagBits
         Graphics.Vulkan.Types.Enum.VkDeviceEventTypeEXT
-        Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHX
-        Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlagBits
+        Graphics.Vulkan.Types.Enum.VkDeviceGroupPresentModeFlagsKHR
+        Graphics.Vulkan.Types.Enum.VkDeviceQueueCreateFlags
         Graphics.Vulkan.Types.Enum.VkDiscardRectangleModeEXT
         Graphics.Vulkan.Types.Enum.VkDisplayEventTypeEXT
         Graphics.Vulkan.Types.Enum.VkDisplayPlaneAlphaFlagsKHR
         Graphics.Vulkan.Types.Enum.VkDisplayPowerStateEXT
         Graphics.Vulkan.Types.Enum.VkDynamicState
-        Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagsKHR
-        Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagsKHR
-        Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalFenceFeatureFlags
+        Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalFenceHandleTypeFlags
+        Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlags
         Graphics.Vulkan.Types.Enum.VkExternalMemoryFeatureFlagsNV
-        Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlags
         Graphics.Vulkan.Types.Enum.VkExternalMemoryHandleTypeFlagsNV
-        Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagsKHR
-        Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalSemaphoreFeatureFlags
+        Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkExternalSemaphoreHandleTypeFlags
         Graphics.Vulkan.Types.Enum.VkFenceCreateFlags
-        Graphics.Vulkan.Types.Enum.VkFenceImportFlagsKHR
+        Graphics.Vulkan.Types.Enum.VkFenceImportFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkFenceImportFlags
         Graphics.Vulkan.Types.Enum.VkFilter
         Graphics.Vulkan.Types.Enum.VkFormat
         Graphics.Vulkan.Types.Enum.VkFormatFeatureFlags
@@ -243,13 +263,15 @@
         Graphics.Vulkan.Types.Enum.VkInstanceCreateFlagBits
         Graphics.Vulkan.Types.Enum.VkInternalAllocationType
         Graphics.Vulkan.Types.Enum.VkLogicOp
-        Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagsKHX
+        Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkMemoryAllocateFlags
         Graphics.Vulkan.Types.Enum.VkMemoryHeapFlags
         Graphics.Vulkan.Types.Enum.VkMemoryPropertyFlags
         Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX
         Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX
         Graphics.Vulkan.Types.Enum.VkObjectType
-        Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagsKHX
+        Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkPeerMemoryFeatureFlags
         Graphics.Vulkan.Types.Enum.VkPhysicalDeviceType
         Graphics.Vulkan.Types.Enum.VkPipelineBindPoint
         Graphics.Vulkan.Types.Enum.VkPipelineCacheCreateFlagBits
@@ -267,6 +289,7 @@
         Graphics.Vulkan.Types.Enum.VkPipelineTessellationStateCreateFlagBits
         Graphics.Vulkan.Types.Enum.VkPipelineVertexInputStateCreateFlagBits
         Graphics.Vulkan.Types.Enum.VkPipelineViewportStateCreateFlagBits
+        Graphics.Vulkan.Types.Enum.VkPointClippingBehavior
         Graphics.Vulkan.Types.Enum.VkPointClippingBehaviorKHR
         Graphics.Vulkan.Types.Enum.VkPolygonMode
         Graphics.Vulkan.Types.Enum.VkPresentModeKHR
@@ -286,9 +309,12 @@
         Graphics.Vulkan.Types.Enum.VkSamplerCreateFlagBits
         Graphics.Vulkan.Types.Enum.VkSamplerMipmapMode
         Graphics.Vulkan.Types.Enum.VkSamplerReductionModeEXT
+        Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversion
         Graphics.Vulkan.Types.Enum.VkSamplerYcbcrModelConversionKHR
+        Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRange
         Graphics.Vulkan.Types.Enum.VkSamplerYcbcrRangeKHR
-        Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagsKHR
+        Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlagBitsKHR
+        Graphics.Vulkan.Types.Enum.VkSemaphoreImportFlags
         Graphics.Vulkan.Types.Enum.VkShaderInfoTypeAMD
         Graphics.Vulkan.Types.Enum.VkShaderStageFlags
         Graphics.Vulkan.Types.Enum.VkSharingMode
@@ -297,12 +323,14 @@
         Graphics.Vulkan.Types.Enum.VkStencilFaceFlags
         Graphics.Vulkan.Types.Enum.VkStencilOp
         Graphics.Vulkan.Types.Enum.VkStructureType
+        Graphics.Vulkan.Types.Enum.VkSubgroupFeatureFlags
         Graphics.Vulkan.Types.Enum.VkSubpassContents
         Graphics.Vulkan.Types.Enum.VkSubpassDescriptionFlags
         Graphics.Vulkan.Types.Enum.VkSurfaceCounterFlagsEXT
         Graphics.Vulkan.Types.Enum.VkSurfaceTransformFlagsKHR
         Graphics.Vulkan.Types.Enum.VkSwapchainCreateFlagsKHR
         Graphics.Vulkan.Types.Enum.VkSystemAllocationScope
+        Graphics.Vulkan.Types.Enum.VkTessellationDomainOrigin
         Graphics.Vulkan.Types.Enum.VkTessellationDomainOriginKHR
         Graphics.Vulkan.Types.Enum.VkValidationCacheHeaderVersionEXT
         Graphics.Vulkan.Types.Enum.VkValidationCheckEXT
@@ -311,23 +339,29 @@
         Graphics.Vulkan.Types.Funcpointers
         Graphics.Vulkan.Types.Handles
         Graphics.Vulkan.Types.Include
-        Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHX
+        Graphics.Vulkan.Types.Struct.VkAcquireNextImageInfoKHR
         Graphics.Vulkan.Types.Struct.VkAllocationCallbacks
         Graphics.Vulkan.Types.Struct.VkApplicationInfo
         Graphics.Vulkan.Types.Struct.VkAttachmentDescription
         Graphics.Vulkan.Types.Struct.VkAttachmentReference
         Graphics.Vulkan.Types.Struct.VkAttachmentSampleLocationsEXT
-        Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHX
+        Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfo
+        Graphics.Vulkan.Types.Struct.VkBindBufferMemoryDeviceGroupInfoKHR
+        Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfo
         Graphics.Vulkan.Types.Struct.VkBindBufferMemoryInfoKHR
-        Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHX
+        Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfo
+        Graphics.Vulkan.Types.Struct.VkBindImageMemoryDeviceGroupInfoKHR
+        Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfo
         Graphics.Vulkan.Types.Struct.VkBindImageMemoryInfoKHR
-        Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHX
+        Graphics.Vulkan.Types.Struct.VkBindImageMemorySwapchainInfoKHR
+        Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfo
         Graphics.Vulkan.Types.Struct.VkBindImagePlaneMemoryInfoKHR
         Graphics.Vulkan.Types.Struct.VkBindSparseInfo
         Graphics.Vulkan.Types.Struct.VkBufferCopy
         Graphics.Vulkan.Types.Struct.VkBufferCreateInfo
         Graphics.Vulkan.Types.Struct.VkBufferImageCopy
         Graphics.Vulkan.Types.Struct.VkBufferMemoryBarrier
+        Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2
         Graphics.Vulkan.Types.Struct.VkBufferMemoryRequirementsInfo2KHR
         Graphics.Vulkan.Types.Struct.VkBufferViewCreateInfo
         Graphics.Vulkan.Types.Struct.VkClearAttachment
@@ -348,6 +382,11 @@
         Graphics.Vulkan.Types.Struct.VkDebugMarkerObjectNameInfoEXT
         Graphics.Vulkan.Types.Struct.VkDebugMarkerObjectTagInfoEXT
         Graphics.Vulkan.Types.Struct.VkDebugReportCallbackCreateInfoEXT
+        Graphics.Vulkan.Types.Struct.VkDebugUtilsLabelEXT
+        Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCallbackDataEXT
+        Graphics.Vulkan.Types.Struct.VkDebugUtilsMessengerCreateInfoEXT
+        Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectNameInfoEXT
+        Graphics.Vulkan.Types.Struct.VkDebugUtilsObjectTagInfoEXT
         Graphics.Vulkan.Types.Struct.VkDedicatedAllocationBufferCreateInfoNV
         Graphics.Vulkan.Types.Struct.VkDedicatedAllocationImageCreateInfoNV
         Graphics.Vulkan.Types.Struct.VkDedicatedAllocationMemoryAllocateInfoNV
@@ -358,22 +397,32 @@
         Graphics.Vulkan.Types.Struct.VkDescriptorSetAllocateInfo
         Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutBinding
         Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutCreateInfo
+        Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupport
+        Graphics.Vulkan.Types.Struct.VkDescriptorSetLayoutSupportKHR
+        Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfo
         Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateCreateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntry
         Graphics.Vulkan.Types.Struct.VkDescriptorUpdateTemplateEntryKHR
         Graphics.Vulkan.Types.Struct.VkDeviceCreateInfo
         Graphics.Vulkan.Types.Struct.VkDeviceEventInfoEXT
         Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsFeaturesNVX
         Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsLimitsNVX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHX
-        Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHX
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfo
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupBindSparseInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfo
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupCommandBufferBeginInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfo
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupDeviceCreateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentCapabilitiesKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupPresentInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfo
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupRenderPassBeginInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfo
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupSubmitInfoKHR
+        Graphics.Vulkan.Types.Struct.VkDeviceGroupSwapchainCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkDeviceQueueCreateInfo
         Graphics.Vulkan.Types.Struct.VkDeviceQueueGlobalPriorityCreateInfoEXT
+        Graphics.Vulkan.Types.Struct.VkDeviceQueueInfo2
         Graphics.Vulkan.Types.Struct.VkDispatchIndirectCommand
         Graphics.Vulkan.Types.Struct.VkDisplayEventInfoEXT
         Graphics.Vulkan.Types.Struct.VkDisplayModeCreateInfoKHR
@@ -388,25 +437,36 @@
         Graphics.Vulkan.Types.Struct.VkDrawIndexedIndirectCommand
         Graphics.Vulkan.Types.Struct.VkDrawIndirectCommand
         Graphics.Vulkan.Types.Struct.VkEventCreateInfo
+        Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfo
         Graphics.Vulkan.Types.Struct.VkExportFenceCreateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfo
         Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoKHR
         Graphics.Vulkan.Types.Struct.VkExportMemoryAllocateInfoNV
+        Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfo
         Graphics.Vulkan.Types.Struct.VkExportSemaphoreCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkExtensionProperties
         Graphics.Vulkan.Types.Struct.VkExtent2D
         Graphics.Vulkan.Types.Struct.VkExtent3D
+        Graphics.Vulkan.Types.Struct.VkExternalBufferProperties
         Graphics.Vulkan.Types.Struct.VkExternalBufferPropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkExternalFenceProperties
         Graphics.Vulkan.Types.Struct.VkExternalFencePropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkExternalImageFormatProperties
         Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesKHR
         Graphics.Vulkan.Types.Struct.VkExternalImageFormatPropertiesNV
+        Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfo
         Graphics.Vulkan.Types.Struct.VkExternalMemoryBufferCreateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfo
         Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkExternalMemoryImageCreateInfoNV
+        Graphics.Vulkan.Types.Struct.VkExternalMemoryProperties
         Graphics.Vulkan.Types.Struct.VkExternalMemoryPropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkExternalSemaphoreProperties
         Graphics.Vulkan.Types.Struct.VkExternalSemaphorePropertiesKHR
         Graphics.Vulkan.Types.Struct.VkFenceCreateInfo
         Graphics.Vulkan.Types.Struct.VkFenceGetFdInfoKHR
         Graphics.Vulkan.Types.Struct.VkFormatProperties
+        Graphics.Vulkan.Types.Struct.VkFormatProperties2
         Graphics.Vulkan.Types.Struct.VkFormatProperties2KHR
         Graphics.Vulkan.Types.Struct.VkFramebufferCreateInfo
         Graphics.Vulkan.Types.Struct.VkGraphicsPipelineCreateInfo
@@ -416,17 +476,22 @@
         Graphics.Vulkan.Types.Struct.VkImageCreateInfo
         Graphics.Vulkan.Types.Struct.VkImageFormatListCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkImageFormatProperties
+        Graphics.Vulkan.Types.Struct.VkImageFormatProperties2
         Graphics.Vulkan.Types.Struct.VkImageFormatProperties2KHR
         Graphics.Vulkan.Types.Struct.VkImageMemoryBarrier
+        Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2
         Graphics.Vulkan.Types.Struct.VkImageMemoryRequirementsInfo2KHR
+        Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfo
         Graphics.Vulkan.Types.Struct.VkImagePlaneMemoryRequirementsInfoKHR
         Graphics.Vulkan.Types.Struct.VkImageResolve
+        Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2
         Graphics.Vulkan.Types.Struct.VkImageSparseMemoryRequirementsInfo2KHR
         Graphics.Vulkan.Types.Struct.VkImageSubresource
         Graphics.Vulkan.Types.Struct.VkImageSubresourceLayers
         Graphics.Vulkan.Types.Struct.VkImageSubresourceRange
-        Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHX
+        Graphics.Vulkan.Types.Struct.VkImageSwapchainCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkImageViewCreateInfo
+        Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfo
         Graphics.Vulkan.Types.Struct.VkImageViewUsageCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkImportFenceFdInfoKHR
         Graphics.Vulkan.Types.Struct.VkImportMemoryFdInfoKHR
@@ -435,20 +500,25 @@
         Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutCreateInfoNVX
         Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutTokenNVX
         Graphics.Vulkan.Types.Struct.VkIndirectCommandsTokenNVX
+        Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReference
         Graphics.Vulkan.Types.Struct.VkInputAttachmentAspectReferenceKHR
         Graphics.Vulkan.Types.Struct.VkInstanceCreateInfo
         Graphics.Vulkan.Types.Struct.VkLayerProperties
         Graphics.Vulkan.Types.Struct.VkMappedMemoryRange
-        Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHX
+        Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfo
+        Graphics.Vulkan.Types.Struct.VkMemoryAllocateFlagsInfoKHR
         Graphics.Vulkan.Types.Struct.VkMemoryAllocateInfo
         Graphics.Vulkan.Types.Struct.VkMemoryBarrier
+        Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfo
         Graphics.Vulkan.Types.Struct.VkMemoryDedicatedAllocateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirements
         Graphics.Vulkan.Types.Struct.VkMemoryDedicatedRequirementsKHR
         Graphics.Vulkan.Types.Struct.VkMemoryFdPropertiesKHR
         Graphics.Vulkan.Types.Struct.VkMemoryGetFdInfoKHR
         Graphics.Vulkan.Types.Struct.VkMemoryHeap
         Graphics.Vulkan.Types.Struct.VkMemoryHostPointerPropertiesEXT
         Graphics.Vulkan.Types.Struct.VkMemoryRequirements
+        Graphics.Vulkan.Types.Struct.VkMemoryRequirements2
         Graphics.Vulkan.Types.Struct.VkMemoryRequirements2KHR
         Graphics.Vulkan.Types.Struct.VkMemoryType
         Graphics.Vulkan.Types.Struct.VkMultisamplePropertiesEXT
@@ -462,38 +532,62 @@
         Graphics.Vulkan.Types.Struct.VkOffset2D
         Graphics.Vulkan.Types.Struct.VkOffset3D
         Graphics.Vulkan.Types.Struct.VkPastPresentationTimingGOOGLE
+        Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeatures
         Graphics.Vulkan.Types.Struct.VkPhysicalDevice16BitStorageFeaturesKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceConservativeRasterizationPropertiesEXT
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceDiscardRectanglePropertiesEXT
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfo
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalBufferInfoKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfo
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalFenceInfoKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfo
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalImageFormatInfoKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalMemoryHostPropertiesEXT
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfo
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceExternalSemaphoreInfoKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceFeatures2KHR
-        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHX
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupProperties
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceGroupPropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDProperties
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceIDPropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceImageFormatInfo2KHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceLimits
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3Properties
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMaintenance3PropertiesKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMemoryProperties2KHR
-        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHX
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeatures
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewFeaturesKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHX
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewProperties
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceMultiviewPropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingProperties
         Graphics.Vulkan.Types.Struct.VkPhysicalDevicePointClippingPropertiesKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProperties2KHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryFeatures
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceProtectedMemoryProperties
         Graphics.Vulkan.Types.Struct.VkPhysicalDevicePushDescriptorPropertiesKHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSampleLocationsPropertiesEXT
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeatures
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceShaderDrawParameterFeatures
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseImageFormatInfo2KHR
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSparseProperties
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSubgroupProperties
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceSurfaceInfo2KHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeatures
         Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVariablePointerFeaturesKHR
+        Graphics.Vulkan.Types.Struct.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
         Graphics.Vulkan.Types.Struct.VkPipelineCacheCreateInfo
         Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAdvancedStateCreateInfoEXT
         Graphics.Vulkan.Types.Struct.VkPipelineColorBlendAttachmentState
@@ -511,8 +605,10 @@
         Graphics.Vulkan.Types.Struct.VkPipelineRasterizationStateRasterizationOrderAMD
         Graphics.Vulkan.Types.Struct.VkPipelineSampleLocationsStateCreateInfoEXT
         Graphics.Vulkan.Types.Struct.VkPipelineShaderStageCreateInfo
+        Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfo
         Graphics.Vulkan.Types.Struct.VkPipelineTessellationDomainOriginStateCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkPipelineTessellationStateCreateInfo
+        Graphics.Vulkan.Types.Struct.VkPipelineVertexInputDivisorStateCreateInfoEXT
         Graphics.Vulkan.Types.Struct.VkPipelineVertexInputStateCreateInfo
         Graphics.Vulkan.Types.Struct.VkPipelineViewportStateCreateInfo
         Graphics.Vulkan.Types.Struct.VkPipelineViewportSwizzleStateCreateInfoNV
@@ -522,24 +618,31 @@
         Graphics.Vulkan.Types.Struct.VkPresentRegionsKHR
         Graphics.Vulkan.Types.Struct.VkPresentTimeGOOGLE
         Graphics.Vulkan.Types.Struct.VkPresentTimesInfoGOOGLE
+        Graphics.Vulkan.Types.Struct.VkProtectedSubmitInfo
         Graphics.Vulkan.Types.Struct.VkPushConstantRange
         Graphics.Vulkan.Types.Struct.VkQueryPoolCreateInfo
         Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties
+        Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2
         Graphics.Vulkan.Types.Struct.VkQueueFamilyProperties2KHR
         Graphics.Vulkan.Types.Struct.VkRect2D
         Graphics.Vulkan.Types.Struct.VkRectLayerKHR
         Graphics.Vulkan.Types.Struct.VkRefreshCycleDurationGOOGLE
         Graphics.Vulkan.Types.Struct.VkRenderPassBeginInfo
         Graphics.Vulkan.Types.Struct.VkRenderPassCreateInfo
+        Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfo
         Graphics.Vulkan.Types.Struct.VkRenderPassInputAttachmentAspectCreateInfoKHR
-        Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHX
+        Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfo
+        Graphics.Vulkan.Types.Struct.VkRenderPassMultiviewCreateInfoKHR
         Graphics.Vulkan.Types.Struct.VkRenderPassSampleLocationsBeginInfoEXT
         Graphics.Vulkan.Types.Struct.VkSampleLocationEXT
         Graphics.Vulkan.Types.Struct.VkSampleLocationsInfoEXT
         Graphics.Vulkan.Types.Struct.VkSamplerCreateInfo
         Graphics.Vulkan.Types.Struct.VkSamplerReductionModeCreateInfoEXT
+        Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfo
         Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionCreateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatProperties
         Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionImageFormatPropertiesKHR
+        Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfo
         Graphics.Vulkan.Types.Struct.VkSamplerYcbcrConversionInfoKHR
         Graphics.Vulkan.Types.Struct.VkSemaphoreCreateInfo
         Graphics.Vulkan.Types.Struct.VkSemaphoreGetFdInfoKHR
@@ -550,10 +653,12 @@
         Graphics.Vulkan.Types.Struct.VkSharedPresentSurfaceCapabilitiesKHR
         Graphics.Vulkan.Types.Struct.VkSparseBufferMemoryBindInfo
         Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties
+        Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2
         Graphics.Vulkan.Types.Struct.VkSparseImageFormatProperties2KHR
         Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBind
         Graphics.Vulkan.Types.Struct.VkSparseImageMemoryBindInfo
         Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements
+        Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2
         Graphics.Vulkan.Types.Struct.VkSparseImageMemoryRequirements2KHR
         Graphics.Vulkan.Types.Struct.VkSparseImageOpaqueMemoryBindInfo
         Graphics.Vulkan.Types.Struct.VkSparseMemoryBind
@@ -577,17 +682,24 @@
         Graphics.Vulkan.Types.Struct.VkValidationFlagsEXT
         Graphics.Vulkan.Types.Struct.VkVertexInputAttributeDescription
         Graphics.Vulkan.Types.Struct.VkVertexInputBindingDescription
+        Graphics.Vulkan.Types.Struct.VkVertexInputBindingDivisorDescriptionEXT
         Graphics.Vulkan.Types.Struct.VkViewport
         Graphics.Vulkan.Types.Struct.VkViewportSwizzleNV
         Graphics.Vulkan.Types.Struct.VkViewportWScalingNV
         Graphics.Vulkan.Types.Struct.VkWriteDescriptorSet
         Graphics.Vulkan.Types.Struct.VkXYColorEXT
-        Graphics.Vulkan.Types.StructMembers
     if flag(usePlatformAndroidKhr)
       cpp-options: -DVK_USE_PLATFORM_ANDROID_KHR
       exposed-modules:
+        Graphics.Vulkan.Ext.VK_ANDROID_external_memory_android_hardware_buffer
         Graphics.Vulkan.Ext.VK_KHR_android_surface
+        Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferFormatPropertiesANDROID
+        Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferPropertiesANDROID
+        Graphics.Vulkan.Types.Struct.VkAndroidHardwareBufferUsageANDROID
         Graphics.Vulkan.Types.Struct.VkAndroidSurfaceCreateInfoKHR
+        Graphics.Vulkan.Types.Struct.VkExternalFormatANDROID
+        Graphics.Vulkan.Types.Struct.VkImportAndroidHardwareBufferInfoANDROID
+        Graphics.Vulkan.Types.Struct.VkMemoryGetAndroidHardwareBufferInfoANDROID
 
     if flag(usePlatformIosMvk)
       cpp-options: -DVK_USE_PLATFORM_IOS_MVK
