Files
zig-experiments/src/main.zig
2025-02-26 17:24:06 -05:00

165 lines
6.0 KiB
Zig

const std = @import("std");
const lib = @import("zig-shape-lib");
const builtin = @import("builtin");
const Core = @import("Core.zig");
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const alloc = gpa.allocator();
const core = try Core.init(alloc, .{});
defer core.deinit();
std.log.debug("Created instance: {any}", .{core.i.handle});
std.log.debug("Created device: {any}", .{core.d.handle});
std.log.debug("Created queue: {any}", .{core.q.handle});
std.log.debug("Created surface: {any}", .{core.surface});
// var caps = try I.getPhysicalDeviceSurfaceCapabilitiesKHR(pdev, surface);
// const format = search: {
// const formats = try I.getPhysicalDeviceSurfaceFormatsAllocKHR(pdev, surface, alloc);
// defer alloc.free(formats);
// for (formats) |f| {
// if (f.color_space == .srgb_nonlinear_khr) break :search f;
// } else break :search formats[0];
// };
// const mode: vk.PresentModeKHR = .fifo_khr;
// var scinfo: vk.SwapchainCreateInfoKHR = .{
// .surface = surface,
// .min_image_count = std.math.clamp(
// @min(3, caps.min_image_count + 1),
// caps.min_image_count,
// if (caps.max_image_count > 0) caps.max_image_count else 127,
// ),
// .image_format = format.format,
// .image_color_space = format.color_space,
// .image_extent = undefined, // set in rebuild
// .image_array_layers = 1,
// .image_usage = .{ .color_attachment_bit = true },
// .image_sharing_mode = .exclusive,
// .pre_transform = .{ .identity_bit_khr = true },
// .composite_alpha = .{ .opaque_bit_khr = true },
// .present_mode = mode,
// .clipped = vk.TRUE,
// .old_swapchain = .null_handle,
// };
// var sc: vk.SwapchainKHR = .null_handle;
// defer D.destroySwapchainKHR(device, sc, null);
// const FRAMES_IN_FLIGHT = 3;
//
// var pools = [FRAMES_IN_FLIGHT]vk.CommandPool;
// var fence = [FRAMES_IN_FLIGHT]vk.Fence;
// const pool = D.createCommandPool(device, &.{
// .queue_family_index = family,
// }, null);
// defer D.destroyCommandPool(device, pool, null);
// var cmd: vk.CommandBuffer = undefined;
// try D.allocateCommandBuffers(device, &.{vk.CommandBufferAllocateInfo{
// .command_buffer_count = 1,
// .command_pool = pool,
// .level = .primary,
// }}, @ptrCast(&cmd));
// defer D.freeCommandBuffers(device, pool, 1, @ptrCast(&cmd));
// while (glfw.glfwWindowShouldClose(window) == glfw.GLFW_FALSE) {
// if (glfw.glfwGetWindowAttrib(window, glfw.GLFW_FOCUSED) == glfw.GLFW_TRUE)
// glfw.glfwPollEvents()
// else
// glfw.glfwWaitEventsTimeout(1.0 / 60.0);
//
// if (sc == .null_handle) {
// caps = try I.getPhysicalDeviceSurfaceCapabilitiesKHR(pdev, surface);
// scinfo.image_extent = caps.current_extent;
// sc = try D.createSwapchainKHR(device, &scinfo, null);
// D.destroySwapchainKHR(device, scinfo.old_swapchain, null);
// scinfo.old_swapchain = .null_handle;
// }
//
// const render_area: vk.Rect2D = .{
// .offset = .{ .x = 0, .y = 0 },
// .extent = scinfo.image_extent,
// };
//
// try D.resetCommandPool(device, pool, .{});
// try D.beginCommandBuffer(cmd, .{ .flags = .{ .one_time_submit_bit = true } });
// {
// D.cmdPipelineBarrier(
// cmd,
// .{ .top_of_pipe_bit = true },
// .{ .color_attachment_output_bit = true },
// .{},
// 0,
// null,
// 0,
// null,
// 1,
// &.{
// vk.ImageMemoryBarrier{
// .src_access_mask = .{},
// .dst_access_mask = .{ .color_attachment_write_bit = true },
// .old_layout = .undefined,
// .new_layout = .color_attachment_optimal,
// .src_queue_family_index = 0,
// .dst_queue_family_index = 0,
// .image = image,
// .subresource_range = .{
// .aspect_mask = .{ .color_bit = true },
// .base_mip_level = 0,
// .level_count = 1,
// .base_array_layer = 0,
// .layer_count = 1,
// },
// },
// },
// );
//
// D.cmdPipelineBarrier(
// cmd,
// .{ .color_attachment_output_bit = true },
// .{ .bottom_of_pipe_bit = true },
// .{},
// 0,
// null,
// 0,
// null,
// 1,
// &.{
// vk.ImageMemoryBarrier{
// // todo !
// },
// },
// );
// }
// try D.endCommandBuffer(cmd);
// }
}
test "simple test" {
var list = std.ArrayList(i32).init(std.testing.allocator);
defer list.deinit(); // Try commenting this out and see if zig detects the memory leak!
try list.append(42);
try std.testing.expectEqual(@as(i32, 42), list.pop());
}
test "use other module" {
try std.testing.expectEqual(@as(i32, 150), lib.add(100, 50));
}
test "fuzz example" {
const Context = struct {
fn testOne(context: @This(), input: []const u8) anyerror!void {
_ = context;
// Try passing `--fuzz` to `zig build test` and see if it manages to fail this test case!
try std.testing.expect(!std.mem.eql(u8, "canyoufindme", input));
}
};
try std.testing.fuzz(Context{}, Context.testOne, .{});
}