56 lines
1.7 KiB
Zig
56 lines
1.7 KiB
Zig
const vk = @import("vk");
|
|
const vma = @import("vma");
|
|
const std = @import("std");
|
|
|
|
test "vma" {
|
|
const instance = try vk.CreateInstance(.{}, null);
|
|
defer vk.DestroyInstance(instance, null);
|
|
|
|
var physDevice: vk.PhysicalDevice = .Null;
|
|
_ = try vk.EnumeratePhysicalDevices(instance, @as(*[1]vk.PhysicalDevice, &physDevice));
|
|
if (physDevice == .Null) return error.NoDevicesAvailable;
|
|
|
|
const device = try vk.CreateDevice(physDevice, .{
|
|
.queueCreateInfoCount = 1,
|
|
.pQueueCreateInfos = &[_]vk.DeviceQueueCreateInfo{ .{
|
|
.queueFamilyIndex = 0,
|
|
.queueCount = 1,
|
|
.pQueuePriorities = &[_]f32{ 1.0 },
|
|
} },
|
|
}, null);
|
|
defer vk.DestroyDevice(device, null);
|
|
|
|
const functions = vma.VulkanFunctions.init(instance, device, vk.vkGetInstanceProcAddr);
|
|
|
|
const allocator = try vma.Allocator.create(.{
|
|
.instance = instance,
|
|
.physicalDevice = physDevice,
|
|
.device = device,
|
|
.frameInUseCount = 3,
|
|
.pVulkanFunctions = &functions,
|
|
});
|
|
defer allocator.destroy();
|
|
}
|
|
|
|
test "Compile everything" {
|
|
@setEvalBranchQuota(10000);
|
|
compileEverything(vma);
|
|
}
|
|
|
|
fn compileEverything(comptime Outer: type) void {
|
|
inline for (comptime std.meta.declarations(Outer)) |decl| {
|
|
if (decl.is_pub) {
|
|
const T = @TypeOf(@field(Outer, decl.name));
|
|
if (T == type) {
|
|
switch (@typeInfo(@field(Outer, decl.name))) {
|
|
.Struct,
|
|
.Enum,
|
|
.Union,
|
|
.Opaque,
|
|
=> compileEverything(@field(Outer, decl.name)),
|
|
else => {},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |