Gears-C/src/vulkan_config.c
2025-02-22 19:29:11 +11:00

113 lines
3.3 KiB
C

// VULKAN CONFIG
static VkApplicationInfo app_info = {
.sType = STYPE(APPLICATION_INFO),
.pApplicationName = "Video Game",
.applicationVersion = VK_MAKE_API_VERSION(0, 0, 0, 1),
.pEngineName = "None (yet)",
.engineVersion = VK_MAKE_API_VERSION(0, 0, 0, 1),
.apiVersion = VK_API_VERSION_1_3,
};
static const char *instance_layers[] = {
"VK_LAYER_KHRONOS_validation"
};
static const char *instance_extensions[] = {
VK_KHR_SURFACE_EXTENSION_NAME,
VK_KHR_XCB_SURFACE_EXTENSION_NAME,
#ifdef BUILD_DEBUG
VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
#endif
};
static VkInstanceCreateInfo inst_info = {
.sType = STYPE(INSTANCE_CREATE_INFO),
.pApplicationInfo = &app_info,
.enabledLayerCount = sizeof(instance_layers) / sizeof(char *),
.ppEnabledLayerNames = instance_layers,
.enabledExtensionCount = sizeof(instance_extensions) / sizeof(char *),
.ppEnabledExtensionNames = instance_extensions,
};
const char *device_extensions[] = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME,
};
#ifdef BUILD_DEBUG
static VkDebugUtilsMessengerCreateInfoEXT debug_msg_info = {
.sType = STYPE(DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT),
.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,
.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,
.pfnUserCallback = DebugCallback,
};
#endif
static VkPhysicalDeviceVulkan13Features vk_13_features = {
.sType = STYPE(PHYSICAL_DEVICE_VULKAN_1_3_FEATURES),
.synchronization2 = VK_TRUE,
.dynamicRendering = VK_TRUE
};
static VkPhysicalDeviceVulkan12Features vk_12_features = {
.sType = STYPE(PHYSICAL_DEVICE_VULKAN_1_2_FEATURES),
.pNext = &vk_13_features,
.descriptorIndexing = VK_TRUE,
.bufferDeviceAddress = VK_TRUE
};
static VkPhysicalDeviceVulkan11Features vk_11_features = {
.sType = STYPE(PHYSICAL_DEVICE_VULKAN_1_1_FEATURES),
.pNext = &vk_12_features
};
static const VkPhysicalDeviceFeatures vk_features = {
.shaderUniformBufferArrayDynamicIndexing = VK_TRUE,
.shaderSampledImageArrayDynamicIndexing = VK_TRUE,
.shaderStorageBufferArrayDynamicIndexing = VK_TRUE,
.shaderStorageImageArrayDynamicIndexing = VK_TRUE
};
static VkPhysicalDeviceFeatures2 vk_features_2 = {
.sType = STYPE(PHYSICAL_DEVICE_FEATURES_2),
.pNext = &vk_11_features,
.features = vk_features
};
static VkDeviceCreateInfo device_info = {
.sType = STYPE(DEVICE_CREATE_INFO),
.pNext = &vk_features_2,
.ppEnabledExtensionNames = device_extensions,
.enabledExtensionCount = Len(device_extensions),
.pEnabledFeatures = NULL,
};
static VmaAllocatorCreateInfo vma_create_info = {
.flags = VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT,
.vulkanApiVersion = VK_API_VERSION_1_3,
};
static VkCommandPoolCreateInfo pool_create_info = {
.sType = STYPE(COMMAND_POOL_CREATE_INFO),
.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
};
static VkFenceCreateInfo fence_create_info = {
.sType = STYPE(FENCE_CREATE_INFO),
.flags = VK_FENCE_CREATE_SIGNALED_BIT,
};
static VkSemaphoreCreateInfo semaphore_create_info = {
.sType = STYPE(SEMAPHORE_CREATE_INFO),
};
static VkCommandBufferAllocateInfo cmd_buf_info = {
.sType = STYPE(COMMAND_BUFFER_ALLOCATE_INFO),
.commandBufferCount = 1,
.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
};