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 }