Skip to content

Commit d91d280

Browse files
committed
Ensure fences are deleted in MappedStagingBuffer
If the staging buffer was deleted before the fences were polled, they could be leaked. This may cause resource exhaustion in some cases.
1 parent 5cdd725 commit d91d280

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

common/src/main/java/net/caffeinemc/mods/sodium/client/gl/arena/staging/MappedStagingBuffer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@ private static List<CopyCommand> consolidateCopies(PriorityQueue<CopyCommand> qu
134134

135135
@Override
136136
public void delete(CommandList commandList) {
137+
while (!this.fencedRegions.isEmpty()) {
138+
var region = this.fencedRegions.dequeue();
139+
var fence = region.fence();
140+
fence.sync();
141+
fence.delete();
142+
}
143+
137144
this.mappedBuffer.delete(commandList);
138145
this.fallbackStagingBuffer.delete(commandList);
139146
this.pendingCopies.clear();

0 commit comments

Comments
 (0)