Esempio n. 1
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void RegisterObjects(ArrayProxy <SharpVk.NVidia.Experimental.ObjectTableEntry>?objectTableEntries, ArrayProxy <uint>?objectIndices)
 {
     try
     {
         SharpVk.NVidia.Experimental.ObjectTableEntry **marshalledObjectTableEntries     = default(SharpVk.NVidia.Experimental.ObjectTableEntry * *);
         SharpVk.NVidia.Experimental.ObjectTableEntry * semiMarshalledObjectTableEntries = default(SharpVk.NVidia.Experimental.ObjectTableEntry *);
         uint *marshalledObjectIndices = default(uint *);
         if (objectTableEntries.IsNull())
         {
             marshalledObjectTableEntries = null;
         }
         else
         {
             if (objectTableEntries.Value.Contents == ProxyContents.Single)
             {
                 semiMarshalledObjectTableEntries = (SharpVk.NVidia.Experimental.ObjectTableEntry *)(Interop.HeapUtil.Allocate <SharpVk.NVidia.Experimental.ObjectTableEntry>());
                 *(SharpVk.NVidia.Experimental.ObjectTableEntry *)(semiMarshalledObjectTableEntries) = objectTableEntries.Value.GetSingleValue();
             }
             else
             {
                 var fieldPointer = (SharpVk.NVidia.Experimental.ObjectTableEntry *)(Interop.HeapUtil.AllocateAndClear <SharpVk.NVidia.Experimental.ObjectTableEntry>(Interop.HeapUtil.GetLength(objectTableEntries.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(objectTableEntries.Value)); index++)
                 {
                     fieldPointer[index] = objectTableEntries.Value[index];
                 }
                 semiMarshalledObjectTableEntries = fieldPointer;
                 var marshalledFieldPointer = (SharpVk.NVidia.Experimental.ObjectTableEntry * *)(Interop.HeapUtil.AllocateAndClear <IntPtr>(Interop.HeapUtil.GetLength(objectTableEntries.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(objectTableEntries.Value)); index++)
                 {
                     marshalledFieldPointer[index] = &semiMarshalledObjectTableEntries[index];
                 }
                 marshalledObjectTableEntries = marshalledFieldPointer;
             }
         }
         if (objectIndices.IsNull())
         {
             marshalledObjectIndices = null;
         }
         else
         {
             if (objectIndices.Value.Contents == ProxyContents.Single)
             {
                 marshalledObjectIndices            = (uint *)(Interop.HeapUtil.Allocate <uint>());
                 *(uint *)(marshalledObjectIndices) = objectIndices.Value.GetSingleValue();
             }
             else
             {
                 var fieldPointer = (uint *)(Interop.HeapUtil.AllocateAndClear <uint>(Interop.HeapUtil.GetLength(objectIndices.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(objectIndices.Value)); index++)
                 {
                     fieldPointer[index] = objectIndices.Value[index];
                 }
                 marshalledObjectIndices = fieldPointer;
             }
         }
         SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXRegisterObjectsDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXRegisterObjectsDelegate>("vkRegisterObjectsNVX", "device");
         Result methodResult = commandDelegate(this.parent.handle, this.handle, (uint)(Interop.HeapUtil.GetLength(objectTableEntries)), marshalledObjectTableEntries, marshalledObjectIndices);
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
Esempio n. 2
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void RegisterObjects(SharpVk.NVidia.Experimental.ObjectTableEntry[] objectTableEntries, uint[] objectIndices)
 {
     try
     {
         SharpVk.NVidia.Experimental.ObjectTableEntry **marshalledObjectTableEntries     = default(SharpVk.NVidia.Experimental.ObjectTableEntry * *);
         SharpVk.NVidia.Experimental.ObjectTableEntry * semiMarshalledObjectTableEntries = default(SharpVk.NVidia.Experimental.ObjectTableEntry *);
         uint *marshalledObjectIndices = default(uint *);
         if (objectTableEntries != null)
         {
             var fieldPointer = (SharpVk.NVidia.Experimental.ObjectTableEntry *)(Interop.HeapUtil.AllocateAndClear <SharpVk.NVidia.Experimental.ObjectTableEntry>(objectTableEntries.Length).ToPointer());
             for (int index = 0; index < (uint)(objectTableEntries.Length); index++)
             {
                 fieldPointer[index] = objectTableEntries[index];
             }
             semiMarshalledObjectTableEntries = fieldPointer;
         }
         else
         {
             semiMarshalledObjectTableEntries = null;
         }
         if (objectTableEntries != null)
         {
             var fieldPointer = (SharpVk.NVidia.Experimental.ObjectTableEntry * *)(Interop.HeapUtil.AllocateAndClear <IntPtr>(objectTableEntries.Length).ToPointer());
             for (int index = 0; index < (uint)(objectTableEntries.Length); index++)
             {
                 fieldPointer[index] = &semiMarshalledObjectTableEntries[index];
             }
             marshalledObjectTableEntries = fieldPointer;
         }
         else
         {
             marshalledObjectTableEntries = null;
         }
         if (objectIndices != null)
         {
             var fieldPointer = (uint *)(Interop.HeapUtil.AllocateAndClear <uint>(objectIndices.Length).ToPointer());
             for (int index = 0; index < (uint)(objectIndices.Length); index++)
             {
                 fieldPointer[index] = objectIndices[index];
             }
             marshalledObjectIndices = fieldPointer;
         }
         else
         {
             marshalledObjectIndices = null;
         }
         SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXRegisterObjectsDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXRegisterObjectsDelegate>("vkRegisterObjectsNVX", "instance");
         Result methodResult = commandDelegate(this.parent.handle, this.handle, (uint)(objectTableEntries?.Length ?? 0), marshalledObjectTableEntries, marshalledObjectIndices);
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }