/// <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); } }