Пример #1
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void FreeDescriptorSets(SharpVk.DescriptorSet[] descriptorSets)
 {
     try
     {
         SharpVk.Interop.DescriptorSet *marshalledDescriptorSets = default(SharpVk.Interop.DescriptorSet *);
         if (descriptorSets != null)
         {
             var fieldPointer = (SharpVk.Interop.DescriptorSet *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.DescriptorSet>(descriptorSets.Length).ToPointer());
             for (int index = 0; index < (uint)(descriptorSets.Length); index++)
             {
                 fieldPointer[index] = descriptorSets[index]?.handle ?? default(SharpVk.Interop.DescriptorSet);
             }
             marshalledDescriptorSets = fieldPointer;
         }
         else
         {
             marshalledDescriptorSets = null;
         }
         Result methodResult = Interop.Commands.vkFreeDescriptorSets(this.parent.handle, this.handle, (uint)(descriptorSets?.Length ?? 0), marshalledDescriptorSets);
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
Пример #2
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void BindDescriptorSets(SharpVk.PipelineBindPoint pipelineBindPoint, SharpVk.PipelineLayout layout, uint firstSet, SharpVk.DescriptorSet[] descriptorSets, uint[] dynamicOffsets)
 {
     try
     {
         SharpVk.Interop.DescriptorSet *marshalledDescriptorSets = default(SharpVk.Interop.DescriptorSet *);
         uint *marshalledDynamicOffsets = default(uint *);
         if (descriptorSets != null)
         {
             var fieldPointer = (SharpVk.Interop.DescriptorSet *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.DescriptorSet>(descriptorSets.Length).ToPointer());
             for (int index = 0; index < (uint)(descriptorSets.Length); index++)
             {
                 fieldPointer[index] = descriptorSets[index]?.handle ?? default(SharpVk.Interop.DescriptorSet);
             }
             marshalledDescriptorSets = fieldPointer;
         }
         else
         {
             marshalledDescriptorSets = null;
         }
         if (dynamicOffsets != null)
         {
             var fieldPointer = (uint *)(Interop.HeapUtil.AllocateAndClear <uint>(dynamicOffsets.Length).ToPointer());
             for (int index = 0; index < (uint)(dynamicOffsets.Length); index++)
             {
                 fieldPointer[index] = dynamicOffsets[index];
             }
             marshalledDynamicOffsets = fieldPointer;
         }
         else
         {
             marshalledDynamicOffsets = null;
         }
         Interop.Commands.vkCmdBindDescriptorSets(this.handle, pipelineBindPoint, layout?.handle ?? default(SharpVk.Interop.PipelineLayout), firstSet, (uint)(descriptorSets?.Length ?? 0), marshalledDescriptorSets, (uint)(dynamicOffsets?.Length ?? 0), marshalledDynamicOffsets);
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
Пример #3
0
 /// <summary>
 /// Free one or more descriptor sets.
 /// </summary>
 /// <param name="descriptorSets">
 /// </param>
 public unsafe void FreeDescriptorSets(ArrayProxy <SharpVk.DescriptorSet>?descriptorSets)
 {
     try
     {
         SharpVk.Interop.DescriptorSet *marshalledDescriptorSets = default(SharpVk.Interop.DescriptorSet *);
         if (descriptorSets.IsNull())
         {
             marshalledDescriptorSets = null;
         }
         else
         {
             if (descriptorSets.Value.Contents == ProxyContents.Single)
             {
                 marshalledDescriptorSets = (SharpVk.Interop.DescriptorSet *)(Interop.HeapUtil.Allocate <SharpVk.Interop.DescriptorSet>());
                 *(SharpVk.Interop.DescriptorSet *)(marshalledDescriptorSets) = descriptorSets.Value.GetSingleValue()?.handle ?? default(SharpVk.Interop.DescriptorSet);
             }
             else
             {
                 var fieldPointer = (SharpVk.Interop.DescriptorSet *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.DescriptorSet>(Interop.HeapUtil.GetLength(descriptorSets.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(descriptorSets.Value)); index++)
                 {
                     fieldPointer[index] = descriptorSets.Value[index]?.handle ?? default(SharpVk.Interop.DescriptorSet);
                 }
                 marshalledDescriptorSets = fieldPointer;
             }
         }
         SharpVk.Interop.VkDescriptorPoolFreeDescriptorSetsDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.VkDescriptorPoolFreeDescriptorSetsDelegate>("vkFreeDescriptorSets", "");
         Result methodResult = commandDelegate(this.parent.handle, this.handle, (uint)(Interop.HeapUtil.GetLength(descriptorSets)), marshalledDescriptorSets);
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
Пример #4
0
 public static extern void vkCmdBindDescriptorSets(SharpVk.Interop.CommandBuffer commandBuffer, SharpVk.PipelineBindPoint pipelineBindPoint, SharpVk.Interop.PipelineLayout layout, uint firstSet, uint descriptorSetCount, SharpVk.Interop.DescriptorSet *descriptorSets, uint dynamicOffsetCount, uint *dynamicOffsets);
Пример #5
0
 public static extern SharpVk.Result vkFreeDescriptorSets(SharpVk.Interop.Device device, SharpVk.Interop.DescriptorPool descriptorPool, uint descriptorSetCount, SharpVk.Interop.DescriptorSet *descriptorSets);
Пример #6
0
 public static extern SharpVk.Result vkAllocateDescriptorSets(SharpVk.Interop.Device device, SharpVk.Interop.DescriptorSetAllocateInfo *allocateInfo, SharpVk.Interop.DescriptorSet *descriptorSets);