From d5486a5af100fb37fac08b60d862ac14943853ce Mon Sep 17 00:00:00 2001 From: Peter Fors Date: Sat, 29 Mar 2025 20:11:56 +0100 Subject: add base code for windowing and opengl crt-shader. --- base/common.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 base/common.h (limited to 'base/common.h') diff --git a/base/common.h b/base/common.h new file mode 100644 index 0000000..2138908 --- /dev/null +++ b/base/common.h @@ -0,0 +1,55 @@ + + +#ifdef _WIN32 +#include +#include +#include // For _aligned_malloc and _aligned_free on Windows +#define aligned_alloc(align, size) _aligned_malloc(size, align) +#define aligned_free _aligned_free + +#elif __linux__ +#include +#include +#include +#include // For aligned_alloc on Linux +#define aligned_free free +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(_Array) (sizeof(_Array) / sizeof(_Array[0])) +#endif + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#if defined(__GNUC__) || defined(__clang__) || defined(__TINYC__) +#define ALIGNED(x) __attribute__((aligned(x))) +#elif defined(_MSC_VER) +#define ALIGNED(x) __declspec(align(x)) +#else +#define ALIGNED(x) /* No alignment support */ +#endif + +#if defined(__GNUC__) || defined(__clang__) +#define ASSUME(condition) if (!(condition)) __builtin_unreachable() +#elif defined(_MSC_VER) +#define ASSUME(condition) __assume(condition) +#else +#define ASSUME(condition) ((void)0) /* Fallback: No-op */ +#endif + +#define UNREACHABLE(cond) do { if(cond) __builtin_unreachable(); } while(0) + +#define DEFAULT_ALIGNMENT 64 + +static void *mks_alloc(size_t size) { + size = (size + (DEFAULT_ALIGNMENT - 1)) & ~(DEFAULT_ALIGNMENT - 1); + void *ptr = aligned_alloc(DEFAULT_ALIGNMENT, size); + state.total_allocated += size; + memset(ptr, 0, size); + return ptr; +} + +static void mks_free(void *ptr) { + aligned_free(ptr); +} -- cgit v1.2.3