packages feed

vulkan-api 1.1.3.0 → 1.1.3.1

raw patch · 14 files changed

+386/−1285 lines, 14 files

Files

cbits/vulkan_loader.c view
@@ -12,7 +12,7 @@ #else   #include <dlfcn.h>   #if defined(__APPLE__) || defined(darwin_HOST_OS)-    #define _vk_dlopen() dlopen("libMoltenVK.dylib", RTLD_LAZY | RTLD_LOCAL)+    #define _vk_dlopen() dlopen("libvulkan.1.dylib", RTLD_LAZY | RTLD_LOCAL)   #else     #define _vk_dlopen() dlopen("libvulkan.so", RTLD_LAZY | RTLD_LOCAL)   #endif
src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc view
@@ -258,63 +258,33 @@         fieldOffset = #{offset VkClearColorValue, float32}  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "float32" idx VkClearColorValue) =>-         CanReadFieldArray "float32" idx VkClearColorValue-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "float32" 0 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "float32" 1 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "float32" 2 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "float32" 3 VkClearColorValue #-}+         CanReadFieldArray "float32" VkClearColorValue where         type FieldArrayLength "float32" VkClearColorValue = 4          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 4 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkClearColorValue, float32} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "float32" idx VkClearColorValue) =>-         CanWriteFieldArray "float32" idx VkClearColorValue-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "float32" 0 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "float32" 1 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "float32" 2 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "float32" 3 VkClearColorValue #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "float32" VkClearColorValue where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkClearColorValue, float32} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-} HasField "int32" VkClearColorValue          where@@ -331,63 +301,33 @@         fieldOffset = #{offset VkClearColorValue, int32}  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "int32" idx VkClearColorValue) =>-         CanReadFieldArray "int32" idx VkClearColorValue-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "int32" 0 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "int32" 1 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "int32" 2 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "int32" 3 VkClearColorValue #-}+         CanReadFieldArray "int32" VkClearColorValue where         type FieldArrayLength "int32" VkClearColorValue = 4          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 4 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: Int32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkClearColorValue, int32} +-                 sizeOf (undefined :: Int32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Int32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "int32" idx VkClearColorValue) =>-         CanWriteFieldArray "int32" idx VkClearColorValue-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "int32" 0 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "int32" 1 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "int32" 2 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "int32" 3 VkClearColorValue #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "int32" VkClearColorValue where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkClearColorValue, int32} +-                 sizeOf (undefined :: Int32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Int32) * i)  instance {-# OVERLAPPING #-} HasField "uint32" VkClearColorValue          where@@ -404,63 +344,33 @@         fieldOffset = #{offset VkClearColorValue, uint32}  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "uint32" idx VkClearColorValue) =>-         CanReadFieldArray "uint32" idx VkClearColorValue-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "uint32" 0 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "uint32" 1 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "uint32" 2 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "uint32" 3 VkClearColorValue #-}+         CanReadFieldArray "uint32" VkClearColorValue where         type FieldArrayLength "uint32" VkClearColorValue = 4          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 4 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: Word32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkClearColorValue, uint32} +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "uint32" idx VkClearColorValue) =>-         CanWriteFieldArray "uint32" idx VkClearColorValue-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "uint32" 0 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "uint32" 1 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "uint32" 2 VkClearColorValue #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "uint32" 3 VkClearColorValue #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "uint32" VkClearColorValue where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkClearColorValue, uint32} +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word32) * i)  instance Show VkClearColorValue where         showsPrec d x
src-gen/Graphics/Vulkan/Types/Struct/Debug.hsc view
@@ -210,65 +210,33 @@           = #{offset VkDebugMarkerMarkerInfoEXT, color}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "color" idx VkDebugMarkerMarkerInfoEXT) =>-         CanReadFieldArray "color" idx VkDebugMarkerMarkerInfoEXT-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "color" 0 VkDebugMarkerMarkerInfoEXT #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "color" 1 VkDebugMarkerMarkerInfoEXT #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "color" 2 VkDebugMarkerMarkerInfoEXT #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "color" 3 VkDebugMarkerMarkerInfoEXT #-}+         CanReadFieldArray "color" VkDebugMarkerMarkerInfoEXT where         type FieldArrayLength "color" VkDebugMarkerMarkerInfoEXT = 4          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 4 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkDebugMarkerMarkerInfoEXT, color} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "color" idx VkDebugMarkerMarkerInfoEXT) =>-         CanWriteFieldArray "color" idx VkDebugMarkerMarkerInfoEXT-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "color" 0 VkDebugMarkerMarkerInfoEXT #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "color" 1 VkDebugMarkerMarkerInfoEXT #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "color" 2 VkDebugMarkerMarkerInfoEXT #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "color" 3 VkDebugMarkerMarkerInfoEXT #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "color" VkDebugMarkerMarkerInfoEXT where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkDebugMarkerMarkerInfoEXT, color} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance Show VkDebugMarkerMarkerInfoEXT where         showsPrec d x
src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsLabelEXT.hsc view
@@ -189,63 +189,33 @@         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 #-}+         CanReadFieldArray "color" VkDebugUtilsLabelEXT where         type FieldArrayLength "color" VkDebugUtilsLabelEXT = 4          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 4 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkDebugUtilsLabelEXT, color} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  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+         CanWriteFieldArray "color" VkDebugUtilsLabelEXT where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkDebugUtilsLabelEXT, color} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance Show VkDebugUtilsLabelEXT where         showsPrec d x
src-gen/Graphics/Vulkan/Types/Struct/Device.hsc view
@@ -2030,31 +2030,8 @@           = #{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "presentMask" idx-            VkDeviceGroupPresentCapabilitiesKHR) =>-         CanReadFieldArray "presentMask" idx-           VkDeviceGroupPresentCapabilitiesKHR+         CanReadFieldArray "presentMask" 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@@ -2062,58 +2039,29 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: Word32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "presentMask" idx-            VkDeviceGroupPresentCapabilitiesKHR) =>-         CanWriteFieldArray "presentMask" idx+         CanWriteFieldArray "presentMask"            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+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}          HasField "modes" VkDeviceGroupPresentCapabilitiesKHR where
src-gen/Graphics/Vulkan/Types/Struct/ExtensionProperties.hsc view
@@ -93,66 +93,34 @@           = #{offset VkExtensionProperties, extensionName}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "extensionName" idx VkExtensionProperties) =>-         CanReadFieldArray "extensionName" idx VkExtensionProperties-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "extensionName" 0 VkExtensionProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "extensionName" 1 VkExtensionProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "extensionName" 2 VkExtensionProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "extensionName" 3 VkExtensionProperties #-}+         CanReadFieldArray "extensionName" VkExtensionProperties where         type FieldArrayLength "extensionName" VkExtensionProperties =              VK_MAX_EXTENSION_NAME_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_EXTENSION_NAME_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: CChar) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkExtensionProperties, extensionName} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "extensionName" idx VkExtensionProperties) =>-         CanWriteFieldArray "extensionName" idx VkExtensionProperties-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "extensionName" 0 VkExtensionProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "extensionName" 1 VkExtensionProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "extensionName" 2 VkExtensionProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "extensionName" 3 VkExtensionProperties #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "extensionName" VkExtensionProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkExtensionProperties, extensionName} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance {-# OVERLAPPING #-}          HasField "specVersion" VkExtensionProperties where
src-gen/Graphics/Vulkan/Types/Struct/Image.hsc view
@@ -161,51 +161,33 @@         fieldOffset = #{offset VkImageBlit, srcOffsets}  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "srcOffsets" idx VkImageBlit) =>-         CanReadFieldArray "srcOffsets" idx VkImageBlit-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "srcOffsets" 0 VkImageBlit #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "srcOffsets" 1 VkImageBlit #-}+         CanReadFieldArray "srcOffsets" VkImageBlit where         type FieldArrayLength "srcOffsets" VkImageBlit = 2          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 2 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: VkOffset3D) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkImageBlit, srcOffsets} +-                 sizeOf (undefined :: VkOffset3D) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: VkOffset3D) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "srcOffsets" idx VkImageBlit) =>-         CanWriteFieldArray "srcOffsets" idx VkImageBlit-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "srcOffsets" 0 VkImageBlit #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "srcOffsets" 1 VkImageBlit #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "srcOffsets" VkImageBlit where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkImageBlit, srcOffsets} +-                 sizeOf (undefined :: VkOffset3D) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: VkOffset3D) * i)  instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageBlit          where@@ -254,51 +236,33 @@         fieldOffset = #{offset VkImageBlit, dstOffsets}  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "dstOffsets" idx VkImageBlit) =>-         CanReadFieldArray "dstOffsets" idx VkImageBlit-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "dstOffsets" 0 VkImageBlit #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "dstOffsets" 1 VkImageBlit #-}+         CanReadFieldArray "dstOffsets" VkImageBlit where         type FieldArrayLength "dstOffsets" VkImageBlit = 2          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 2 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: VkOffset3D) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkImageBlit, dstOffsets} +-                 sizeOf (undefined :: VkOffset3D) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: VkOffset3D) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "dstOffsets" idx VkImageBlit) =>-         CanWriteFieldArray "dstOffsets" idx VkImageBlit-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "dstOffsets" 0 VkImageBlit #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "dstOffsets" 1 VkImageBlit #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "dstOffsets" VkImageBlit where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkImageBlit, dstOffsets} +-                 sizeOf (undefined :: VkOffset3D) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: VkOffset3D) * i)  instance Show VkImageBlit where         showsPrec d x
src-gen/Graphics/Vulkan/Types/Struct/LayerProperties.hsc view
@@ -96,64 +96,34 @@         fieldOffset = #{offset VkLayerProperties, layerName}  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "layerName" idx VkLayerProperties) =>-         CanReadFieldArray "layerName" idx VkLayerProperties-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "layerName" 0 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "layerName" 1 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "layerName" 2 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "layerName" 3 VkLayerProperties #-}+         CanReadFieldArray "layerName" VkLayerProperties where         type FieldArrayLength "layerName" VkLayerProperties =              VK_MAX_EXTENSION_NAME_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_EXTENSION_NAME_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: CChar) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkLayerProperties, layerName} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx, IndexInBounds "layerName" idx VkLayerProperties) =>-         CanWriteFieldArray "layerName" idx VkLayerProperties-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "layerName" 0 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "layerName" 1 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "layerName" 2 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "layerName" 3 VkLayerProperties #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "layerName" VkLayerProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkLayerProperties, layerName} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance {-# OVERLAPPING #-}          HasField "specVersion" VkLayerProperties where@@ -235,66 +205,34 @@         fieldOffset = #{offset VkLayerProperties, description}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "description" idx VkLayerProperties) =>-         CanReadFieldArray "description" idx VkLayerProperties-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "description" 0 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "description" 1 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "description" 2 VkLayerProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "description" 3 VkLayerProperties #-}+         CanReadFieldArray "description" VkLayerProperties where         type FieldArrayLength "description" VkLayerProperties =              VK_MAX_DESCRIPTION_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_DESCRIPTION_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: CChar) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkLayerProperties, description} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  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+         CanWriteFieldArray "description" VkLayerProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkLayerProperties, description} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance Show VkLayerProperties where         showsPrec d x
src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc view
@@ -6346,31 +6346,8 @@           = #{offset VkPhysicalDeviceGroupProperties, physicalDevices}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "physicalDevices" idx-            VkPhysicalDeviceGroupProperties) =>-         CanReadFieldArray "physicalDevices" idx-           VkPhysicalDeviceGroupProperties+         CanReadFieldArray "physicalDevices" 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@@ -6378,58 +6355,29 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: VkPhysicalDevice) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceGroupProperties, physicalDevices}-                 +-                 sizeOf (undefined :: VkPhysicalDevice) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: VkPhysicalDevice) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "physicalDevices" idx-            VkPhysicalDeviceGroupProperties) =>-         CanWriteFieldArray "physicalDevices" idx+         CanWriteFieldArray "physicalDevices"            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+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceGroupProperties, physicalDevices}-                 +-                 sizeOf (undefined :: VkPhysicalDevice) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: VkPhysicalDevice) * i)  instance {-# OVERLAPPING #-}          HasField "subsetAllocation" VkPhysicalDeviceGroupProperties where@@ -6657,66 +6605,34 @@           = #{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 #-}+         CanReadFieldArray "deviceUUID" VkPhysicalDeviceIDProperties where         type FieldArrayLength "deviceUUID" VkPhysicalDeviceIDProperties =              VK_UUID_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_UUID_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: Word8) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceIDProperties, deviceUUID} +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word8) * i)  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+         CanWriteFieldArray "deviceUUID" VkPhysicalDeviceIDProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceIDProperties, deviceUUID} +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word8) * i)  instance {-# OVERLAPPING #-}          HasField "driverUUID" VkPhysicalDeviceIDProperties where@@ -6735,66 +6651,34 @@           = #{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 #-}+         CanReadFieldArray "driverUUID" VkPhysicalDeviceIDProperties where         type FieldArrayLength "driverUUID" VkPhysicalDeviceIDProperties =              VK_UUID_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_UUID_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: Word8) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceIDProperties, driverUUID} +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word8) * i)  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+         CanWriteFieldArray "driverUUID" VkPhysicalDeviceIDProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceIDProperties, driverUUID} +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word8) * i)  instance {-# OVERLAPPING #-}          HasField "deviceLUID" VkPhysicalDeviceIDProperties where@@ -6813,66 +6697,34 @@           = #{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 #-}+         CanReadFieldArray "deviceLUID" VkPhysicalDeviceIDProperties where         type FieldArrayLength "deviceLUID" VkPhysicalDeviceIDProperties =              VK_LUID_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_LUID_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: Word8) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceIDProperties, deviceLUID} +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word8) * i)  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+         CanWriteFieldArray "deviceLUID" VkPhysicalDeviceIDProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceIDProperties, deviceLUID} +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: Word8) * i)  instance {-# OVERLAPPING #-}          HasField "deviceNodeMask" VkPhysicalDeviceIDProperties where@@ -9727,26 +9579,8 @@           = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "maxComputeWorkGroupCount" idx-            VkPhysicalDeviceLimits) =>-         CanReadFieldArray "maxComputeWorkGroupCount" idx-           VkPhysicalDeviceLimits+         CanReadFieldArray "maxComputeWorkGroupCount" 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@@ -9754,53 +9588,29 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = 3 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: Word32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "maxComputeWorkGroupCount" idx-            VkPhysicalDeviceLimits) =>-         CanWriteFieldArray "maxComputeWorkGroupCount" idx+         CanWriteFieldArray "maxComputeWorkGroupCount"            VkPhysicalDeviceLimits          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "maxComputeWorkGroupCount" 0-                         VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "maxComputeWorkGroupCount" 1-                         VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "maxComputeWorkGroupCount" 2-                         VkPhysicalDeviceLimits-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}          HasField "maxComputeWorkGroupInvocations" VkPhysicalDeviceLimits@@ -9866,26 +9676,8 @@           = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "maxComputeWorkGroupSize" idx-            VkPhysicalDeviceLimits) =>-         CanReadFieldArray "maxComputeWorkGroupSize" idx-           VkPhysicalDeviceLimits+         CanReadFieldArray "maxComputeWorkGroupSize" 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@@ -9893,53 +9685,28 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = 3 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: Word32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "maxComputeWorkGroupSize" idx-            VkPhysicalDeviceLimits) =>-         CanWriteFieldArray "maxComputeWorkGroupSize" idx-           VkPhysicalDeviceLimits+         CanWriteFieldArray "maxComputeWorkGroupSize" VkPhysicalDeviceLimits          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "maxComputeWorkGroupSize" 0-                         VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "maxComputeWorkGroupSize" 1-                         VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "maxComputeWorkGroupSize" 2-                         VkPhysicalDeviceLimits-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}          HasField "subPixelPrecisionBits" VkPhysicalDeviceLimits where@@ -10241,19 +10008,8 @@           = #{offset VkPhysicalDeviceLimits, maxViewportDimensions}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "maxViewportDimensions" idx-            VkPhysicalDeviceLimits) =>-         CanReadFieldArray "maxViewportDimensions" idx-           VkPhysicalDeviceLimits+         CanReadFieldArray "maxViewportDimensions" VkPhysicalDeviceLimits          where-        {-# SPECIALISE instance-                       CanReadFieldArray "maxViewportDimensions" 0 VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "maxViewportDimensions" 1 VkPhysicalDeviceLimits-                       #-}         type FieldArrayLength "maxViewportDimensions"                VkPhysicalDeviceLimits              = 2@@ -10261,46 +10017,28 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = 2 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: Word32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceLimits, maxViewportDimensions}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "maxViewportDimensions" idx-            VkPhysicalDeviceLimits) =>-         CanWriteFieldArray "maxViewportDimensions" idx-           VkPhysicalDeviceLimits+         CanWriteFieldArray "maxViewportDimensions" VkPhysicalDeviceLimits          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "maxViewportDimensions" 0 VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "maxViewportDimensions" 1 VkPhysicalDeviceLimits-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceLimits, maxViewportDimensions}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}          HasField "viewportBoundsRange" VkPhysicalDeviceLimits where@@ -10321,61 +10059,36 @@           = #{offset VkPhysicalDeviceLimits, viewportBoundsRange}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "viewportBoundsRange" idx VkPhysicalDeviceLimits) =>-         CanReadFieldArray "viewportBoundsRange" idx VkPhysicalDeviceLimits+         CanReadFieldArray "viewportBoundsRange" 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+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceLimits, viewportBoundsRange}-                 +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "viewportBoundsRange" idx VkPhysicalDeviceLimits) =>-         CanWriteFieldArray "viewportBoundsRange" idx VkPhysicalDeviceLimits+         CanWriteFieldArray "viewportBoundsRange" VkPhysicalDeviceLimits          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "viewportBoundsRange" 0 VkPhysicalDeviceLimits-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "viewportBoundsRange" 1 VkPhysicalDeviceLimits-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceLimits, viewportBoundsRange}-                 +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}          HasField "viewportSubPixelBits" VkPhysicalDeviceLimits where@@ -11639,53 +11352,33 @@           = #{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 #-}+         CanReadFieldArray "pointSizeRange" VkPhysicalDeviceLimits where         type FieldArrayLength "pointSizeRange" VkPhysicalDeviceLimits = 2          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 2 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceLimits, pointSizeRange} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  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+         CanWriteFieldArray "pointSizeRange" VkPhysicalDeviceLimits where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceLimits, pointSizeRange} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}          HasField "lineWidthRange" VkPhysicalDeviceLimits where@@ -11704,53 +11397,33 @@           = #{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 #-}+         CanReadFieldArray "lineWidthRange" VkPhysicalDeviceLimits where         type FieldArrayLength "lineWidthRange" VkPhysicalDeviceLimits = 2          {-# INLINE fieldArrayLength #-}         fieldArrayLength = 2 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceLimits, lineWidthRange} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  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+         CanWriteFieldArray "lineWidthRange" VkPhysicalDeviceLimits where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceLimits, lineWidthRange} +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}          HasField "pointSizeGranularity" VkPhysicalDeviceLimits where@@ -13785,27 +13458,8 @@           = #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "memoryTypes" idx-            VkPhysicalDeviceMemoryProperties) =>-         CanReadFieldArray "memoryTypes" idx-           VkPhysicalDeviceMemoryProperties+         CanReadFieldArray "memoryTypes" VkPhysicalDeviceMemoryProperties          where-        {-# SPECIALISE instance-                       CanReadFieldArray "memoryTypes" 0 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "memoryTypes" 1 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "memoryTypes" 2 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "memoryTypes" 3 VkPhysicalDeviceMemoryProperties-                       #-}         type FieldArrayLength "memoryTypes"                VkPhysicalDeviceMemoryProperties              = VK_MAX_MEMORY_TYPES@@ -13813,54 +13467,28 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_MEMORY_TYPES -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: VkMemoryType) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceMemoryProperties, memoryTypes}-                 +-                 sizeOf (undefined :: VkMemoryType) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: VkMemoryType) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "memoryTypes" idx-            VkPhysicalDeviceMemoryProperties) =>-         CanWriteFieldArray "memoryTypes" idx-           VkPhysicalDeviceMemoryProperties+         CanWriteFieldArray "memoryTypes" VkPhysicalDeviceMemoryProperties          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "memoryTypes" 0 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "memoryTypes" 1 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "memoryTypes" 2 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "memoryTypes" 3 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceMemoryProperties, memoryTypes}-                 +-                 sizeOf (undefined :: VkMemoryType) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: VkMemoryType) * i)  instance {-# OVERLAPPING #-}          HasField "memoryHeapCount" VkPhysicalDeviceMemoryProperties where@@ -13921,27 +13549,8 @@           = #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "memoryHeaps" idx-            VkPhysicalDeviceMemoryProperties) =>-         CanReadFieldArray "memoryHeaps" idx-           VkPhysicalDeviceMemoryProperties+         CanReadFieldArray "memoryHeaps" VkPhysicalDeviceMemoryProperties          where-        {-# SPECIALISE instance-                       CanReadFieldArray "memoryHeaps" 0 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "memoryHeaps" 1 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "memoryHeaps" 2 VkPhysicalDeviceMemoryProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "memoryHeaps" 3 VkPhysicalDeviceMemoryProperties-                       #-}         type FieldArrayLength "memoryHeaps"                VkPhysicalDeviceMemoryProperties              = VK_MAX_MEMORY_HEAPS@@ -13949,54 +13558,28 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_MEMORY_HEAPS -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: VkMemoryHeap) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}-                 +-                 sizeOf (undefined :: VkMemoryHeap) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: VkMemoryHeap) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "memoryHeaps" idx-            VkPhysicalDeviceMemoryProperties) =>-         CanWriteFieldArray "memoryHeaps" idx-           VkPhysicalDeviceMemoryProperties+         CanWriteFieldArray "memoryHeaps" 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+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}-                 +-                 sizeOf (undefined :: VkMemoryHeap) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: VkMemoryHeap) * i)  instance Show VkPhysicalDeviceMemoryProperties where         showsPrec d x@@ -15432,66 +15015,34 @@           = #{offset VkPhysicalDeviceProperties, deviceName}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "deviceName" idx VkPhysicalDeviceProperties) =>-         CanReadFieldArray "deviceName" idx VkPhysicalDeviceProperties-         where-        {-# SPECIALISE instance-                       CanReadFieldArray "deviceName" 0 VkPhysicalDeviceProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "deviceName" 1 VkPhysicalDeviceProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "deviceName" 2 VkPhysicalDeviceProperties #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "deviceName" 3 VkPhysicalDeviceProperties #-}+         CanReadFieldArray "deviceName" VkPhysicalDeviceProperties where         type FieldArrayLength "deviceName" VkPhysicalDeviceProperties =              VK_MAX_PHYSICAL_DEVICE_NAME_SIZE          {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_MAX_PHYSICAL_DEVICE_NAME_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      sizeOf (undefined :: CChar) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceProperties, deviceName} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "deviceName" idx VkPhysicalDeviceProperties) =>-         CanWriteFieldArray "deviceName" idx VkPhysicalDeviceProperties-         where-        {-# SPECIALISE instance-                       CanWriteFieldArray "deviceName" 0 VkPhysicalDeviceProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "deviceName" 1 VkPhysicalDeviceProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "deviceName" 2 VkPhysicalDeviceProperties #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "deviceName" 3 VkPhysicalDeviceProperties #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+         CanWriteFieldArray "deviceName" VkPhysicalDeviceProperties where+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceProperties, deviceName} +-                 sizeOf (undefined :: CChar) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 sizeOf (undefined :: CChar) * i)  instance {-# OVERLAPPING #-}          HasField "pipelineCacheUUID" VkPhysicalDeviceProperties where@@ -15512,27 +15063,8 @@           = #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "pipelineCacheUUID" idx-            VkPhysicalDeviceProperties) =>-         CanReadFieldArray "pipelineCacheUUID" idx-           VkPhysicalDeviceProperties+         CanReadFieldArray "pipelineCacheUUID" VkPhysicalDeviceProperties          where-        {-# SPECIALISE instance-                       CanReadFieldArray "pipelineCacheUUID" 0 VkPhysicalDeviceProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "pipelineCacheUUID" 1 VkPhysicalDeviceProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "pipelineCacheUUID" 2 VkPhysicalDeviceProperties-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "pipelineCacheUUID" 3 VkPhysicalDeviceProperties-                       #-}         type FieldArrayLength "pipelineCacheUUID"                VkPhysicalDeviceProperties              = VK_UUID_SIZE@@ -15540,54 +15072,28 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = VK_UUID_SIZE -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: Word8) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceProperties, pipelineCacheUUID}-                 +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word8) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "pipelineCacheUUID" idx-            VkPhysicalDeviceProperties) =>-         CanWriteFieldArray "pipelineCacheUUID" idx-           VkPhysicalDeviceProperties+         CanWriteFieldArray "pipelineCacheUUID" VkPhysicalDeviceProperties          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "pipelineCacheUUID" 0 VkPhysicalDeviceProperties-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "pipelineCacheUUID" 1 VkPhysicalDeviceProperties-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "pipelineCacheUUID" 2 VkPhysicalDeviceProperties-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "pipelineCacheUUID" 3 VkPhysicalDeviceProperties-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceProperties, pipelineCacheUUID}-                 +-                 sizeOf (undefined :: Word8) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word8) * i)  instance {-# OVERLAPPING #-}          HasField "limits" VkPhysicalDeviceProperties where@@ -16772,21 +16278,9 @@           = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "sampleLocationCoordinateRange" idx-            VkPhysicalDeviceSampleLocationsPropertiesEXT) =>-         CanReadFieldArray "sampleLocationCoordinateRange" idx+         CanReadFieldArray "sampleLocationCoordinateRange"            VkPhysicalDeviceSampleLocationsPropertiesEXT          where-        {-# SPECIALISE instance-                       CanReadFieldArray "sampleLocationCoordinateRange" 0-                         VkPhysicalDeviceSampleLocationsPropertiesEXT-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "sampleLocationCoordinateRange" 1-                         VkPhysicalDeviceSampleLocationsPropertiesEXT-                       #-}         type FieldArrayLength "sampleLocationCoordinateRange"                VkPhysicalDeviceSampleLocationsPropertiesEXT              = 2@@ -16794,48 +16288,29 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = 2 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}-                 +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "sampleLocationCoordinateRange" idx-            VkPhysicalDeviceSampleLocationsPropertiesEXT) =>-         CanWriteFieldArray "sampleLocationCoordinateRange" idx+         CanWriteFieldArray "sampleLocationCoordinateRange"            VkPhysicalDeviceSampleLocationsPropertiesEXT          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "sampleLocationCoordinateRange" 0-                         VkPhysicalDeviceSampleLocationsPropertiesEXT-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "sampleLocationCoordinateRange" 1-                         VkPhysicalDeviceSampleLocationsPropertiesEXT-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}-                 +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}          HasField "sampleLocationSubPixelBits"
src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc view
@@ -2355,31 +2355,9 @@           = #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "blendConstants" idx-            VkPipelineColorBlendStateCreateInfo) =>-         CanReadFieldArray "blendConstants" idx+         CanReadFieldArray "blendConstants"            VkPipelineColorBlendStateCreateInfo          where-        {-# SPECIALISE instance-                       CanReadFieldArray "blendConstants" 0-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "blendConstants" 1-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "blendConstants" 2-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "blendConstants" 3-                         VkPipelineColorBlendStateCreateInfo-                       #-}         type FieldArrayLength "blendConstants"                VkPipelineColorBlendStateCreateInfo              = 4@@ -2387,58 +2365,29 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = 4 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: #{type float}) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkPipelineColorBlendStateCreateInfo, blendConstants}-                 +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: #{type float}) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "blendConstants" idx-            VkPipelineColorBlendStateCreateInfo) =>-         CanWriteFieldArray "blendConstants" idx+         CanWriteFieldArray "blendConstants"            VkPipelineColorBlendStateCreateInfo          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "blendConstants" 0-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "blendConstants" 1-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "blendConstants" 2-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "blendConstants" 3-                         VkPipelineColorBlendStateCreateInfo-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkPipelineColorBlendStateCreateInfo, blendConstants}-                 +-                 sizeOf (undefined :: #{type float}) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: #{type float}) * i)  instance Show VkPipelineColorBlendStateCreateInfo where         showsPrec d x
src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc view
@@ -1016,26 +1016,8 @@           = #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "computeWorkGroupSize" idx-            VkShaderStatisticsInfoAMD) =>-         CanReadFieldArray "computeWorkGroupSize" idx-           VkShaderStatisticsInfoAMD+         CanReadFieldArray "computeWorkGroupSize" VkShaderStatisticsInfoAMD          where-        {-# SPECIALISE instance-                       CanReadFieldArray "computeWorkGroupSize" 0-                         VkShaderStatisticsInfoAMD-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "computeWorkGroupSize" 1-                         VkShaderStatisticsInfoAMD-                       #-}--        {-# SPECIALISE instance-                       CanReadFieldArray "computeWorkGroupSize" 2-                         VkShaderStatisticsInfoAMD-                       #-}         type FieldArrayLength "computeWorkGroupSize"                VkShaderStatisticsInfoAMD              = 3@@ -1043,53 +1025,28 @@         {-# INLINE fieldArrayLength #-}         fieldArrayLength = 3 -        {-# INLINE getFieldArray #-}-        getFieldArray = f+        {-# INLINE getFieldArrayUnsafe #-}+        getFieldArrayUnsafe i = 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+                      + sizeOf (undefined :: Word32) * i -        {-# INLINE readFieldArray #-}-        readFieldArray p+        {-# INLINE readFieldArrayUnsafe #-}+        readFieldArrayUnsafe i p           = peekByteOff p               (#{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance {-# OVERLAPPING #-}-         (KnownNat idx,-          IndexInBounds "computeWorkGroupSize" idx-            VkShaderStatisticsInfoAMD) =>-         CanWriteFieldArray "computeWorkGroupSize" idx-           VkShaderStatisticsInfoAMD+         CanWriteFieldArray "computeWorkGroupSize" VkShaderStatisticsInfoAMD          where-        {-# SPECIALISE instance-                       CanWriteFieldArray "computeWorkGroupSize" 0-                         VkShaderStatisticsInfoAMD-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "computeWorkGroupSize" 1-                         VkShaderStatisticsInfoAMD-                       #-}--        {-# SPECIALISE instance-                       CanWriteFieldArray "computeWorkGroupSize" 2-                         VkShaderStatisticsInfoAMD-                       #-}--        {-# INLINE writeFieldArray #-}-        writeFieldArray p+        {-# INLINE writeFieldArrayUnsafe #-}+        writeFieldArrayUnsafe i p           = pokeByteOff p               (#{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}-                 +-                 sizeOf (undefined :: Word32) *-                   fromInteger (natVal' (proxy## :: Proxy## idx))) -- ' closing tick for hsc2hs+                 + sizeOf (undefined :: Word32) * i)  instance Show VkShaderStatisticsInfoAMD where         showsPrec d x
src/Graphics/Vulkan/Marshal.hs view
@@ -33,6 +33,7 @@     -- * Type-indexed access to struct members   , HasField (..), CanReadField (..), CanWriteField (..)   , CanReadFieldArray (..), CanWriteFieldArray (..)+  , getFieldArray, readFieldArray, writeFieldArray   , IsFieldArray, IndexInBounds     -- * Re-exported functions from 'Foreign.ForeignPtr'   , mallocForeignPtr, withForeignPtr, addForeignPtrFinalizer@@ -63,6 +64,7 @@ import           Foreign.Marshal.Utils            (fillBytes) import           Foreign.Ptr                      (FunPtr, nullPtr, plusPtr) import           Foreign.Storable                 (Storable (sizeOf))+import           GHC.Exts                         (Proxy#, proxy#) import           GHC.Generics                     (Generic) import           GHC.Ptr                          (Ptr (..)) import           GHC.TypeLits@@ -287,20 +289,44 @@   writeField :: Ptr a -> FieldType fname a -> IO ()  class ( HasField fname a-      , IndexInBounds fname idx a       , IsFieldArray fname a 'True-      ) => CanReadFieldArray (fname :: Symbol) (idx :: Nat) (a :: Type) where+      , KnownNat (FieldArrayLength fname a)+      ) => CanReadFieldArray (fname :: Symbol) (a :: Type) where   -- | Length of an array that is a field of a structure or union   type FieldArrayLength fname a :: Nat   -- | Length of an array that is a field of a structure or union   fieldArrayLength :: Int-  getFieldArray :: a -> FieldType fname a-  readFieldArray :: Ptr a -> IO (FieldType fname a)+  -- | Index an array-type field. No bound checks.+  getFieldArrayUnsafe :: Int -> a -> FieldType fname a+  -- | Read from an array-type field. No bound checks.+  readFieldArrayUnsafe :: Int -> Ptr a -> IO (FieldType fname a) -class CanReadFieldArray fname idx a-      => CanWriteFieldArray (fname :: Symbol) (idx :: Nat) (a :: Type) where-  writeFieldArray :: Ptr a -> FieldType fname a -> IO ()+getFieldArray :: forall fname idx a+               . (CanReadFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)+              => a -> FieldType fname a+getFieldArray = getFieldArrayUnsafe @fname @a+  (fromInteger $ natVal' (proxy# :: Proxy# idx))+{-# INLINE getFieldArray #-} +readFieldArray :: forall fname idx a+                . (CanReadFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)+               => Ptr a -> IO (FieldType fname a)+readFieldArray = readFieldArrayUnsafe @fname @a+  (fromInteger $ natVal' (proxy# :: Proxy# idx))+{-# INLINE readFieldArray #-}++class CanReadFieldArray fname a+      => CanWriteFieldArray (fname :: Symbol) (a :: Type) where+  -- | Write to an array-type field. No bound checks.+  writeFieldArrayUnsafe :: Int -> Ptr a -> FieldType fname a -> IO ()++writeFieldArray :: forall fname idx a+                 . (CanWriteFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)+                => Ptr a -> FieldType fname a -> IO ()+writeFieldArray = writeFieldArrayUnsafe @fname @a+  (fromInteger $ natVal' (proxy# :: Proxy# idx))+{-# INLINE writeFieldArray #-}+ instance {-# OVERLAPPABLE #-}          TypeError (ErrorNoSuchField fname a) => HasField fname a where @@ -316,13 +342,13 @@ instance {-# OVERLAPPABLE #-}          ( HasField fname a          , IsFieldArray fname a 'True-         , IndexInBounds fname idx a          , TypeError (ErrorNotReadableField fname a)-         ) => CanReadFieldArray fname idx a where+         , KnownNat (FieldArrayLength fname a)+         ) => CanReadFieldArray fname a where instance {-# OVERLAPPABLE #-}-         ( CanReadFieldArray fname idx a+         ( CanReadFieldArray fname a          , TypeError (ErrorNotWritableField fname a)-         ) => CanWriteFieldArray fname idx a where+         ) => CanWriteFieldArray fname a where   type IndexInBounds (s :: Symbol) (i :: Nat) (a :: Type)@@ -398,7 +424,7 @@ --   The string pointers should not be used outside the callback. --   It will point to a correct location only as long as the struct is alive. withCStringField :: forall fname a b-                 . ( CanReadFieldArray fname 0 a+                 . ( CanReadFieldArray fname a                    , FieldType fname a ~ CChar                    , VulkanMarshal a                    )@@ -410,7 +436,7 @@  -- | Get pointer to a memory location of the C string field in a structure. unsafeCStringField :: forall fname a-                   . ( CanReadFieldArray fname 0 a+                   . ( CanReadFieldArray fname a                      , FieldType fname a ~ CChar                      , VulkanMarshal a                      )@@ -419,30 +445,30 @@   getStringField :: forall fname a-                . ( CanReadFieldArray fname 0 a+                . ( CanReadFieldArray fname a                   , FieldType fname a ~ CChar                   , VulkanMarshal a                   )                => a -> String getStringField x-    = case takeForce (fieldArrayLength @fname @0 @a)+    = case takeForce (fieldArrayLength @fname @a)          . unsafeDupablePerformIO          $ withCStringField @fname @a x peekCString of         ((), s) -> s  readStringField :: forall fname a-                . ( CanReadFieldArray fname 0 a+                . ( CanReadFieldArray fname a                   , FieldType fname a ~ CChar                   , VulkanMarshal a                   )                => Ptr a -> IO String readStringField px = do-  ((), s) <- takeForce (fieldArrayLength @fname @0 @a)+  ((), s) <- takeForce (fieldArrayLength @fname @a)          <$> peekCString (px `plusPtr` fieldOffset @fname @a)   return s  writeStringField :: forall fname a-                  . ( CanWriteFieldArray fname 0 a+                  . ( CanWriteFieldArray fname a                     , FieldType fname a ~ CChar                     , VulkanMarshal a                     )
src/Graphics/Vulkan/Marshal/Create.hs view
@@ -23,7 +23,8 @@ module Graphics.Vulkan.Marshal.Create     ( CreateVkStruct ()     , createVk, (&*)-    , set, setAt, setVk, setVkRef, setStr, setStrRef, setStrListRef, setListRef+    , set, setAt, setVk, setVkRef, setStr, setStrRef+    , setStrListRef, setStrListCountAndRef, setListRef, setListCountAndRef     , SetOptionalFields (..), HandleRemainingFields (..), HandleRemFields     , unsafeIOCreate     ) where@@ -140,7 +141,7 @@  -- | `writeFieldArray` wrapped into `CreateVkStruct` monad. setAt :: forall fname i x-       . CanWriteFieldArray fname i x+       . ( CanWriteFieldArray fname x, IndexInBounds fname i x, KnownNat i)       => FieldType fname x -> CreateVkStruct x '[fname] () setAt v = CreateVkStruct $ \p -> (,) ([],[]) <$> writeFieldArray @fname @i @x p v @@ -158,7 +159,7 @@  -- | Write a String into a vulkan struct in-place. setStr :: forall fname x-        . ( CanWriteFieldArray fname 0 x+        . ( CanWriteFieldArray fname x           , FieldType fname x ~ CChar           )        => String -> CreateVkStruct x '[fname] ()@@ -198,6 +199,20 @@   aPtr <- newArray v   (,) ([coerce aPtr],[]) <$> writeField @fname @x p aPtr +-- | Equivalent to 'set' on a count field and 'setListRef' on a corresponding list field,+--    where the count is set to the length of the list.+setListCountAndRef :: forall countfname listfname x a+                  . ( CanWriteField countfname x+                    , CanWriteField listfname x+                    , FieldType countfname x ~ Word32+                    , FieldType listfname x ~ Ptr a+                    , Storable a+                    )+                  => [a] -> CreateVkStruct x (Union x '[countfname] '[listfname]) ()+setListCountAndRef list =+  set @countfname (fromIntegral $ length list) &*+  setListRef @listfname list+ -- | Allocate memory for an array of elements, store them, --    and write a pointer to the array into vulkan structure. --@@ -216,6 +231,19 @@   strptrs <- mapM newCString v   aPtr <- newArray strptrs   (,) (coerce aPtr : coerce strptrs,[]) <$> writeField @fname @x p aPtr++-- | Equivalent to 'set' on a count field and 'setStrListRef' on a corresponding list field,+--    where the count is set to the length of the list.+setStrListCountAndRef :: forall countfname listfname x+                      . ( CanWriteField countfname x+                        , CanWriteField listfname x+                        , FieldType countfname x ~ Word32+                        , FieldType listfname x ~ Ptr CString+                        )+                      => [String] -> CreateVkStruct x (Union x '[countfname] '[listfname]) ()+setStrListCountAndRef list =+  set @countfname (fromIntegral $ length list) &*+  setStrListRef @listfname list  -- | Write a pointer to a vulkan structure - member of current structure --    and make sure the member exists as long as this structure exists.
vulkan-api.cabal view
@@ -3,7 +3,7 @@ -- it is autogenerated at genvulkan/src/Write/Cabal.hs -- name:                vulkan-api-version:             1.1.3.0+version:             1.1.3.1 synopsis:            Low-level low-overhead vulkan api bindings description:     Haskell bindings for vulkan api as described in vk.xml.@@ -446,7 +446,7 @@       if os(windows)         extra-libraries: vulkan-1       if os(darwin)-        frameworks:      MoltenVK+        extra-libraries: vulkan       if !os(windows) && !os(darwin)         extra-libraries: vulkan     else