anchor.diff:  
           )
   
  -and PhysicalDevice internal(instance : Instance, handle : VkPhysicalDevice, enabledInstanceExtensions : list<string>) =
  +and PhysicalDevice internal(instance : Instance, handle : VkPhysicalDevice, enabledInstanceExtensions : list<string>, apiVersion : Version) =
       static let allFormats = Enum.GetValues(typeof<VkFormat>) |> unbox<VkFormat[]>
   
       let availableLayers = 
  
positive.code:                         let handle = d.physicalDevices.[ii]
                          devices |> Array.find (fun dd -> dd.Handle = handle)
                      )
                  PhysicalDeviceGroup(this, devices, extensions)
              )
              |> Array.filter (fun g -> g.Devices.Length > 1)
          else
  
negative.code: 
  
      let maxAllocationSize, 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 =
          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
          else
              let uid = Guid.NewGuid() |> string
              let mask = 1u
              uid, mask
       
  
      let limits = DeviceLimits.ofVkDeviceLimits (Mem maxAllocationSize) properties.limits
  