diff --git a/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c b/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c index d89ae85..870cb5d 100644 --- a/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c +++ b/projects/apis/vulkan/src/extensions/queues/vulkan_device_queues.c @@ -18,7 +18,6 @@ gnReturnCode vulkanPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle de if ((queueFamilies[i].queueFlags & VK_QUEUE_SPARSE_BINDING_BIT) == VK_QUEUE_SPARSE_BINDING_BIT) queues[i].queueTypeFlags |= GN_QUEUE_SPARSE_BINDING_BIT; if ((queueFamilies[i].queueFlags & VK_QUEUE_PROTECTED_BIT) == VK_QUEUE_PROTECTED_BIT) queues[i].queueTypeFlags |= GN_QUEUE_PROTECTED_BIT; } - return GN_SUCCESS; } diff --git a/projects/apis/vulkan/src/framebuffers/vulkan_framebuffer.c b/projects/apis/vulkan/src/framebuffers/vulkan_framebuffer.c index aeff40c..8d9369c 100644 --- a/projects/apis/vulkan/src/framebuffers/vulkan_framebuffer.c +++ b/projects/apis/vulkan/src/framebuffers/vulkan_framebuffer.c @@ -20,10 +20,7 @@ gnReturnCode createFramebuffer(gnFramebuffer framebuffer, gnDevice device, gnFra .layers = 1 }; - if (vkCreateFramebuffer(device->outputDevice->device, &framebufferInfo, NULL, &framebuffer->framebuffer->framebuffer) != VK_SUCCESS) { - return GN_FAILED_TO_CREATE_FRAMEBUFFER; - } - + VkResult res = vkCreateFramebuffer(device->outputDevice->device, &framebufferInfo, NULL, &framebuffer->framebuffer->framebuffer); free(attachments); return GN_SUCCESS; } diff --git a/projects/apis/vulkan/src/instance/vulkan_instance.c b/projects/apis/vulkan/src/instance/vulkan_instance.c index 30b2991..fc274be 100644 --- a/projects/apis/vulkan/src/instance/vulkan_instance.c +++ b/projects/apis/vulkan/src/instance/vulkan_instance.c @@ -1,10 +1,5 @@ #include "vulkan_instance.h" -#include - -typedef struct vkUserData { - gnDebuggerCallback debuggerCallback; - void* userData; -} vkUserData; +#include "vulkan_result_converter.h" static VKAPI_ATTR VkBool32 VKAPI_CALL vk_debuggerDebugCallback( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, @@ -40,7 +35,7 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL vk_debuggerDebugCallback( return VK_TRUE; } -gnReturnCode createInstance(gnInstanceHandle instance, gnInstanceInfo instanceInfo) { +gnReturnCode createInstance(gnInstanceHandle instance, gnInstanceCreateInfo* instanceInfo) { instance->instance = malloc(sizeof(gnPlatformInstance)); vkStringArrayList extensions = vkStringArrayListCreate(); @@ -61,10 +56,10 @@ gnReturnCode createInstance(gnInstanceHandle instance, gnInstanceInfo instanceIn VkApplicationInfo appInfo = { .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, - .pApplicationName = gnToCString(instanceInfo.applicationName), - .applicationVersion = instanceInfo.applicationVersion, - .pEngineName = gnToCString(instanceInfo.engineName), - .engineVersion = instanceInfo.engineVersion, + .pApplicationName = gnToCString(instanceInfo->applicationInfo.applicationName), + .applicationVersion = instanceInfo->applicationInfo.applicationVersion, + .pEngineName = gnToCString(instanceInfo->applicationInfo.engineName), + .engineVersion = instanceInfo->applicationInfo.engineVersion, .apiVersion = VK_API_VERSION_1_3, }; @@ -78,44 +73,34 @@ gnReturnCode createInstance(gnInstanceHandle instance, gnInstanceInfo instanceIn createInfo.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; #endif - if (instanceInfo.debugger != NULL) { - for (int i = 0; i < instanceInfo.debugger->layerCount; i++) { - if (instanceInfo.debugger->layers[i] == GN_DEBUGGER_LAYER_PLATFORM) { - vkStringArrayListAdd(&extensions, VK_EXT_DEBUG_UTILS_EXTENSION_NAME); + for (int i = 0; i < instanceInfo->debuggerInfo.layerCount; i++) { + if (instanceInfo->debuggerInfo.layers[i] == GN_DEBUGGER_LAYER_PLATFORM) { + vkStringArrayListAdd(&extensions, VK_EXT_DEBUG_UTILS_EXTENSION_NAME); - const char* validation_layers[1] = { "VK_LAYER_KHRONOS_validation" }; - createInfo.enabledLayerCount = 1; - createInfo.ppEnabledLayerNames = (const char*[]){ "VK_LAYER_KHRONOS_validation" }; + const char* validation_layers[1] = { "VK_LAYER_KHRONOS_validation" }; + createInfo.enabledLayerCount = 1; + createInfo.ppEnabledLayerNames = (const char*[]){ "VK_LAYER_KHRONOS_validation" }; - vkUserData* userData = malloc(sizeof(vkUserData)); - userData->debuggerCallback = instanceInfo.debugger->callback; - userData->userData = instanceInfo.debugger->userData; + instance->instance->userData.debuggerCallback = instanceInfo->debuggerInfo.callback; + instance->instance->userData.userData = instanceInfo->debuggerInfo.userData; - VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = { - .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, - .messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | 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 - }; - debugCreateInfo.pfnUserCallback = vk_debuggerDebugCallback; - debugCreateInfo.pUserData = userData; - createInfo.pNext = &debugCreateInfo; - } + VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = { + .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, + .messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | 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 + }; + debugCreateInfo.pfnUserCallback = vk_debuggerDebugCallback; + debugCreateInfo.pUserData = &instance->instance->userData; + createInfo.pNext = &debugCreateInfo; } - } + createInfo.enabledExtensionCount = extensions.count; createInfo.ppEnabledExtensionNames = extensions.data; - - VkResult result = vkCreateInstance(&createInfo, NULL, &instance->instance->vk_instance); - if (result != VK_SUCCESS) - return GN_FAILED_CREATE_INSTANCE; - instance->valid = GN_TRUE; - - return GN_SUCCESS; + return VkResultToGnReturnCode(vkCreateInstance(&createInfo, NULL, &instance->instance->vk_instance)); } void destroyInstance(gnInstanceHandle instance) { - instance->valid = GN_FALSE; vkDestroyInstance(instance->instance->vk_instance, NULL); } diff --git a/projects/apis/vulkan/src/instance/vulkan_instance.h b/projects/apis/vulkan/src/instance/vulkan_instance.h index 9fa3d82..f9cf294 100644 --- a/projects/apis/vulkan/src/instance/vulkan_instance.h +++ b/projects/apis/vulkan/src/instance/vulkan_instance.h @@ -3,12 +3,17 @@ #include "instance/gryphn_instance.h" #include "utils/lists/gryphn_array_list.h" +typedef struct vkUserData { + gnDebuggerCallback debuggerCallback; + void* userData; +} vkUserData; + typedef struct gnPlatformInstance_t { VkInstance vk_instance; - VkApplicationInfo appInfo; + vkUserData userData; } gnPlatformInstance; -gnReturnCode createInstance(gnInstanceHandle instance, gnInstanceInfo instanceInfo); +gnReturnCode createInstance(gnInstanceHandle instance, gnInstanceCreateInfo* instanceInfo); void destroyInstance(gnInstanceHandle instance); typedef const char* vkString; diff --git a/projects/apis/vulkan/src/output_device/vulkan_output_device.c b/projects/apis/vulkan/src/output_device/vulkan_output_device.c index 59f77c7..4dbd9e2 100644 --- a/projects/apis/vulkan/src/output_device/vulkan_output_device.c +++ b/projects/apis/vulkan/src/output_device/vulkan_output_device.c @@ -4,6 +4,7 @@ #include "vulkan_device_extensions.h" #include "instance/gryphn_instance.h" #include "commands/command_buffer/vulkan_command_buffer.h" +#include "vulkan_result_converter.h" gnReturnCode createOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo) { outputDevice->outputDevice = malloc(sizeof(gnPlatformOutputDevice)); @@ -58,8 +59,9 @@ gnReturnCode createOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHan deviceCreateInfo.ppEnabledLayerNames = validation_layers; } - if (vkCreateDevice(deviceInfo.physicalDevice->physicalDevice->device, &deviceCreateInfo, NULL, &outputDevice->outputDevice->device) != VK_SUCCESS) - return GN_FAILED_TO_CREATE_DEVICE; + VkResult result = vkCreateDevice(deviceInfo.physicalDevice->physicalDevice->device, &deviceCreateInfo, NULL, &outputDevice->outputDevice->device); + if (result != VK_SUCCESS) + return VkResultToGnReturnCode(result); outputDevice->outputDevice->queues = malloc(sizeof(vulkanQueue) * deviceInfo.physicalDevice->physicalDevice->neededQueueCount); uint32_t transferQueue = 0; @@ -83,11 +85,13 @@ gnReturnCode createOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHan .queueFamilyIndex = transferQueue }; - if (vkCreateCommandPool(outputDevice->outputDevice->device, &poolInfo, NULL, &outputDevice->outputDevice->transferCommandPool) != VK_SUCCESS) - return GN_FAILED_TO_CREATE_COMMAND_POOL; + VkResult command_pool_result = vkCreateCommandPool(outputDevice->outputDevice->device, &poolInfo, NULL, &outputDevice->outputDevice->transferCommandPool); + if (command_pool_result != VK_SUCCESS) + return VkResultToGnReturnCode(command_pool_result); VkFenceCreateInfo fenceInfo = { .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO }; - if (vkCreateFence(outputDevice->outputDevice->device, &fenceInfo, NULL, &outputDevice->outputDevice->barrierFence) != VK_SUCCESS) return GN_FAILED_TO_CREATE_FENCE; + VkResult fence_result = vkCreateFence(outputDevice->outputDevice->device, &fenceInfo, NULL, &outputDevice->outputDevice->barrierFence); + if (fence_result != VK_SUCCESS) VkResultToGnReturnCode(fence_result); // create the massive staging buffer outputDevice->outputDevice->stagingBufferSize = 128 * 1024 * 1024; diff --git a/projects/extensions/queues/gryphn_physcial_device_queue.h b/projects/extensions/queues/gryphn_physcial_device_queue.h index b83769c..7fde324 100644 --- a/projects/extensions/queues/gryphn_physcial_device_queue.h +++ b/projects/extensions/queues/gryphn_physcial_device_queue.h @@ -1,5 +1,5 @@ #pragma once -#include "utils/gryphn_error_code.h" +#include "core/gryphn_return_code.h" #include "gryphn_handles.h" typedef enum gnQueueTypeBits {