anchor.diff:  
   
       let maxAllocationSize, maxPerSetDescriptors =
  -        let mutable main3 = 
  -            VkPhysicalDeviceMaintenance3Properties(
  -                VkStructureType.PhysicalDeviceMaintenance3Properties, 0n, 10u, 10UL
  -            )
  -
  -        let mutable props = 
  -            VkPhysicalDeviceProperties2KHR(
  -                VkStructureType.PhysicalDeviceProperties2,
  -                NativePtr.toNativeInt &&main3,
  -                VkPhysicalDeviceProperties()
  -            )
  -
  -        VkRaw.vkGetPhysicalDeviceProperties2(handle, &&props)
  -
  -
  -        let maxMemoryAllocationSize = min (uint64 Int64.MaxValue) main3.maxMemoryAllocationSize |> int64
  -        let maxPerSetDescriptors = min (uint32 Int32.MaxValue) main3.maxPerSetDescriptors |> int
  -
  -        maxMemoryAllocationSize, maxPerSetDescriptors
  +        if apiVersion >= Version(1,1,0) then
  +            let mutable main3 = 
  +                VkPhysicalDeviceMaintenance3Properties(
  +                    VkStructureType.PhysicalDeviceMaintenance3Properties, 0n, 10u, 10UL
  +                )
  +
  +            let mutable props = 
  +                VkPhysicalDeviceProperties2KHR(
  +                    VkStructureType.PhysicalDeviceProperties2,
  +                    NativePtr.toNativeInt &&main3,
  +                    VkPhysicalDeviceProperties()
  +                )
  +
  +            VkRaw.vkGetPhysicalDeviceProperties2(handle, &&props)
  +
  +
  +            let maxMemoryAllocationSize = min (uint64 Int64.MaxValue) main3.maxMemoryAllocationSize |> int64
  +            let maxPerSetDescriptors = min (uint32 Int32.MaxValue) main3.maxPerSetDescriptors |> int
  +
  +            maxMemoryAllocationSize, maxPerSetDescriptors
  +        else
  +            Int64.MaxValue, Int32.MaxValue
     
       let uniqueId, deviceMask =
  -        let mutable id =
  -            KHRExternalMemoryCapabilities.VkPhysicalDeviceIDPropertiesKHR(
  -                VkStructureType.PhysicalDeviceIdProperties,
  -                0n,
  -                Guid.Empty,
  -                Guid.Empty,
  -                byte_8 (),
  -                0u,
  -                0u
  -            )
  +        if apiVersion >= Version(1,1,0) then
  +            let mutable id =
  +                KHRExternalMemoryCapabilities.VkPhysicalDeviceIDPropertiesKHR(
  +                    VkStructureType.PhysicalDeviceIdProperties,
  +                    0n,
  +                    Guid.Empty,
  +                    Guid.Empty,
  +                    byte_8 (),
  +                    0u,
  +                    0u
  +                )
               
  -        let mutable khrProps = 
  -            VkPhysicalDeviceProperties2KHR(
  -                VkStructureType.PhysicalDeviceProperties2,
  -                NativePtr.toNativeInt &&id,
  -                VkPhysicalDeviceProperties()
  -            )
  -        VkRaw.vkGetPhysicalDeviceProperties2(handle, &&khrProps)
  -        let uid = sprintf "{ GUID = %A; Mask = %d }" id.deviceUUID id.deviceNodeMask
  -        uid, id.deviceNodeMask
  +            let mutable khrProps = 
  +                VkPhysicalDeviceProperties2KHR(
  +                    VkStructureType.PhysicalDeviceProperties2,
  +                    NativePtr.toNativeInt &&id,
  +                    VkPhysicalDeviceProperties()
  +                )
  +            VkRaw.vkGetPhysicalDeviceProperties2(handle, &&khrProps)
  +            let uid = sprintf "{ GUID = %A; Mask = %d }" id.deviceUUID id.deviceNodeMask
  +            uid, id.deviceNodeMask
  +        else
  +            let uid = Guid.NewGuid() |> string
  +            let mask = 1u
  +            uid, mask
        
   
       let limits = DeviceLimits.ofVkDeviceLimits (Mem maxAllocationSize) properties.limits
  
positive.code:     override x.Release() =
          VkRaw.vkDestroyInstance(instance, NativePtr.zero)
          instance <- VkInstance.Zero
  
      member x.EnabledLayers = layers
      member x.EnabledExtensions = extensions
  
  
negative.code:                         let handle = d.physicalDevices.[ii]
                          devices |> Array.find (fun dd -> dd.Handle = handle)
                      )
                  PhysicalDeviceGroup(this, devices, extensions, apiVersion)
              )
              |> Array.filter (fun g -> g.Devices.Length > 1)
          else
  