4ec57bbd79
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
44 lines
1.8 KiB
C
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()); */
|
|
}
|