예제 #1
0
 /// <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();
     }
 }
예제 #2
0
        /// <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;
     }
 }