diff --git a/vulkan.d b/vulkan.d index 3e459e0..abcbea1 100644 --- a/vulkan.d +++ b/vulkan.d @@ -8,6 +8,11 @@ import core.stdc.stdio : Printf = printf; import std.format : sformat; import std.math.rounding : Ceil = ceil; +debug +{ + const BUILD_DEBUG = true; +} + alias InitRenderer = Init; alias Renderer = Vulkan; alias Shader = VkShaderModule; diff --git a/vulkan_funcs.d b/vulkan_funcs.d index bb08447..56cf773 100644 --- a/vulkan_funcs.d +++ b/vulkan_funcs.d @@ -1,4 +1,5 @@ public import vulkan_includes; +import vulkan_util; import vulkan : Vulkan, VULKAN_LIBS; @nogc: diff --git a/vulkan_util.d b/vulkan_util.d index fc97334..086b996 100644 --- a/vulkan_util.d +++ b/vulkan_util.d @@ -18,6 +18,9 @@ alias b32 = uint; alias usize = size_t; +alias intptr = i64; +alias uintptr = u64; + const DEFAULT_ALIGNMENT = (void *).sizeof * 2; version(linux) @@ -154,6 +157,34 @@ CheckNil(T)(Node!(T)* nil, Node!(T)* node) return node == null || node == nil; } +T* +Alloc(T)() +{ + void* mem = MemAlloc(T.sizeof); + memset(mem, 0, T.sizeof); + return (cast(T*)mem); +} + +T[] +AllocArray(T)(u64 count) +{ + void* mem = MemAlloc(T.sizeof * count); + memset(mem, 0, T.sizeof * count); + return (cast(T*)mem)[0 .. count]; +} + +void +FreeArray(T)(T[] arr) +{ + MemFree(cast(void*)arr.ptr, T.sizeof * arr.length); +} + +void +Free(T)(T* ptr) +{ + MemFree(cast(void*)ptr, T.sizeof); +} + struct Arena { u8* mem;