aboutsummaryrefslogtreecommitdiffstatsci
path: root/samples/select_physical_dev/Program.cs
blob: e20193b69041947f37d57d36a4a528e8ae8daa18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using Vulkan;
using static Vulkan.Vk;
using static Vulkan.Utils;
using Version = Vulkan.Version;

namespace tests
{
	class Program
	{

		static void Main(string[] args)
		{
			VkInstance inst;

			using (VkApplicationInfo ai = new VkApplicationInfo ()) {
				using (VkInstanceCreateInfo ci = new VkInstanceCreateInfo {pApplicationInfo = ai}){
					CheckResult (vkCreateInstance (ci, IntPtr.Zero, out inst));
				}
			}

			Vk.LoadInstanceFunctionPointers (inst);

			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++)
			{
				vkGetPhysicalDeviceProperties (phys[i], out VkPhysicalDeviceProperties props);
				Console.WriteLine ($"{props.deviceName}");
				Console.WriteLine ($"\tdeviceType:   {props.deviceType,20}");
				Console.WriteLine ($"\tapiVersion:   {(Version)props.apiVersion,20}");
				Console.WriteLine ($"\tdriverVersion:{props.driverVersion,20}");
				Console.WriteLine ($"\tvendorID:     {props.vendorID,20}");
			}

			vkDestroyInstance (inst, IntPtr.Zero);
		}
	}
}