Example #1
0
        internal unsafe void MarshalTo(Interop.DeviceCreateInfo *pointer)
        {
            pointer->SType = StructureType.DeviceCreateInfo;
            pointer->Next  = null;

            //QueueCreateInfos
            if (this.QueueCreateInfos != null)
            {
                var fieldPointer = (Interop.DeviceQueueCreateInfo *)Interop.HeapUtil.AllocateAndClear <Interop.DeviceQueueCreateInfo>(this.QueueCreateInfos.Length);
                for (int index = 0; index < this.QueueCreateInfos.Length; index++)
                {
                    this.QueueCreateInfos[index].MarshalTo(&fieldPointer[index]);
                }
                pointer->QueueCreateInfos = fieldPointer;
            }
            else
            {
                pointer->QueueCreateInfos = null;
            }
            pointer->EnabledLayerNames     = this.EnabledLayerNames == null ? null : Interop.HeapUtil.MarshalTo(this.EnabledLayerNames);
            pointer->EnabledExtensionNames = this.EnabledExtensionNames == null ? null : Interop.HeapUtil.MarshalTo(this.EnabledExtensionNames);
            pointer->EnabledFeatures       = (PhysicalDeviceFeatures *)Interop.HeapUtil.Allocate <PhysicalDeviceFeatures>();
            *pointer->EnabledFeatures = this.EnabledFeatures;
            pointer->QueueCreateInfoCount  = (uint)(this.QueueCreateInfos?.Length ?? 0);
            pointer->EnabledLayerCount     = (uint)(this.EnabledLayerNames?.Length ?? 0);
            pointer->EnabledExtensionCount = (uint)(this.EnabledExtensionNames?.Length ?? 0);
            pointer->Flags = this.Flags;
        }
Example #2
0
 internal DeviceCreateInfo(Interop.DeviceCreateInfo* ptr)
 {
     m = ptr;
     Initialize ();
 }
Example #3
0
 public DeviceCreateInfo()
 {
     m = (Interop.DeviceCreateInfo*) Interop.Structure.Allocate (typeof (Interop.DeviceCreateInfo));
     Initialize ();
 }