Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,6 @@ pub fn addFreetypeAndHarfbuzz(b: *std.Build, c_lib: *std.Build.Step.Compile, tar
c_lib.installHeadersDirectory(harfbuzz.path("src"), "", .{});
c_lib.root_module.addCMacro("HAVE_FREETYPE", "1");
c_lib.root_module.addCSourceFile(.{.file = harfbuzz.path("src/harfbuzz.cc"), .flags = flags});
c_lib.root_module.link_libcpp = true;
}

pub inline fn addGLFWSources(b: *std.Build, c_lib: *std.Build.Step.Compile, target: std.Build.ResolvedTarget, flags: []const []const u8) !void {
Expand Down Expand Up @@ -747,14 +746,18 @@ pub fn addFileDialog(b: *std.Build, c_lib: *std.Build.Step.Compile, flags: []con
pub inline fn addHeaderOnlyLibs(b: *std.Build, c_lib: *std.Build.Step.Compile, flags: []const []const u8) void {
const cgltf = b.dependency("cgltf", .{});
const stb = b.dependency("stb", .{});
const vma = b.dependency("VulkanMemoryAllocator", .{});

c_lib.root_module.addIncludePath(cgltf.path(""));
c_lib.root_module.addIncludePath(stb.path(""));
c_lib.root_module.addIncludePath(vma.path("include"));
c_lib.installHeader(cgltf.path("cgltf.h"), "cgltf.h");
c_lib.installHeader(stb.path("stb_image_write.h"), "stb/stb_image_write.h");
c_lib.installHeader(stb.path("stb_image.h"), "stb/stb_image.h");
c_lib.installHeader(vma.path("include/vk_mem_alloc.h"), "vk_mem_alloc.h");
c_lib.installHeader(b.path("include/vk_mem_alloc_extended.h"), "vk_mem_alloc_extended.h");

c_lib.root_module.addCSourceFiles(.{.files = &[_][]const u8{"lib/cgltf.c", "lib/stb.c"}, .flags = flags});
c_lib.root_module.addCSourceFiles(.{.files = &[_][]const u8{"lib/cgltf.c", "lib/stb.c", "lib/vma.cpp"}, .flags = flags});
}

pub inline fn makeCubyzLibs(b: *std.Build, step: *std.Build.Step, name: []const u8, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, flags: []const []const u8, replace_tool: *std.Build.Step.Compile) !*std.Build.Step.Compile {
Expand All @@ -764,6 +767,8 @@ pub inline fn makeCubyzLibs(b: *std.Build, step: *std.Build.Step, name: []const
.target = target,
.optimize = optimize,
.pic = true, // Needed for thread sanitizer
.link_libc = true,
.link_libcpp = true,
}),
});

Expand Down
4 changes: 4 additions & 0 deletions build.zig.zon
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,9 @@
.url = "git+https://git.code.sf.net/p/tinyfiledialogs/code#eaea99294f266149104e67e3f4e29db6ea03a1eb",
.hash = "N-V-__8AADsZFAC9Ut0V_OXjd_w2LO5zM1W1N5FP9W1bJ_m4",
},
.VulkanMemoryAllocator = .{
.url = "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/refs/tags/v3.4.0.tar.gz",
.hash = "N-V-__8AAG7MQQCXcvOh0VkmSXF9qW5CTbgporOoN7XDgeov",
},
},
}
37 changes: 37 additions & 0 deletions include/vk_mem_alloc_extended.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// VMA tries to fetch these through their (outdated) extension name, see upstream issue https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/issues/541
#define PFN_vkGetBufferMemoryRequirements2KHR PFN_vkGetBufferMemoryRequirements2
#define PFN_vkGetImageMemoryRequirements2KHR PFN_vkGetImageMemoryRequirements2
#define PFN_vkBindBufferMemory2KHR PFN_vkBindBufferMemory2
#define PFN_vkBindImageMemory2KHR PFN_vkBindImageMemory2
#define PFN_vkGetPhysicalDeviceMemoryProperties2KHR PFN_vkGetPhysicalDeviceMemoryProperties2
#define PFN_vkGetDeviceBufferMemoryRequirementsKHR PFN_vkGetDeviceBufferMemoryRequirements
#define PFN_vkGetDeviceImageMemoryRequirementsKHR PFN_vkGetDeviceImageMemoryRequirements
#define PFN_vkGetPhysicalDeviceProperties2KHR PFN_vkGetPhysicalDeviceProperties2
#define VkMemoryAllocateFlagsInfoKHR VkMemoryAllocateFlagsInfo
#define VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
#define VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
#define VkPhysicalDeviceProperties2KHR VkPhysicalDeviceProperties2
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
#define VkPhysicalDeviceMemoryProperties2KHR VkPhysicalDeviceMemoryProperties2
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
#define VkMemoryDedicatedAllocateInfoKHR VkMemoryDedicatedAllocateInfo
#define VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
#define VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
#define VkBufferMemoryRequirementsInfo2KHR VkBufferMemoryRequirementsInfo2
#define VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
#define VkMemoryDedicatedRequirementsKHR VkMemoryDedicatedRequirements
#define VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
#define VkMemoryRequirements2KHR VkMemoryRequirements2
#define VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
#define VkImageMemoryRequirementsInfo2KHR VkImageMemoryRequirementsInfo2
#define VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
#define VkBindBufferMemoryInfoKHR VkBindBufferMemoryInfo
#define VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
#define VkBindImageMemoryInfoKHR VkBindImageMemoryInfo
#define VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
#define VkDeviceBufferMemoryRequirementsKHR VkDeviceBufferMemoryRequirements
#define VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS
#define VkDeviceImageMemoryRequirementsKHR VkDeviceImageMemoryRequirements
#define VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS

#include <vk_mem_alloc.h>
6 changes: 6 additions & 0 deletions lib/vma.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include <glad/vulkan.h>

#define VMA_VULKAN_HEADERS_ALREADY_INCLUDED
#define VMA_IMPLEMENTATION

#include <vk_mem_alloc_extended.h>
Loading