anchor.diff:          VkRaw.vkQueueSubmit(x.Handle, 1u, &&submitInfo, VkFence.Null) 
               |> check "vkQueueWaitSemaphore"
   
  +    member x.Signal() =
  +        let sem = device.CreateSemaphore()
  +        let mutable semHandle = sem.Handle
  +        let mutable submitInfo =
  +            VkSubmitInfo(
  +                VkStructureType.SubmitInfo, 0n, 
  +                0u, NativePtr.zero, NativePtr.zero,
  +                0u, NativePtr.zero,
  +                1u, &&semHandle
  +            )
  +
  +        VkRaw.vkQueueSubmit(x.Handle, 1u, &&submitInfo, VkFence.Null) 
  +            |> check "vkQueueWaitSemaphore"
  +
  +        sem
  +
       member x.WaitIdle() =
           VkRaw.vkQueueWaitIdle(x.Handle)
               |> check "could not wait for queue"
  
positive.code:     member x.RunSynchronously(cmd : CommandBuffer) =
          let q = x.GetQueue()
          q.RunSynchronously(cmd)
  
      member x.GetQueue () : DeviceQueue =
          let next = Interlocked.Change(&current, fun c -> (c + 1) % store.Length)
  
negative.code:                 t.AddRef()
                  t
              | None ->
                  let queue = graphicsFamily.Value.GetQueue()
                  let t = new DeviceToken(queue, ref)
                  ref := Some t
                  t 
  
  