Skip to content

Commit 845e86b

Browse files
committed
Use VertexBuffer usage to determine memory type
1 parent e76ded5 commit 845e86b

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

src/main/java/net/vulkanmod/mixin/render/vertex/VertexBufferM.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class VertexBufferM {
2020

2121
@Inject(method = "<init>", at = @At("RETURN"))
2222
private void constructor(VertexBuffer.Usage usage, CallbackInfo ci) {
23-
vbo = new VBO();
23+
vbo = new VBO(usage);
2424
}
2525

2626
@Redirect(method = "<init>", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;_glGenBuffers()I"))

src/main/java/net/vulkanmod/render/VBO.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
import net.vulkanmod.interfaces.ShaderMixed;
1010
import net.vulkanmod.vulkan.Renderer;
1111
import net.vulkanmod.vulkan.VRenderSystem;
12-
import net.vulkanmod.vulkan.memory.AutoIndexBuffer;
13-
import net.vulkanmod.vulkan.memory.IndexBuffer;
14-
import net.vulkanmod.vulkan.memory.MemoryTypes;
15-
import net.vulkanmod.vulkan.memory.VertexBuffer;
12+
import net.vulkanmod.vulkan.memory.*;
1613
import net.vulkanmod.vulkan.shader.GraphicsPipeline;
1714
import net.vulkanmod.vulkan.shader.Pipeline;
1815
import net.vulkanmod.vulkan.texture.VTextureSelector;
@@ -22,6 +19,7 @@
2219

2320
@Environment(EnvType.CLIENT)
2421
public class VBO {
22+
private final MemoryType memoryType;
2523
private VertexBuffer vertexBuffer;
2624
private IndexBuffer indexBuffer;
2725

@@ -31,7 +29,9 @@ public class VBO {
3129

3230
private boolean autoIndexed = false;
3331

34-
public VBO() {}
32+
public VBO(com.mojang.blaze3d.vertex.VertexBuffer.Usage usage) {
33+
this.memoryType = usage == com.mojang.blaze3d.vertex.VertexBuffer.Usage.STATIC ? MemoryTypes.GPU_MEM : MemoryTypes.HOST_MEM;
34+
}
3535

3636
public void upload(MeshData meshData) {
3737
MeshData.DrawState parameters = meshData.drawState();
@@ -51,7 +51,7 @@ private void uploadVertexBuffer(MeshData.DrawState parameters, ByteBuffer data)
5151
if (this.vertexBuffer != null)
5252
this.vertexBuffer.freeBuffer();
5353

54-
this.vertexBuffer = new VertexBuffer(data.remaining(), MemoryTypes.GPU_MEM);
54+
this.vertexBuffer = new VertexBuffer(data.remaining(), this.memoryType);
5555
this.vertexBuffer.copyToVertexBuffer(parameters.format().getVertexSize(), parameters.vertexCount(), data);
5656
}
5757
}

0 commit comments

Comments
 (0)