From 01fa911d6a07c3048ac6e10b199b6c67156d8411 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bruyère Date: Thu, 3 Sep 2026 18:05:53 +0200 Subject: compilation/headers improvments --- CMakeLists.txt | 11 ++++++-- include/vkh.h | 77 ++++++++++++++++++----------------------------------- src/vkh_app.c | 15 +++++++++++ src/vkh_app.h | 21 ++++++++++++++- src/vkh_buffer.c | 6 +++-- src/vkh_device.c | 4 ++- src/vkh_image.c | 3 +++ src/vkh_phyinfo.c | 4 +++ src/vkh_presenter.c | 3 +++ src/vkh_queue.c | 4 ++- src/vkhelpers.c | 6 +++++ 11 files changed, 96 insertions(+), 58 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 991fb90..d71f2dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,11 @@ OPTION(VKH_USE_VMA "enable Vulkan Memory Allocator" ON) SET(LANG "C") SET(CMAKE_${LANG}_STANDARD 11) -PROJECT(vkh VERSION 0.1.0 DESCRIPTION "Vulkan helpers library" LANGUAGES ${LANG}) +set(CMAKE_C_VISIBILITY_PRESET hidden) +set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) + +PROJECT(vkh VERSION 0.1.0 DESCRIPTION "Vulkan helpers library" LANGUAGES C CXX) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") @@ -70,15 +74,18 @@ if (VKH_USE_VMA) VMA PROPERTIES POSITION_INDEPENDENT_CODE ON LINKER_LANGUAGE C + CXX_STANDARD 11 + CXX_STANDARD_REQUIRED ON ) TARGET_INCLUDE_DIRECTORIES(VMA - PUBLIC + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/vma ${Vulkan_INCLUDE_DIRS} ) ENDIF() ADD_LIBRARY("${PROJECT_NAME}" ${VKH_SRC}) +target_compile_features("${PROJECT_NAME}" PRIVATE c_std_11) SET_TARGET_PROPERTIES("${PROJECT_NAME}" PROPERTIES OUTPUT_NAME ${PROJECT_NAME} VERSION ${PROJECT_VERSION} diff --git a/include/vkh.h b/include/vkh.h index 1438055..18826f8 100644 --- a/include/vkh.h +++ b/include/vkh.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2022 Jean-Philippe Bruyère + * Copyright (c) 2018-2026 Jean-Philippe Bruyère * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in @@ -22,14 +22,33 @@ #ifndef VK_HELPERS_H #define VK_HELPERS_H +#include +#include + +#include + +#ifndef vkh_public +#ifdef VKH_SHARED_BUILD +#if (defined(_WIN32) || defined(__CYGWIN__)) +#define vkh_public __declspec(dllexport) +#else +#define vkh_public __attribute__((visibility("default"))) +#endif +#elif (VKH_SHARED_LINKING && (defined(_WIN32) || defined(__CYGWIN__))) +#define vkh_public __declspec(dllimport) +#else +#define vkh_public +#endif +#endif + #ifdef __cplusplus extern "C" { +#else +#include #endif #define _CRT_SECURE_NO_WARNINGS -#include - typedef enum VkhMemoryUsage { /** No intended memory usage specified. Use other members of VmaAllocationCreateInfo to specify your requirements. @@ -102,34 +121,10 @@ typedef enum VkhMemoryUsage { VKH_MEMORY_USAGE_MAX_ENUM = 0x7FFFFFFF } VkhMemoryUsage; -#include -#include -#include -#include -#include -#include - -#define _USE_MATH_DEFINES // to have M_PI* defined with MSVC -#include - #define VKH_KO 0x00000400 #define VKH_MO 0x00100000 #define VKH_GO 0x40000000 -#ifndef vkh_public -#ifdef VKH_SHARED_BUILD -#if (defined(_WIN32) || defined(_WIN64)) -#define vkh_public __declspec(dllexport) -#else -#define vkh_public __attribute__((visibility("default"))) -#endif -#elif (VKH_SHARED_LINKING && (defined(_WIN32) || defined(_WIN64))) -#define vkh_public __declspec(dllimport) -#else -#define vkh_public -#endif -#endif - #define VKH_LOG_ERR 0x00000001 #define VKH_LOG_DEBUG 0x00000002 #define VKH_LOG_INFO 0x00000004 @@ -139,36 +134,16 @@ typedef enum VkhMemoryUsage { extern uint32_t vkh_log_level; #endif +void _vkh_log(uint32_t log_level, const char * format, ...); + #ifndef LOG #ifdef DEBUG -#define LOG(level, ...) \ - { \ - if ((vkh_log_level) & (level)) \ - fprintf(stdout, __VA_ARGS__); \ - } +#define LOG(level, fmt, ...) _vkh_log(level, fmt, ##__VA_ARGS__) #else -#define LOG +#define LOG(...) ((void)0) #endif #endif -#define VK_CHECK_RESULT(f) \ - { \ - VkResult res = (f); \ - if (res != VK_SUCCESS) { \ - LOG(VKH_LOG_ERR, "Fatal : VkResult is %d in %s at line %d\n", res, __FILE__, __LINE__); \ - assert(res == VK_SUCCESS); \ - } \ - } - -#define VKH_CHECK_RESULT(status, f) \ - { \ - status = (f); \ - if (status != VK_SUCCESS) { \ - LOG(VKH_LOG_ERR, "Fatal : VkResult is %d in %s at line %d\n", status, __FILE__, __LINE__); \ - assert(status == VK_SUCCESS); \ - } \ - } - typedef struct _vkh_app_t *VkhApp; typedef struct _vkh_phy_t *VkhPhyInfo; typedef struct _vkh_device_t *VkhDevice; diff --git a/src/vkh_app.c b/src/vkh_app.c index 878ccb3..d1a20bd 100644 --- a/src/vkh_app.c +++ b/src/vkh_app.c @@ -19,12 +19,27 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include +#include +#include + #include "vkh_app.h" #define ENGINE_NAME "vkhelpers" #define ENGINE_VERSION 1 uint32_t vkh_log_level = VKH_LOG_DEBUG; +void _vkh_log(uint32_t log_level, const char* format, ...) { + if ((vkh_log_level) & (log_level)) { + va_list args; + va_start(args, format); + vfprintf(stdout, format, args); + va_end(args); + fprintf(stdout, "\n"); + fflush(stdout); + } +} + // default debug messenger callback enabled with 'vkh_app_enable_debug_messenger' VkBool32 debugUtilsMessengerCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, diff --git a/src/vkh_app.h b/src/vkh_app.h index b01c01c..3ae7568 100644 --- a/src/vkh_app.h +++ b/src/vkh_app.h @@ -22,11 +22,30 @@ #ifndef VKH_APP_H #define VKH_APP_H +#include "vkh.h" + #ifdef __cplusplus extern "C" { #endif -#include "vkh.h" +#include +#define VK_CHECK_RESULT(f) \ +{ \ + VkResult res = (f); \ + if (res != VK_SUCCESS) { \ + LOG(VKH_LOG_ERR, "Fatal : VkResult is %d in %s at line %d\n", res, __FILE__, __LINE__); \ + assert(res == VK_SUCCESS); \ + } \ +} + +#define VKH_CHECK_RESULT(status, f) \ +{ \ + status = (f); \ + if (status != VK_SUCCESS) { \ + LOG(VKH_LOG_ERR, "Fatal : VkResult is %d in %s at line %d\n", status, __FILE__, __LINE__); \ + assert(status == VK_SUCCESS); \ + } \ +} // console colors for debug output on stdout with debug utils or debug report #ifdef __unix__ diff --git a/src/vkh_buffer.c b/src/vkh_buffer.c index 7920bb3..e3c5a09 100644 --- a/src/vkh_buffer.c +++ b/src/vkh_buffer.c @@ -21,6 +21,9 @@ */ #include "vkh_buffer.h" #include "vkh_device.h" +#include "vkh_app.h" + +#include #ifndef VKH_USE_VMA void _set_size_and_bind(VkhDevice pDev, VkBufferUsageFlags usage, VkhMemoryUsage memoryUsage, VkDeviceSize size, @@ -54,8 +57,7 @@ void vkh_buffer_init(VkhDevice pDev, VkBufferUsageFlags usage, VkhMemoryUsage me buff->allocCreateInfo.usage = (VmaMemoryUsage)memprops; if (mapped) buff->allocCreateInfo.flags = VMA_ALLOCATION_CREATE_MAPPED_BIT; - VK_CHECK_RESULT( - vmaCreateBuffer(pDev->allocator, pInfo, &buff->allocCreateInfo, &buff->buffer, &buff->alloc, &buff->allocInfo)); + VK_CHECK_RESULT(vmaCreateBuffer(pDev->allocator, pInfo, &buff->allocCreateInfo, &buff->buffer, &buff->alloc, &buff->allocInfo)); #else VK_CHECK_RESULT(vkCreateBuffer(pDev->dev, pInfo, NULL, &buff->buffer)); _set_size_and_bind(pDev, usage, memprops, size, buff); diff --git a/src/vkh_device.c b/src/vkh_device.c index 077c2ed..8849a55 100644 --- a/src/vkh_device.c +++ b/src/vkh_device.c @@ -22,7 +22,9 @@ #include "vkh_device.h" #include "vkh_phyinfo.h" #include "vkh_app.h" -#include "string.h" + +#include +#include static PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT; static PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT; diff --git a/src/vkh_image.c b/src/vkh_image.c index 729bf61..1f8f392 100644 --- a/src/vkh_image.c +++ b/src/vkh_image.c @@ -21,6 +21,9 @@ */ #include "vkh_image.h" #include "vkh_device.h" +#include "vkh_app.h" + +#include VkhImage _vkh_image_create(VkhDevice pDev, VkImageType imageType, VkFormat format, uint32_t width, uint32_t height, VkhMemoryUsage memprops, VkImageUsageFlags usage, VkSampleCountFlagBits samples, diff --git a/src/vkh_phyinfo.c b/src/vkh_phyinfo.c index 5928830..b45c833 100644 --- a/src/vkh_phyinfo.c +++ b/src/vkh_phyinfo.c @@ -22,6 +22,10 @@ #include "vkh_phyinfo.h" #include "vkh_app.h" +#include +#include +#include + VkhPhyInfo vkh_phyinfo_create(VkPhysicalDevice phy, VkSurfaceKHR surface) { VkhPhyInfo pi = (vkh_phy_t *)calloc(1, sizeof(vkh_phy_t)); pi->phy = phy; diff --git a/src/vkh_presenter.c b/src/vkh_presenter.c index aca6590..effe190 100644 --- a/src/vkh_presenter.c +++ b/src/vkh_presenter.c @@ -22,6 +22,9 @@ #include "vkh_presenter.h" #include "vkh_device.h" #include "vkh_image.h" +#include "vkh_app.h" + +#include #ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) diff --git a/src/vkh_queue.c b/src/vkh_queue.c index 7faf4e1..6726d4c 100644 --- a/src/vkh_queue.c +++ b/src/vkh_queue.c @@ -21,7 +21,9 @@ */ #include "vkh_queue.h" #include "vkh_device.h" -#include "vkh_phyinfo.h" +//#include "vkh_phyinfo.h" + +#include VkhQueue _init_queue(VkhDevice dev) { VkhQueue q = (vkh_queue_t *)calloc(1, sizeof(vkh_queue_t)); diff --git a/src/vkhelpers.c b/src/vkhelpers.c index 7a86f40..35a3c3d 100644 --- a/src/vkhelpers.c +++ b/src/vkhelpers.c @@ -21,6 +21,12 @@ */ #include "vkh_queue.h" #include "vkh_device.h" +#include "vkh_app.h" + +#include +#include +#include +#include #define CHECK_BIT(var, pos) (((var) >> (pos)) & 1) -- cgit v1.3.1-4-g156e