aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2026-09-03 18:05:53 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2026-09-03 18:05:53 +0200
commit01fa911d6a07c3048ac6e10b199b6c67156d8411 (patch)
tree97dedf948ad7a888bef6ca315f5446ba5f73e96a
parent283f7f9ec74ed2cd583d243c6bdd46fa5bc487d0 (diff)
compilation/headers improvments
-rw-r--r--CMakeLists.txt11
-rw-r--r--include/vkh.h77
-rw-r--r--src/vkh_app.c15
-rw-r--r--src/vkh_app.h21
-rw-r--r--src/vkh_buffer.c6
-rw-r--r--src/vkh_device.c4
-rw-r--r--src/vkh_image.c3
-rw-r--r--src/vkh_phyinfo.c4
-rw-r--r--src/vkh_presenter.c3
-rw-r--r--src/vkh_queue.c4
-rw-r--r--src/vkhelpers.c6
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 <jp_bruyere@hotmail.com>
+ * Copyright (c) 2018-2026 Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
*
* 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 <stdint.h>
+#include <stddef.h>
+
+#include <vulkan/vulkan.h>
+
+#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 <stdbool.h>
#endif
#define _CRT_SECURE_NO_WARNINGS
-#include <vulkan/vulkan.h>
-
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 <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <string.h>
-
-#define _USE_MATH_DEFINES // to have M_PI* defined with MSVC
-#include <math.h>
-
#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 <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
#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 <assert.h>
+#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 <stdlib.h>
#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 <stdlib.h>
+#include <string.h>
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 <stdlib.h>
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 <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
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 <stdlib.h>
#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 <stdlib.h>
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 <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
#define CHECK_BIT(var, pos) (((var) >> (pos)) & 1)