コード例 #1
0
        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());
        }
コード例 #2
0
 internal VkQueue(IntPtr Handle, VkDevice Parent, VkQueueFamilyProperties QueueFamily)
 {
     _Parent      = Parent;
     _Handle      = Handle;
     _QueueFamily = QueueFamily;
 }