diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/vkh_app.c | 25 | ||||
| -rw-r--r-- | src/vkh_app.h | 1 | ||||
| -rw-r--r-- | src/vkh_device.c | 7 | ||||
| -rw-r--r-- | src/vkh_device.h | 1 | ||||
| -rw-r--r-- | src/vkh_image.c | 4 | ||||
| -rw-r--r-- | src/vkh_image.h | 1 |
6 files changed, 24 insertions, 15 deletions
diff --git a/src/vkh_app.c b/src/vkh_app.c index e3696b1..a42068c 100644 --- a/src/vkh_app.c +++ b/src/vkh_app.c @@ -20,11 +20,12 @@ * THE SOFTWARE. */ #include "vkh_app.h" -// #include "vk_mem_alloc.h" #define ENGINE_NAME "vkhelpers" #define ENGINE_VERSION 1 +uint32_t vkh_log_level = VKH_LOG_DEBUG; +//default debug messenger callback enabled with 'vkh_app_enable_debug_messenger' VkBool32 debugUtilsMessengerCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData) { @@ -62,7 +63,15 @@ VkBool32 debugUtilsMessengerCallback(VkDebugUtilsMessageSeverityFlagBitsEXT VkhApp vkh_app_create(uint32_t version_major, uint32_t version_minor, const char *app_name, uint32_t enabledLayersCount, const char **enabledLayers, uint32_t ext_count, const char *extentions[]) { + uint32_t apiVersion; + vkEnumerateInstanceVersion(&apiVersion); + LOG(VKH_LOG_INFO, "VkhApp create: instance api version = %d.%d", VK_API_VERSION_MAJOR(apiVersion), VK_API_VERSION_MINOR(apiVersion)); + VkhApp app = (VkhApp)malloc(sizeof(vkh_app_t)); + if (!app) { + LOG(VKH_LOG_ERR, "VkhApp creation failed, out of memory."); + return NULL; + } VkApplicationInfo infos = {.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, .pApplicationName = app_name, @@ -82,7 +91,7 @@ VkhApp vkh_app_create(uint32_t version_major, uint32_t version_minor, const char .enabledLayerCount = enabledLayersCount, .ppEnabledLayerNames = enabledLayers}; - VK_CHECK_RESULT(vkCreateInstance(&inst_info, NULL, &app->inst)); + VKH_CHECK_RESULT(app->status, vkCreateInstance(&inst_info, NULL, &app->inst)); app->infos = infos; app->debugMessenger = VK_NULL_HANDLE; return app; @@ -92,14 +101,14 @@ void vkh_app_destroy(VkhApp app) { if (app->debugMessenger != VK_NULL_HANDLE) { PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessenger = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(app->inst, "vkDestroyDebugUtilsMessengerEXT"); - DestroyDebugUtilsMessenger(app->inst, app->debugMessenger, VK_NULL_HANDLE); } vkDestroyInstance(app->inst, NULL); free(app); } +VkResult vkh_app_status(VkhApp app) { return app==NULL ? VK_ERROR_UNKNOWN : app->status; } -VkInstance vkh_app_get_inst(VkhApp app) { return app->inst; } +VkInstance vkh_app_get_inst(VkhApp app) { return vkh_app_status(app) ? VK_NULL_HANDLE : app->inst; } VkhPhyInfo *vkh_app_get_phyinfos(VkhApp app, uint32_t *count, VkSurfaceKHR surface) { VK_CHECK_RESULT(vkEnumeratePhysicalDevices(app->inst, count, NULL)); @@ -119,13 +128,7 @@ void vkh_app_free_phyinfos(uint32_t count, VkhPhyInfo *infos) { vkh_phyinfo_destroy(infos[i]); free(infos); } -/** - * @brief Add a Debug utils messenger to this VkhApp. It will be destroyed on VkhApp end. - * @param VKH application pointer containing vkInstance. - * @param Message type flags - * @param Message severity flags. - * @param optional message callback, if null a default one which print to stdout is configured. - */ + void vkh_app_enable_debug_messenger(VkhApp app, VkDebugUtilsMessageTypeFlagsEXT typeFlags, VkDebugUtilsMessageSeverityFlagsEXT severityFlags, PFN_vkDebugUtilsMessengerCallbackEXT callback) { diff --git a/src/vkh_app.h b/src/vkh_app.h index b565998..b01c01c 100644 --- a/src/vkh_app.h +++ b/src/vkh_app.h @@ -50,6 +50,7 @@ typedef struct _vkh_app_t { VkApplicationInfo infos; VkInstance inst; VkDebugUtilsMessengerEXT debugMessenger; + VkResult status; } vkh_app_t; #ifdef __cplusplus } diff --git a/src/vkh_device.c b/src/vkh_device.c index d227acd..66ec7a7 100644 --- a/src/vkh_device.c +++ b/src/vkh_device.c @@ -53,9 +53,10 @@ VkhDevice vkh_device_import(VkInstance inst, VkPhysicalDevice phy, VkDevice vkDe return dev; } -VkDevice vkh_device_get_vkdev(VkhDevice dev) { return dev->dev; } -VkPhysicalDevice vkh_device_get_phy(VkhDevice dev) { return dev->phy; } -VkhApp vkh_device_get_app(VkhDevice dev) { return dev->vkhApplication; } +VkResult vkh_device_status(VkhDevice dev) { return dev==NULL ? VK_ERROR_UNKNOWN : dev->status; } +VkDevice vkh_device_get_vkdev(VkhDevice dev) { return vkh_device_status(dev) ? VK_NULL_HANDLE : dev->dev; } +VkPhysicalDevice vkh_device_get_phy(VkhDevice dev) { return vkh_device_status(dev) ? VK_NULL_HANDLE : dev->phy; } +VkhApp vkh_device_get_app(VkhDevice dev) { return vkh_device_status(dev) ? NULL : dev->vkhApplication; } /** * @brief get instance proc addresses for debug utils (name, label,...) * @param vkh device diff --git a/src/vkh_device.h b/src/vkh_device.h index a70da5a..b21e41d 100644 --- a/src/vkh_device.h +++ b/src/vkh_device.h @@ -41,6 +41,7 @@ typedef struct _vkh_device_t { VmaAllocator allocator; #endif VkhApp vkhApplication; + VkResult status; } vkh_device_t; #ifdef __cplusplus diff --git a/src/vkh_image.c b/src/vkh_image.c index 76fd231..fc2ac3e 100644 --- a/src/vkh_image.c +++ b/src/vkh_image.c @@ -54,7 +54,7 @@ VkhImage _vkh_image_create(VkhDevice pDev, VkImageType imageType, VkFormat forma img->view = VK_NULL_HANDLE;*/ #ifdef VKH_USE_VMA VmaAllocationCreateInfo allocInfo = {.usage = (VmaMemoryUsage)memprops}; - VK_CHECK_RESULT(vmaCreateImage(pDev->allocator, pInfo, &allocInfo, &img->image, &img->alloc, &img->allocInfo)); + VKH_CHECK_RESULT(img->status, vmaCreateImage(pDev->allocator, pInfo, &allocInfo, &img->image, &img->alloc, &img->allocInfo)); #else VK_CHECK_RESULT(vkCreateImage(pDev->dev, pInfo, NULL, &img->image)); VkMemoryRequirements memReq; @@ -108,6 +108,8 @@ void vkh_image_reference(VkhImage img) { img->references++; mtx_unlock(&img->mutex); } +VkResult vkh_image_status(VkhImage img) { return img==NULL ? VK_ERROR_UNKNOWN : img->status; } + VkhImage vkh_tex2d_array_create(VkhDevice pDev, VkFormat format, uint32_t width, uint32_t height, uint32_t layers, VkhMemoryUsage memprops, VkImageUsageFlags usage) { return _vkh_image_create(pDev, VK_IMAGE_TYPE_2D, format, width, height, memprops, usage, VK_SAMPLE_COUNT_1_BIT, diff --git a/src/vkh_image.h b/src/vkh_image.h index b1fc182..64c2164 100644 --- a/src/vkh_image.h +++ b/src/vkh_image.h @@ -31,6 +31,7 @@ extern "C" { #include "deps/tinycthread.h" typedef struct _vkh_image_t { + VkResult status; VkhDevice pDev; VkImageCreateInfo infos; VkImage image; |