/// <summary>
 ///
 /// </summary>
 public static unsafe void ProcessCommands(this SharpVk.CommandBuffer extendedHandle, SharpVk.NVidia.Experimental.CommandProcessCommandsInfo processCommandsInfo)
 {
     try
     {
         CommandCache commandCache = default(CommandCache);
         SharpVk.Interop.NVidia.Experimental.CommandProcessCommandsInfo *marshalledProcessCommandsInfo = default(SharpVk.Interop.NVidia.Experimental.CommandProcessCommandsInfo *);
         commandCache = extendedHandle.commandCache;
         marshalledProcessCommandsInfo = (SharpVk.Interop.NVidia.Experimental.CommandProcessCommandsInfo *)(Interop.HeapUtil.Allocate <SharpVk.Interop.NVidia.Experimental.CommandProcessCommandsInfo>());
         processCommandsInfo.MarshalTo(marshalledProcessCommandsInfo);
         SharpVk.Interop.NVidia.Experimental.VkCommandBufferProcessCommandsDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.Experimental.VkCommandBufferProcessCommandsDelegate>("vkCmdProcessCommandsNVX", "instance");
         commandDelegate(extendedHandle.handle, marshalledProcessCommandsInfo);
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
 /// <summary>
 ///
 /// </summary>
 internal unsafe void MarshalTo(SharpVk.Interop.NVidia.Experimental.CommandProcessCommandsInfo *pointer)
 {
     pointer->SType                      = StructureType.CommandProcessCommandsInfoNvx;
     pointer->Next                       = null;
     pointer->ObjectTable                = this.ObjectTable?.handle ?? default(SharpVk.Interop.NVidia.Experimental.ObjectTable);
     pointer->IndirectCommandsLayout     = this.IndirectCommandsLayout?.handle ?? default(SharpVk.Interop.NVidia.Experimental.IndirectCommandsLayout);
     pointer->IndirectCommandsTokenCount = (uint)(Interop.HeapUtil.GetLength(this.IndirectCommandsTokens));
     if (this.IndirectCommandsTokens != null)
     {
         var fieldPointer = (SharpVk.Interop.NVidia.Experimental.IndirectCommandsToken *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.NVidia.Experimental.IndirectCommandsToken>(this.IndirectCommandsTokens.Length).ToPointer());
         for (int index = 0; index < (uint)(this.IndirectCommandsTokens.Length); index++)
         {
             this.IndirectCommandsTokens[index].MarshalTo(&fieldPointer[index]);
         }
         pointer->IndirectCommandsTokens = fieldPointer;
     }
     else
     {
         pointer->IndirectCommandsTokens = null;
     }
     pointer->MaxSequencesCount    = this.MaxSequencesCount;
     pointer->TargetCommandBuffer  = this.TargetCommandBuffer?.handle ?? default(SharpVk.Interop.CommandBuffer);
     pointer->SequencesCountBuffer = this.SequencesCountBuffer?.handle ?? default(SharpVk.Interop.Buffer);
     if (this.SequencesCountOffset != null)
     {
         pointer->SequencesCountOffset = this.SequencesCountOffset.Value;
     }
     else
     {
         pointer->SequencesCountOffset = default(DeviceSize);
     }
     pointer->SequencesIndexBuffer = this.SequencesIndexBuffer?.handle ?? default(SharpVk.Interop.Buffer);
     if (this.SequencesIndexOffset != null)
     {
         pointer->SequencesIndexOffset = this.SequencesIndexOffset.Value;
     }
     else
     {
         pointer->SequencesIndexOffset = default(DeviceSize);
     }
 }