lib/gpalloc/src/cache/transfer.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2 const size_class = @import("../root.zig").class;
3
4 pub const capacity: u16 = 2048;
5 pub const target_bytes: usize = 2 * 1024 * 1024;
6
7 pub fn classLimit(class_index: usize) u16 {
8 const class_size = size_class.size(class_index);
9 const by_bytes = @max(@as(usize, 1), target_bytes / class_size);
10 return @intCast(@min(capacity, by_bytes));
11 }
12
13 test "transfer class limits match byte and slot caps" {
14 for (size_class.sizes, 0..) |class_size, class_index| {
15 const by_bytes = @max(@as(usize, 1), target_bytes / class_size);
16 const expected: u16 = @intCast(@min(capacity, by_bytes));
17 try std.testing.expectEqual(expected, classLimit(class_index));
18 }
19 }