Example #1
0
        /// <summary>
        /// Gets the memory heaps and types for the device.
        /// </summary>
        /// <param name="device">The device to get the memory info for.</param>
        /// <param name="types">The memory types for the device.</param>
        /// <param name="heaps">The memory heaps for the device.</param>
        public static void GetMemoryInfo(VkPhysicalDevice device,
                                         out VkMemoryType[] types, out VkMemoryHeap[] heaps)
        {
            if (!device)
            {
                throw new ArgumentNullException(nameof(device), "Cannot pass null device or device handle");
            }

            VkPhysicalDeviceMemoryProperties.New(out var props);
            device.GetPhysicalDeviceMemoryProperties(&props);
            VkMemoryType *typePtr = &(props.MemoryTypes_0);
            VkMemoryHeap *heapPtr = &(props.MemoryHeaps_0);

            types = new VkMemoryType[props.MemoryTypeCount];
            heaps = new VkMemoryHeap[props.MemoryHeapCount];
            for (uint i = 0; i < props.MemoryTypeCount; ++i)
            {
                types[i] = typePtr[i];
            }
            for (uint i = 0; i < props.MemoryHeapCount; ++i)
            {
                heaps[i] = heapPtr[i];
            }
        }
Example #2
0
 internal MemoryHeap(uint heapIndex, VkMemoryHeap desc)
 {
     HeapIndex = heapIndex;
     Size      = desc.Size;
     Flags     = (VkMemoryHeapFlag)desc.Flags;
 }