protected void BeginRecording(VkCommandBufferUsageFlag usage,
                               VkCommandBufferInheritanceInfo?inheritance = null)
 {
     AssertValid();
     Debug.Assert(_state == State.Allocated);
     unsafe
     {
         var inherit = inheritance ?? default(VkCommandBufferInheritanceInfo);
         var info    = new VkCommandBufferBeginInfo()
         {
             SType            = VkStructureType.CommandBufferBeginInfo,
             PNext            = IntPtr.Zero,
             Flags            = usage,
             PInheritanceInfo = inheritance.HasValue ? &inherit : (VkCommandBufferInheritanceInfo *)0
         };
         Handle.BeginCommandBuffer(&info);
         _state = State.Building;
     }
 }