diff options
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/create_device/Program.cs | 41 | ||||
| -rw-r--r-- | samples/select_physical_dev/Program.cs | 8 |
2 files changed, 41 insertions, 8 deletions
diff --git a/samples/create_device/Program.cs b/samples/create_device/Program.cs index 3daca81..b2c0f5a 100644 --- a/samples/create_device/Program.cs +++ b/samples/create_device/Program.cs @@ -3,34 +3,54 @@ using Vulkan; using static Vulkan.Vk; using static Vulkan.Utils; using System.Linq; +using System.Runtime.InteropServices; 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)); + using (VkApplicationInfo ai = new VkApplicationInfo ( + new Vulkan.Version(1,2,0), + new Vulkan.Version(1,2,0), + new Vulkan.Version(1,3,0) + )) { + + using (PinnedObjects po = new PinnedObjects()) { + IntPtr[] instanceExts = {Ext.I.VK_KHR_get_physical_device_properties2.Pin(po)}; + IntPtr[] layers = {"VK_LAYER_KHRONOS_validation".Pin(po)}; + using (VkInstanceCreateInfo ci = new VkInstanceCreateInfo { + pApplicationInfo = ai, + enabledExtensionCount = 1, + enabledLayerCount = 1, + ppEnabledExtensionNames = instanceExts.Pin(po), + ppEnabledLayerNames = layers.Pin(po)}){ + CheckResult (vkCreateInstance (ci, IntPtr.Zero, out inst)); + } } } Vk.LoadInstanceFunctionPointers (inst); + CheckResult (vkEnumerateInstanceVersion(out uint apiVersion)); + + Console.WriteLine ($"Vulkan api version: {(Vulkan.Version)apiVersion})"); + + if (!TryGetPhysicalDevice (inst, VkPhysicalDeviceType.DiscreteGpu, out VkPhysicalDevice phy)) if (!TryGetPhysicalDevice (inst, VkPhysicalDeviceType.IntegratedGpu, out phy)) if (!TryGetPhysicalDevice (inst, VkPhysicalDeviceType.Cpu, out phy)) throw new Exception ("no suitable physical device found"); - foreach (VkPhysicalDeviceToolPropertiesEXT toolProp in GetToolProperties(phy)) { + foreach (VkPhysicalDeviceToolProperties toolProp in GetToolProperties(phy)) { Console.ForegroundColor = ConsoleColor.DarkYellow; Console.WriteLine ($"Enabled Tool: {toolProp.name}({toolProp.version})"); Console.ResetColor (); } - + vkGetPhysicalDeviceQueueFamilyProperties (phy, out uint queueFamilyCount, IntPtr.Zero); VkQueueFamilyProperties[] qFamProps = new VkQueueFamilyProperties[queueFamilyCount]; vkGetPhysicalDeviceQueueFamilyProperties (phy, out queueFamilyCount, qFamProps.Pin()); @@ -42,6 +62,14 @@ namespace tests uint qFamIndex = (uint)qFamProps.Select((qFam, index) => (qFam, index)) .First (qfp=>qfp.qFam.queueFlags.HasFlag (VkQueueFlags.Graphics)).index; + + VkPhysicalDeviceProperties2 phyProps2 = VkPhysicalDeviceProperties2.New; + using (var vk11 = new PNext<VkPhysicalDeviceVulkan11Properties>()) { + phyProps2.pNext = vk11; + vkGetPhysicalDeviceProperties2(phy, ref phyProps2); + Console.WriteLine($"SupportedStages: {vk11.Val.subgroupSupportedStages}" ); + } + VkDevice dev = default; float[] priorities = {0}; using (VkDeviceQueueCreateInfo qInfo = new VkDeviceQueueCreateInfo (qFamIndex,1,priorities)) { @@ -51,6 +79,7 @@ namespace tests CheckResult (vkCreateDevice (phy, deviceCreateInfo, IntPtr.Zero, out dev)); } } + vkGetDeviceQueue (dev, qFamIndex, 0, out VkQueue gQ); vkDestroyDevice (dev, IntPtr.Zero); diff --git a/samples/select_physical_dev/Program.cs b/samples/select_physical_dev/Program.cs index e20193b..59ab23e 100644 --- a/samples/select_physical_dev/Program.cs +++ b/samples/select_physical_dev/Program.cs @@ -8,12 +8,16 @@ namespace tests { class Program { - + delegate void del(IntPtr phy, ref VkPhysicalDeviceFeatures2 vdf); + delegate void del2(IntPtr phy, IntPtr vdf); static void Main(string[] args) { VkInstance inst; - using (VkApplicationInfo ai = new VkApplicationInfo ()) { + using (VkApplicationInfo ai = new VkApplicationInfo ( + new Vulkan.Version(1,2,0), + new Vulkan.Version(1,2,0), + new Vulkan.Version(1,3,0))) { using (VkInstanceCreateInfo ci = new VkInstanceCreateInfo {pApplicationInfo = ai}){ CheckResult (vkCreateInstance (ci, IntPtr.Zero, out inst)); } |