Backlog/lib/vma/test/test.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 => {},
}
}
}
}
}