aboutsummaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-02-28 12:15:12 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-02-28 12:15:12 +0100
commit06fa5e993cb62fb40f5f093919db116dc0fa8dc9 (patch)
tree071638b442e42ad74817e5771f7bfa2225e7f875 /src
parentd17d759e06d5a96aeb3d5e06474b6ec7ecbb0b93 (diff)
save committmpsavebranch
Diffstat (limited to 'src')
-rw-r--r--src/vkh_app.c25
-rw-r--r--src/vkh_app.h1
-rw-r--r--src/vkh_device.c7
-rw-r--r--src/vkh_device.h1
-rw-r--r--src/vkh_image.c4
-rw-r--r--src/vkh_image.h1
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;