Example #1
0
 public static VkPresentModeKHR[] GetSurfacePresentModes(this VkPhysicalDevice phy, VkSurfaceKHR surf)
 {
     vkGetPhysicalDeviceSurfacePresentModesKHR(phy, surf, out uint count, IntPtr.Zero);
     VkPresentModeKHR[] modes = new VkPresentModeKHR[count];
     vkGetPhysicalDeviceSurfacePresentModesKHR(phy, surf, out count, modes.Pin());
     modes.Unpin();
     return(modes);
 }
Example #2
0
 public static VkQueueFamilyProperties[] GetQueueFamilyProperties(this VkPhysicalDevice phy)
 {
     vkGetPhysicalDeviceQueueFamilyProperties(phy, out uint queueFamilyCount, IntPtr.Zero);
     VkQueueFamilyProperties[] qFamProps = new VkQueueFamilyProperties[queueFamilyCount];
     vkGetPhysicalDeviceQueueFamilyProperties(phy, out queueFamilyCount, qFamProps.Pin());
     qFamProps.Unpin();
     return(qFamProps);
 }
Example #3
0
 public static VkSurfaceFormatKHR [] GetSurfaceFormats(this VkPhysicalDevice phy, VkSurfaceKHR surf)
 {
     vkGetPhysicalDeviceSurfaceFormatsKHR(phy, surf, out uint count, IntPtr.Zero);
     VkSurfaceFormatKHR [] formats = new VkSurfaceFormatKHR [count];
     vkGetPhysicalDeviceSurfaceFormatsKHR(phy, surf, out count, formats.Pin());
     formats.Unpin();
     return(formats);
 }
Example #4
0
        /// <summary>
        /// Reports properties of the queues of the specified physical device.
        /// </summary>
        /// <param name="physicalDevice"></param>
        /// <returns></returns>
        public static VkQueueFamilyProperties[] QueueFamilyProperties(this VkPhysicalDevice physicalDevice)
        {
            VkQueueFamilyProperties[] result;
            UInt32 count;

            vkAPI.vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &count, null);
            result = new VkQueueFamilyProperties[count];
            if (count > 0)
            {
                fixed(VkQueueFamilyProperties *pointer = result)
                {
                    vkAPI.vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &count, pointer);
                }
            }

            return(result);
        }
        /// <summary>
        /// </summary>
        /// <param name="device"></param>
        /// <param name="surface"></param>
        /// <returns></returns>
        public static VkSurfaceFormatKHR[] Formats(this VkPhysicalDevice device, VkSurfaceKHR surface)
        {
            VkSurfaceFormatKHR[] result;
            UInt32 count;

            vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &count, null);
            result = new VkSurfaceFormatKHR[count];
            if (count != 0)
            {
                fixed(VkSurfaceFormatKHR *pointer = result)
                {
                    vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &count, pointer);
                }
            }

            return(result);
        }
        /// <summary>
        /// Returns global layer properties.
        /// </summary>
        /// <param name="instance"></param>
        /// <returns></returns>
        public static VkPhysicalDevice[] PhysicalDevices(this VkInstance instance)
        {
            VkPhysicalDevice[] result;
            UInt32             count;

            vkAPI.vkEnumeratePhysicalDevices(instance, &count, null).Check();
            result = new VkPhysicalDevice[count];
            if (count > 0)
            {
                fixed(VkPhysicalDevice *pointer = result)
                {
                    vkAPI.vkEnumeratePhysicalDevices(instance, &count, pointer).Check();
                }
            }

            return(result);
        }
Example #7
0
        /// <summary>
        /// Returns global layer properties.
        /// </summary>
        /// <returns></returns>
        public static VkPresentModeKHR[] PresentModesKHR(VkPhysicalDevice device, VkSurfaceKHR surface)
        {
            VkPresentModeKHR[] result;
            UInt32             count;

            vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &count, null);
            result = new VkPresentModeKHR[count];
            if (count > 0)
            {
                fixed(VkPresentModeKHR *pointer = result)
                {
                    vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &count, pointer);
                }
            }

            return(result);
        }
Example #8
0
        public static bool TryGetPhysicalDevice(this VkInstance inst, VkPhysicalDeviceType deviceType, out VkPhysicalDevice phy)
        {
            CheckResult(vkEnumeratePhysicalDevices(inst, out uint phyCount, IntPtr.Zero));

            VkPhysicalDevice[] phys = new VkPhysicalDevice[phyCount];

            CheckResult(vkEnumeratePhysicalDevices(inst, out phyCount, phys.Pin()));

            for (int i = 0; i < phys.Length; i++)
            {
                phy = phys[i];
                vkGetPhysicalDeviceProperties(phy, out VkPhysicalDeviceProperties props);
                if (props.deviceType == deviceType)
                {
                    return(true);
                }
            }
            phy = default;
            return(false);
        }
Example #9
0
        public static VkExtensionProperties[] DeviceExtensionProperties(this VkPhysicalDevice device, string layerName = null)
        {
            VkExtensionProperties[] result;
            IntPtr pLayerName = Marshal.StringToHGlobalAnsi(layerName);
            UInt32 count;

            vkAPI.vkEnumerateDeviceExtensionProperties(device, pLayerName, &count, null).Check();
            result = new VkExtensionProperties[count];
            if (count > 0)
            {
                fixed(VkExtensionProperties *pointer = result)
                {
                    vkAPI.vkEnumerateDeviceExtensionProperties(device, pLayerName, &count, pointer).Check();
                }
            }

            Marshal.FreeHGlobal(pLayerName);

            return(result);
        }
Example #10
0
        public static VkPhysicalDeviceToolPropertiesEXT[] GetToolProperties(VkPhysicalDevice phy)
        {
            CheckResult(vkGetPhysicalDeviceToolPropertiesEXT(phy, out uint count, IntPtr.Zero));
            int    sizeStruct = Marshal.SizeOf <VkPhysicalDeviceToolPropertiesEXT> ();
            IntPtr ptrTools   = Marshal.AllocHGlobal(sizeStruct * (int)count);

            CheckResult(vkGetPhysicalDeviceToolPropertiesEXT(phy, out count, ptrTools));

            VkPhysicalDeviceToolPropertiesEXT[] result = new VkPhysicalDeviceToolPropertiesEXT[count];
            IntPtr tmp = ptrTools;

            for (int i = 0; i < count; i++)
            {
                result[i] = Marshal.PtrToStructure <VkPhysicalDeviceToolPropertiesEXT> (tmp);
                tmp      += sizeStruct;
            }

            Marshal.FreeHGlobal(ptrTools);
            return(result);
        }