Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
5539d76
migrate gl buffer arena to be generated by a central instance to make…
douira Dec 18, 2025
84bcb05
young gen buffer handling
douira Dec 20, 2025
1593980
fix crashes when f3 is open and arenas are gone
douira Dec 20, 2025
3dc77da
use tree list to track free segments
douira Dec 20, 2025
c664604
more assertion
douira Dec 20, 2025
f40a1fe
fix bugs, improve names
douira Dec 20, 2025
1a30b72
TreeMap has been profiled to be much faster
douira Dec 20, 2025
e027df9
rename to shared arena
douira Dec 20, 2025
b418b3e
use multiple shared buffers
douira Dec 21, 2025
0341c3e
split free tracking into a separate class
douira Dec 28, 2025
b78651b
notes on defragmentation
douira Dec 29, 2025
193f8a4
detect best shared arena to place region correctly
douira Dec 29, 2025
58d7216
buffer visualization
douira Dec 29, 2025
4b9ecdd
Incremental defragmentation
douira Dec 30, 2025
3c28590
defragment towards second biggest segment to reduce number of copies …
douira Dec 30, 2025
2d521cd
improve fragmentation measure, show total defrag copies and volume, m…
douira Dec 30, 2025
91065ec
renames for clarity
douira Dec 30, 2025
e61f811
limit copy and byte budget for defragmenting
douira Dec 30, 2025
7a3fa37
refactor defrag code for moving free spaces towards each other
douira Dec 30, 2025
f3ce1c9
improve heuristics to reduce defrag effort when not needed
douira Dec 30, 2025
82cf599
use 32mib index arena by default
douira Dec 30, 2025
cfc711f
update only the segments that changed when defragmenting
douira Dec 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package net.caffeinemc.mods.sodium.client.gl.arena;

import net.caffeinemc.mods.sodium.client.gl.buffer.GlBuffer;
import net.caffeinemc.mods.sodium.client.gl.device.CommandList;

public interface AllocatorBase {
long getDeviceUsedMemory();

long getDeviceAllocatedMemory();

void free(GlBufferSegment entry);

void deleteSingleOwner(CommandList commands);

boolean isEmpty();

GlBuffer getBufferObject();
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Loading