/// <summary> /// /// </summary> /// <param name="extendedHandle"> /// The Device handle to extend. /// </param> public static unsafe SharpVk.RenderPass CreateRenderPass2(this SharpVk.Device extendedHandle, SharpVk.Khronos.RenderPassCreateInfo2 createInfo, SharpVk.AllocationCallbacks?allocator = default(SharpVk.AllocationCallbacks?)) { try { SharpVk.RenderPass result = default(SharpVk.RenderPass); CommandCache commandCache = default(CommandCache); SharpVk.Interop.Khronos.RenderPassCreateInfo2 *marshalledCreateInfo = default(SharpVk.Interop.Khronos.RenderPassCreateInfo2 *); SharpVk.Interop.AllocationCallbacks * marshalledAllocator = default(SharpVk.Interop.AllocationCallbacks *); SharpVk.Interop.RenderPass marshalledRenderPass = default(SharpVk.Interop.RenderPass); commandCache = extendedHandle.commandCache; marshalledCreateInfo = (SharpVk.Interop.Khronos.RenderPassCreateInfo2 *)(Interop.HeapUtil.Allocate <SharpVk.Interop.Khronos.RenderPassCreateInfo2>()); createInfo.MarshalTo(marshalledCreateInfo); if (allocator != null) { marshalledAllocator = (SharpVk.Interop.AllocationCallbacks *)(Interop.HeapUtil.Allocate <SharpVk.Interop.AllocationCallbacks>()); allocator.Value.MarshalTo(marshalledAllocator); } else { marshalledAllocator = default(SharpVk.Interop.AllocationCallbacks *); } SharpVk.Interop.Khronos.VkDeviceCreateRenderPass2Delegate commandDelegate = commandCache.Cache.vkCreateRenderPass2KHR; Result methodResult = commandDelegate(extendedHandle.handle, marshalledCreateInfo, marshalledAllocator, &marshalledRenderPass); if (SharpVkException.IsError(methodResult)) { throw SharpVkException.Create(methodResult); } result = new SharpVk.RenderPass(extendedHandle, marshalledRenderPass); return(result); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// /// </summary> internal static unsafe RenderPassCreateInfo2 MarshalFrom(SharpVk.Interop.Khronos.RenderPassCreateInfo2 *pointer) { RenderPassCreateInfo2 result = default(RenderPassCreateInfo2); result.Flags = pointer->Flags; if (pointer->Attachments != null) { var fieldPointer = new SharpVk.Khronos.AttachmentDescription2[(uint)(pointer->AttachmentCount)]; for (int index = 0; index < (uint)(pointer->AttachmentCount); index++) { fieldPointer[index] = SharpVk.Khronos.AttachmentDescription2.MarshalFrom(&pointer->Attachments[index]); } result.Attachments = fieldPointer; } else { result.Attachments = null; } if (pointer->Subpasses != null) { var fieldPointer = new SharpVk.Khronos.SubpassDescription2[(uint)(pointer->SubpassCount)]; for (int index = 0; index < (uint)(pointer->SubpassCount); index++) { fieldPointer[index] = SharpVk.Khronos.SubpassDescription2.MarshalFrom(&pointer->Subpasses[index]); } result.Subpasses = fieldPointer; } else { result.Subpasses = null; } if (pointer->Dependencies != null) { var fieldPointer = new SharpVk.Khronos.SubpassDependency2[(uint)(pointer->DependencyCount)]; for (int index = 0; index < (uint)(pointer->DependencyCount); index++) { fieldPointer[index] = SharpVk.Khronos.SubpassDependency2.MarshalFrom(&pointer->Dependencies[index]); } result.Dependencies = fieldPointer; } else { result.Dependencies = null; } if (pointer->CorrelatedViewMasks != null) { var fieldPointer = new uint[(uint)(pointer->CorrelatedViewMaskCount)]; for (int index = 0; index < (uint)(pointer->CorrelatedViewMaskCount); index++) { fieldPointer[index] = pointer->CorrelatedViewMasks[index]; } result.CorrelatedViewMasks = fieldPointer; } else { result.CorrelatedViewMasks = null; } return(result); }
/// <summary> /// /// </summary> internal unsafe void MarshalTo(SharpVk.Interop.Khronos.RenderPassCreateInfo2 *pointer) { pointer->SType = StructureType.RenderPassCreateInfo2; pointer->Next = null; if (this.Flags != null) { pointer->Flags = this.Flags.Value; } else { pointer->Flags = default(SharpVk.RenderPassCreateFlags); } pointer->AttachmentCount = (uint)(Interop.HeapUtil.GetLength(this.Attachments)); if (this.Attachments != null) { var fieldPointer = (SharpVk.Interop.Khronos.AttachmentDescription2 *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Khronos.AttachmentDescription2>(this.Attachments.Length).ToPointer()); for (int index = 0; index < (uint)(this.Attachments.Length); index++) { this.Attachments[index].MarshalTo(&fieldPointer[index]); } pointer->Attachments = fieldPointer; } else { pointer->Attachments = null; } pointer->SubpassCount = (uint)(Interop.HeapUtil.GetLength(this.Subpasses)); if (this.Subpasses != null) { var fieldPointer = (SharpVk.Interop.Khronos.SubpassDescription2 *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Khronos.SubpassDescription2>(this.Subpasses.Length).ToPointer()); for (int index = 0; index < (uint)(this.Subpasses.Length); index++) { this.Subpasses[index].MarshalTo(&fieldPointer[index]); } pointer->Subpasses = fieldPointer; } else { pointer->Subpasses = null; } pointer->DependencyCount = (uint)(Interop.HeapUtil.GetLength(this.Dependencies)); if (this.Dependencies != null) { var fieldPointer = (SharpVk.Interop.Khronos.SubpassDependency2 *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Khronos.SubpassDependency2>(this.Dependencies.Length).ToPointer()); for (int index = 0; index < (uint)(this.Dependencies.Length); index++) { this.Dependencies[index].MarshalTo(&fieldPointer[index]); } pointer->Dependencies = fieldPointer; } else { pointer->Dependencies = null; } pointer->CorrelatedViewMaskCount = (uint)(Interop.HeapUtil.GetLength(this.CorrelatedViewMasks)); if (this.CorrelatedViewMasks != null) { var fieldPointer = (uint *)(Interop.HeapUtil.AllocateAndClear <uint>(this.CorrelatedViewMasks.Length).ToPointer()); for (int index = 0; index < (uint)(this.CorrelatedViewMasks.Length); index++) { fieldPointer[index] = this.CorrelatedViewMasks[index]; } pointer->CorrelatedViewMasks = fieldPointer; } else { pointer->CorrelatedViewMasks = null; } }