2
3
4
7#include <vulkan/vulkan.h>
12 uint32_t device_count = 0;
15 VkPhysicalDevice* devices;
18 VkApplicationInfo app_info;
20 VkInstanceCreateInfo create_info;
25 app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
26 app_info.pApplicationName =
"HeadlessTest";
27 app_info.applicationVersion = VK_MAKE_API_VERSION(0, 1, 0, 0);
28 app_info.pEngineName =
"NoEngine";
29 app_info.engineVersion = VK_MAKE_API_VERSION(0, 1, 0, 0);
30 app_info.apiVersion = VK_API_VERSION_1_3;
32 create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
33 create_info.pApplicationInfo = &app_info;
34 create_info.enabledLayerCount = 0;
35 create_info.ppEnabledLayerNames = NULL;
36 create_info.enabledExtensionCount = 0;
37 create_info.ppEnabledExtensionNames = NULL;
39 res = vkCreateInstance(&create_info, NULL, &instance);
43 if (res != VK_SUCCESS) {
44 fprintf(stderr,
"Failed to create instance: %d\n", res);
47 printf(
"Vulkan instance created (headless OK).\n");
49 vkEnumeratePhysicalDevices(instance, &device_count, NULL);
50 if (device_count == 0) {
51 fprintf(stderr,
"No physical devices found.\n");
52 vkDestroyInstance(instance, NULL);
56 printf(
"Found %u physical device(s).\n", device_count);
58 devices = malloc((size_t)(device_count *
sizeof(VkPhysicalDevice)));
59 vkEnumeratePhysicalDevices(instance, &device_count, devices);
61 for (i = 0; i < device_count; ++i) {
62 VkPhysicalDeviceProperties props;
63 vkGetPhysicalDeviceProperties(devices[i], &props);
64 printf(
" [%u] %s\n", i, props.deviceName);
68 vkDestroyInstance(instance, NULL);
69 printf(
"Instance destroyed.\n");