コード例 #1
0
 /// <summary>
 ///
 /// </summary>
 public SubpassDependency(uint sourceSubpass, uint destinationSubpass, SharpVk.PipelineStageFlags sourceStageMask, SharpVk.PipelineStageFlags destinationStageMask, SharpVk.AccessFlags sourceAccessMask, SharpVk.AccessFlags destinationAccessMask, SharpVk.DependencyFlags dependencyFlags)
 {
     this.SourceSubpass         = sourceSubpass;
     this.DestinationSubpass    = destinationSubpass;
     this.SourceStageMask       = sourceStageMask;
     this.DestinationStageMask  = destinationStageMask;
     this.SourceAccessMask      = sourceAccessMask;
     this.DestinationAccessMask = destinationAccessMask;
     this.DependencyFlags       = dependencyFlags;
 }
コード例 #2
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);
コード例 #3
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();
     }
 }