Skip to content

Commit 7235be7

Browse files
committed
working on yet another rewrite of the mesh system
1 parent b35e045 commit 7235be7

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.jme3.vulkan.buffers;
2+
3+
import com.jme3.vulkan.devices.LogicalDevice;
4+
import com.jme3.vulkan.memory.MemoryProp;
5+
import com.jme3.vulkan.memory.MemorySize;
6+
import com.jme3.vulkan.util.Flag;
7+
import org.lwjgl.PointerBuffer;
8+
import org.lwjgl.system.MemoryUtil;
9+
10+
import java.nio.ByteBuffer;
11+
12+
@Deprecated
13+
public class OldPersistentBuffer extends BasicVulkanBuffer {
14+
15+
private final PointerBuffer mappedAddress = MemoryUtil.memCallocPointer(1);
16+
private PointerBuffer regionAddress;
17+
private ByteBuffer regionBuffer;
18+
19+
public OldPersistentBuffer(LogicalDevice<?> device, MemorySize size) {
20+
super(device, size);
21+
}
22+
23+
@Override
24+
public PointerBuffer map(int offset, int size) {
25+
if (offset > 0) {
26+
mappedAddress.put(0, MemoryUtil.memAddress(regionBuffer, offset));
27+
} else {
28+
mappedAddress.put(0, regionAddress.get(0));
29+
}
30+
return mappedAddress;
31+
}
32+
33+
@Override
34+
public void unmap() {}
35+
36+
@Override
37+
public Runnable createNativeDestroyer() {
38+
Runnable sup = super.createNativeDestroyer();
39+
return () -> {
40+
sup.run();
41+
MemoryUtil.memFree(mappedAddress);
42+
};
43+
}
44+
45+
@Override
46+
public Builder build() {
47+
return new Builder();
48+
}
49+
50+
public class Builder extends BasicVulkanBuffer.Builder {
51+
52+
public Builder() {
53+
memFlags = Flag.of(MemoryProp.HostVisible, MemoryProp.HostCoherent);
54+
}
55+
56+
@Override
57+
public void build() {
58+
if (!memFlags.contains(MemoryProp.HostVisible)) {
59+
throw new IllegalArgumentException("Memory must be host visible.");
60+
}
61+
super.build();
62+
regionAddress = getMemory().map(0, size().getBytes());
63+
regionBuffer = regionAddress.getByteBuffer(0, size().getBytes());
64+
}
65+
66+
}
67+
68+
}

0 commit comments

Comments
 (0)