Files
evk/evk/evkInstance.c
T
mo7sen 4ec57bbd79 Starting Out
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
2025-07-02 12:37:06 +03:00

44 lines
1.8 KiB
C

#include "evkInstance.h"
evkInstance evkCreateInstance(evkInstanceCreateInfo instanceCreateInfo)
{
evkInstance res = EV_INVALID(evkInstance);
if(volkInitialize() != VK_SUCCESS)
return res;
VkApplicationInfo vkAppInfo = __EV_VEC_EMPTY_ARRAY;
vkAppInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
vkAppInfo.pNext = 0;
vkAppInfo.pEngineName = instanceCreateInfo.applicationInfo.engineName;
vkAppInfo.pApplicationName = instanceCreateInfo.applicationInfo.applicationName;
vkAppInfo.engineVersion = instanceCreateInfo.applicationInfo.engineVersion;
vkAppInfo.applicationVersion = instanceCreateInfo.applicationInfo.applicationVersion;
vkAppInfo.apiVersion = instanceCreateInfo.applicationInfo.apiVersion;
VkInstanceCreateInfo vkInstanceCreateInfo = __EV_VEC_EMPTY_ARRAY;
vkInstanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
vkInstanceCreateInfo.pApplicationInfo = &vkAppInfo;
vkInstanceCreateInfo.enabledLayerCount = (u32)vec_len(&instanceCreateInfo.layers);
vkInstanceCreateInfo.ppEnabledLayerNames = instanceCreateInfo.layers;
vkInstanceCreateInfo.enabledExtensionCount = (u32)vec_len(&instanceCreateInfo.extensions);
vkInstanceCreateInfo.ppEnabledExtensionNames = instanceCreateInfo.extensions;
VkResult instanceCreationResult = vkCreateInstance(&vkInstanceCreateInfo, NULL, &res.vk);
/* VkResult instanceCreationResult = vkCreateInstance(&vkInstanceCreateInfo, evkGetAllocationCallbacks(), &res); */
/* printf("InstanceCreationResult: %d\n", instanceCreationResult); */
if(instanceCreationResult == VK_SUCCESS)
{
volkLoadInstance(res.vk);
res.apiVersion = vkAppInfo.apiVersion;
}
return res;
}
void evkDestroyInstance(evkInstance instance)
{
vkDestroyInstance(instance.vk, NULL);
/* vkDestroyInstance(vkInstance, evkGetAllocationCallbacks()); */
}