public CommandPoolCached(Device dev, uint queueFamily,
                          uint maxCacheSize             = 32,
                          VkCommandPoolCreateFlag flags = (VkCommandPoolCreateFlag)0) : base(dev, queueFamily,
                                                                                             flags | VkCommandPoolCreateFlag.ResetCommandBuffer)
 {
     _capacity         = maxCacheSize;
     _available        = new ConcurrentQueue <CommandBufferPooledExclusiveUse>();
     _unavailable      = new List <CommandBufferPooledExclusiveUse>((int)maxCacheSize);
     _forceRotateTimer = new Timer(RotateFromTimer, this, ForceRotateTimeMs, Timeout.Infinite);
 }
Example #2
0
 public CommandPool(Device dev, uint queueFamily, VkCommandPoolCreateFlag flags = 0)
 {
     Device = dev;
     unsafe
     {
         var info = new VkCommandPoolCreateInfo()
         {
             SType            = VkStructureType.CommandPoolCreateInfo,
             PNext            = IntPtr.Zero,
             Flags            = flags,
             QueueFamilyIndex = queueFamily
         };
         Handle = dev.Handle.CreateCommandPool(&info, Instance.AllocationCallbacks);
     }
 }