ae2f_docs
Loading...
Searching...
No Matches
pureinstance.c
1/*
2 * headless_vk_instance_simple.c
3 * Uses standard vulkan.h with macros — works perfectly on headless systems.
4 */
5
6#if 1
7#include <vulkan/vulkan.h>
8#include <stdio.h>
9#include <stdlib.h>
10
11int main(void) {
12 uint32_t device_count = 0;
13 uint32_t i = 0;
14
15 VkPhysicalDevice* devices;
16
17
18 VkApplicationInfo app_info;
19
20 VkInstanceCreateInfo create_info;
21 VkInstance instance;
22
23 VkResult res;
24
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;
31
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;
38
39 res = vkCreateInstance(&create_info, NULL, &instance);
40
41
42
43 if (res != VK_SUCCESS) {
44 fprintf(stderr, "Failed to create instance: %d\n", res);
45 return EXIT_FAILURE;
46 }
47 printf("Vulkan instance created (headless OK).\n");
48
49 vkEnumeratePhysicalDevices(instance, &device_count, NULL);
50 if (device_count == 0) {
51 fprintf(stderr, "No physical devices found.\n");
52 vkDestroyInstance(instance, NULL);
53 return EXIT_FAILURE;
54 }
55
56 printf("Found %u physical device(s).\n", device_count);
57
58 devices = malloc((size_t)(device_count * sizeof(VkPhysicalDevice)));
59 vkEnumeratePhysicalDevices(instance, &device_count, devices);
60
61 for (i = 0; i < device_count; ++i) {
62 VkPhysicalDeviceProperties props;
63 vkGetPhysicalDeviceProperties(devices[i], &props);
64 printf(" [%u] %s\n", i, props.deviceName);
65 }
66 free(devices);
67
68 vkDestroyInstance(instance, NULL);
69 printf("Instance destroyed.\n");
70
71 return EXIT_SUCCESS;
72}
73#else
74int main(void) {
75 return 0;
76}
77#endif