Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        internal static unsafe MemoryBarrier MarshalFrom(SharpVk.Interop.MemoryBarrier *pointer)
        {
            MemoryBarrier result = default(MemoryBarrier);

            result.SourceAccessMask      = pointer->SourceAccessMask;
            result.DestinationAccessMask = pointer->DestinationAccessMask;
            return(result);
        }
Ejemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 internal unsafe void MarshalTo(SharpVk.Interop.MemoryBarrier *pointer)
 {
     pointer->SType = StructureType.MemoryBarrier;
     pointer->Next  = null;
     if (this.SourceAccessMask != null)
     {
         pointer->SourceAccessMask = this.SourceAccessMask.Value;
     }
     else
     {
         pointer->SourceAccessMask = default(SharpVk.AccessFlags);
     }
     if (this.DestinationAccessMask != null)
     {
         pointer->DestinationAccessMask = this.DestinationAccessMask.Value;
     }
     else
     {
         pointer->DestinationAccessMask = default(SharpVk.AccessFlags);
     }
 }
Ejemplo n.º 3
0
 public static extern void vkCmdPipelineBarrier(SharpVk.Interop.CommandBuffer commandBuffer, SharpVk.PipelineStageFlags sourceStageMask, SharpVk.PipelineStageFlags destinationStageMask, SharpVk.DependencyFlags dependencyFlags, uint memoryBarrierCount, SharpVk.Interop.MemoryBarrier *memoryBarriers, uint bufferMemoryBarrierCount, SharpVk.Interop.BufferMemoryBarrier *bufferMemoryBarriers, uint imageMemoryBarrierCount, SharpVk.Interop.ImageMemoryBarrier *imageMemoryBarriers);
Ejemplo n.º 4
0
 public static extern void vkCmdWaitEvents(SharpVk.Interop.CommandBuffer commandBuffer, uint eventCount, SharpVk.Interop.Event *events, SharpVk.PipelineStageFlags sourceStageMask, SharpVk.PipelineStageFlags destinationStageMask, uint memoryBarrierCount, SharpVk.Interop.MemoryBarrier *memoryBarriers, uint bufferMemoryBarrierCount, SharpVk.Interop.BufferMemoryBarrier *bufferMemoryBarriers, uint imageMemoryBarrierCount, SharpVk.Interop.ImageMemoryBarrier *imageMemoryBarriers);
Ejemplo n.º 5
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void PipelineBarrier(SharpVk.PipelineStageFlags sourceStageMask, SharpVk.PipelineStageFlags destinationStageMask, SharpVk.MemoryBarrier[] memoryBarriers, SharpVk.BufferMemoryBarrier[] bufferMemoryBarriers, SharpVk.ImageMemoryBarrier[] imageMemoryBarriers, SharpVk.DependencyFlags?dependencyFlags = default(SharpVk.DependencyFlags?))
 {
     try
     {
         SharpVk.DependencyFlags              marshalledDependencyFlags      = default(SharpVk.DependencyFlags);
         SharpVk.Interop.MemoryBarrier *      marshalledMemoryBarriers       = default(SharpVk.Interop.MemoryBarrier *);
         SharpVk.Interop.BufferMemoryBarrier *marshalledBufferMemoryBarriers = default(SharpVk.Interop.BufferMemoryBarrier *);
         SharpVk.Interop.ImageMemoryBarrier * marshalledImageMemoryBarriers  = default(SharpVk.Interop.ImageMemoryBarrier *);
         if (dependencyFlags != null)
         {
             marshalledDependencyFlags = dependencyFlags.Value;
         }
         else
         {
             marshalledDependencyFlags = default(SharpVk.DependencyFlags);
         }
         if (memoryBarriers != null)
         {
             var fieldPointer = (SharpVk.Interop.MemoryBarrier *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.MemoryBarrier>(memoryBarriers.Length).ToPointer());
             for (int index = 0; index < (uint)(memoryBarriers.Length); index++)
             {
                 memoryBarriers[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledMemoryBarriers = fieldPointer;
         }
         else
         {
             marshalledMemoryBarriers = null;
         }
         if (bufferMemoryBarriers != null)
         {
             var fieldPointer = (SharpVk.Interop.BufferMemoryBarrier *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.BufferMemoryBarrier>(bufferMemoryBarriers.Length).ToPointer());
             for (int index = 0; index < (uint)(bufferMemoryBarriers.Length); index++)
             {
                 bufferMemoryBarriers[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledBufferMemoryBarriers = fieldPointer;
         }
         else
         {
             marshalledBufferMemoryBarriers = null;
         }
         if (imageMemoryBarriers != null)
         {
             var fieldPointer = (SharpVk.Interop.ImageMemoryBarrier *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.ImageMemoryBarrier>(imageMemoryBarriers.Length).ToPointer());
             for (int index = 0; index < (uint)(imageMemoryBarriers.Length); index++)
             {
                 imageMemoryBarriers[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledImageMemoryBarriers = fieldPointer;
         }
         else
         {
             marshalledImageMemoryBarriers = null;
         }
         Interop.Commands.vkCmdPipelineBarrier(this.handle, sourceStageMask, destinationStageMask, marshalledDependencyFlags, (uint)(memoryBarriers?.Length ?? 0), marshalledMemoryBarriers, (uint)(bufferMemoryBarriers?.Length ?? 0), marshalledBufferMemoryBarriers, (uint)(imageMemoryBarriers?.Length ?? 0), marshalledImageMemoryBarriers);
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void WaitEvents(SharpVk.Event[] events, SharpVk.PipelineStageFlags sourceStageMask, SharpVk.PipelineStageFlags destinationStageMask, SharpVk.MemoryBarrier[] memoryBarriers, SharpVk.BufferMemoryBarrier[] bufferMemoryBarriers, SharpVk.ImageMemoryBarrier[] imageMemoryBarriers)
 {
     try
     {
         SharpVk.Interop.Event *              marshalledEvents               = default(SharpVk.Interop.Event *);
         SharpVk.Interop.MemoryBarrier *      marshalledMemoryBarriers       = default(SharpVk.Interop.MemoryBarrier *);
         SharpVk.Interop.BufferMemoryBarrier *marshalledBufferMemoryBarriers = default(SharpVk.Interop.BufferMemoryBarrier *);
         SharpVk.Interop.ImageMemoryBarrier * marshalledImageMemoryBarriers  = default(SharpVk.Interop.ImageMemoryBarrier *);
         if (events != null)
         {
             var fieldPointer = (SharpVk.Interop.Event *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Event>(events.Length).ToPointer());
             for (int index = 0; index < (uint)(events.Length); index++)
             {
                 fieldPointer[index] = events[index]?.handle ?? default(SharpVk.Interop.Event);
             }
             marshalledEvents = fieldPointer;
         }
         else
         {
             marshalledEvents = null;
         }
         if (memoryBarriers != null)
         {
             var fieldPointer = (SharpVk.Interop.MemoryBarrier *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.MemoryBarrier>(memoryBarriers.Length).ToPointer());
             for (int index = 0; index < (uint)(memoryBarriers.Length); index++)
             {
                 memoryBarriers[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledMemoryBarriers = fieldPointer;
         }
         else
         {
             marshalledMemoryBarriers = null;
         }
         if (bufferMemoryBarriers != null)
         {
             var fieldPointer = (SharpVk.Interop.BufferMemoryBarrier *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.BufferMemoryBarrier>(bufferMemoryBarriers.Length).ToPointer());
             for (int index = 0; index < (uint)(bufferMemoryBarriers.Length); index++)
             {
                 bufferMemoryBarriers[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledBufferMemoryBarriers = fieldPointer;
         }
         else
         {
             marshalledBufferMemoryBarriers = null;
         }
         if (imageMemoryBarriers != null)
         {
             var fieldPointer = (SharpVk.Interop.ImageMemoryBarrier *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.ImageMemoryBarrier>(imageMemoryBarriers.Length).ToPointer());
             for (int index = 0; index < (uint)(imageMemoryBarriers.Length); index++)
             {
                 imageMemoryBarriers[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledImageMemoryBarriers = fieldPointer;
         }
         else
         {
             marshalledImageMemoryBarriers = null;
         }
         Interop.Commands.vkCmdWaitEvents(this.handle, (uint)(events?.Length ?? 0), marshalledEvents, sourceStageMask, destinationStageMask, (uint)(memoryBarriers?.Length ?? 0), marshalledMemoryBarriers, (uint)(bufferMemoryBarriers?.Length ?? 0), marshalledBufferMemoryBarriers, (uint)(imageMemoryBarriers?.Length ?? 0), marshalledImageMemoryBarriers);
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }