113 lines
3.3 KiB
C
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,
|
|
};
|