コード例 #1
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void BindSparse(SharpVk.BindSparseInfo[] bindInfo, SharpVk.Fence fence)
 {
     try
     {
         SharpVk.Interop.BindSparseInfo *marshalledBindInfo = default(SharpVk.Interop.BindSparseInfo *);
         if (bindInfo != null)
         {
             var fieldPointer = (SharpVk.Interop.BindSparseInfo *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.BindSparseInfo>(bindInfo.Length).ToPointer());
             for (int index = 0; index < (uint)(bindInfo.Length); index++)
             {
                 bindInfo[index].MarshalTo(&fieldPointer[index]);
             }
             marshalledBindInfo = fieldPointer;
         }
         else
         {
             marshalledBindInfo = null;
         }
         Result methodResult = Interop.Commands.vkQueueBindSparse(this.handle, (uint)(bindInfo?.Length ?? 0), marshalledBindInfo, fence?.handle ?? default(SharpVk.Interop.Fence));
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
コード例 #2
0
ファイル: Queue.gen.cs プロジェクト: bp-tags/SharpVk
 /// <summary>
 /// Bind device memory to a sparse resource object.
 /// </summary>
 /// <param name="bindInfo">
 /// </param>
 public unsafe void BindSparse(ArrayProxy <SharpVk.BindSparseInfo>?bindInfo, SharpVk.Fence fence)
 {
     try
     {
         SharpVk.Interop.BindSparseInfo *marshalledBindInfo = default(SharpVk.Interop.BindSparseInfo *);
         if (bindInfo.IsNull())
         {
             marshalledBindInfo = null;
         }
         else
         {
             if (bindInfo.Value.Contents == ProxyContents.Single)
             {
                 marshalledBindInfo = (SharpVk.Interop.BindSparseInfo *)(Interop.HeapUtil.Allocate <SharpVk.Interop.BindSparseInfo>());
                 bindInfo.Value.GetSingleValue().MarshalTo(&*(SharpVk.Interop.BindSparseInfo *)(marshalledBindInfo));
             }
             else
             {
                 var fieldPointer = (SharpVk.Interop.BindSparseInfo *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.BindSparseInfo>(Interop.HeapUtil.GetLength(bindInfo.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(bindInfo.Value)); index++)
                 {
                     bindInfo.Value[index].MarshalTo(&fieldPointer[index]);
                 }
                 marshalledBindInfo = fieldPointer;
             }
         }
         SharpVk.Interop.VkQueueBindSparseDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.VkQueueBindSparseDelegate>("vkQueueBindSparse", "");
         Result methodResult = commandDelegate(this.handle, (uint)(Interop.HeapUtil.GetLength(bindInfo)), marshalledBindInfo, fence?.handle ?? default(SharpVk.Interop.Fence));
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 internal unsafe void MarshalTo(SharpVk.Interop.BindSparseInfo *pointer)
 {
     pointer->SType = StructureType.BindSparseInfo;
     pointer->Next  = null;
     pointer->WaitSemaphoreCount = (uint)(Interop.HeapUtil.GetLength(this.WaitSemaphores));
     if (this.WaitSemaphores != null)
     {
         var fieldPointer = (SharpVk.Interop.Semaphore *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Semaphore>(this.WaitSemaphores.Length).ToPointer());
         for (int index = 0; index < (uint)(this.WaitSemaphores.Length); index++)
         {
             fieldPointer[index] = this.WaitSemaphores[index]?.handle ?? default(SharpVk.Interop.Semaphore);
         }
         pointer->WaitSemaphores = fieldPointer;
     }
     else
     {
         pointer->WaitSemaphores = null;
     }
     pointer->BufferBindCount = (uint)(Interop.HeapUtil.GetLength(this.BufferBinds));
     if (this.BufferBinds != null)
     {
         var fieldPointer = (SharpVk.Interop.SparseBufferMemoryBindInfo *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.SparseBufferMemoryBindInfo>(this.BufferBinds.Length).ToPointer());
         for (int index = 0; index < (uint)(this.BufferBinds.Length); index++)
         {
             this.BufferBinds[index].MarshalTo(&fieldPointer[index]);
         }
         pointer->BufferBinds = fieldPointer;
     }
     else
     {
         pointer->BufferBinds = null;
     }
     pointer->ImageOpaqueBindCount = (uint)(Interop.HeapUtil.GetLength(this.ImageOpaqueBinds));
     if (this.ImageOpaqueBinds != null)
     {
         var fieldPointer = (SharpVk.Interop.SparseImageOpaqueMemoryBindInfo *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.SparseImageOpaqueMemoryBindInfo>(this.ImageOpaqueBinds.Length).ToPointer());
         for (int index = 0; index < (uint)(this.ImageOpaqueBinds.Length); index++)
         {
             this.ImageOpaqueBinds[index].MarshalTo(&fieldPointer[index]);
         }
         pointer->ImageOpaqueBinds = fieldPointer;
     }
     else
     {
         pointer->ImageOpaqueBinds = null;
     }
     pointer->ImageBindCount = (uint)(Interop.HeapUtil.GetLength(this.ImageBinds));
     if (this.ImageBinds != null)
     {
         var fieldPointer = (SharpVk.Interop.SparseImageMemoryBindInfo *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.SparseImageMemoryBindInfo>(this.ImageBinds.Length).ToPointer());
         for (int index = 0; index < (uint)(this.ImageBinds.Length); index++)
         {
             this.ImageBinds[index].MarshalTo(&fieldPointer[index]);
         }
         pointer->ImageBinds = fieldPointer;
     }
     else
     {
         pointer->ImageBinds = null;
     }
     pointer->SignalSemaphoreCount = (uint)(Interop.HeapUtil.GetLength(this.SignalSemaphores));
     if (this.SignalSemaphores != null)
     {
         var fieldPointer = (SharpVk.Interop.Semaphore *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Semaphore>(this.SignalSemaphores.Length).ToPointer());
         for (int index = 0; index < (uint)(this.SignalSemaphores.Length); index++)
         {
             fieldPointer[index] = this.SignalSemaphores[index]?.handle ?? default(SharpVk.Interop.Semaphore);
         }
         pointer->SignalSemaphores = fieldPointer;
     }
     else
     {
         pointer->SignalSemaphores = null;
     }
 }
コード例 #4
0
 public static extern SharpVk.Result vkQueueBindSparse(SharpVk.Interop.Queue queue, uint bindInfoCount, SharpVk.Interop.BindSparseInfo *bindInfo, SharpVk.Interop.Fence fence);