unsafe VkQueueFamilyProperties[] GetPhysicalDeviceQueueFamilyProperties() { List <VkQueueFamilyProperties> result = new List <VkQueueFamilyProperties>(); if (vkGetPhysicalDeviceQueueFamilyProperties != null) { UInt32 count = 0; vkGetPhysicalDeviceQueueFamilyProperties(_Handle, new IntPtr(&count), new IntPtr(0)); if (count > 0) { VkQueueFamilyProperties_Native *pVkQueueFamilyProperties = (VkQueueFamilyProperties_Native *)System.Runtime.InteropServices.Marshal.AllocHGlobal(new IntPtr(count * sizeof(VkQueueFamilyProperties_Native))).ToPointer(); vkGetPhysicalDeviceQueueFamilyProperties(_Handle, new IntPtr(&count), new IntPtr(pVkQueueFamilyProperties)); for (int n = 0; n < count; n++) { VkQueueFamilyProperties vkQueueFamily = new VkQueueFamilyProperties(); vkQueueFamily.minImageTransferGranularity = pVkQueueFamilyProperties[n].minImageTransferGranularity; vkQueueFamily.queueCount = pVkQueueFamilyProperties[n].queueCount; vkQueueFamily.queueFlags = pVkQueueFamilyProperties[n].queueFlags; vkQueueFamily.timestampValidBits = pVkQueueFamilyProperties[n].timestampValidBits; vkQueueFamily.index = (UInt32)n; vkQueueFamily.physicalDevice = this; result.Add(vkQueueFamily); } System.Runtime.InteropServices.Marshal.FreeHGlobal(new IntPtr(pVkQueueFamilyProperties)); } } return(result.ToArray()); }
internal VkQueue(IntPtr Handle, VkDevice Parent, VkQueueFamilyProperties QueueFamily) { _Parent = Parent; _Handle = Handle; _QueueFamily = QueueFamily; }