diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/NodeCleaner.java b/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/NodeCleaner.java index a8f401ec..c306fda9 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/NodeCleaner.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/NodeCleaner.java @@ -119,7 +119,6 @@ public class NodeCleaner { int c = (int) (((((double) gm.getUsedCapacity() / gm.geometryCapacity) - 0.75) * 4 * 10) + 1); c = 1; for (int i = 0; i < c; i++) { - glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); this.outputBuffer.fill(this.nodeManager.maxNodeCount - 2);//TODO: maybe dont set to zero?? this.sorter.bind(); @@ -127,8 +126,8 @@ public class NodeCleaner { //TODO: choose whether this is in nodeSpace or section/geometryId space // - glDispatchCompute((this.nodeManager.getCurrentMaxNodeId() + (SORTING_WORKER_SIZE+WORK_PER_THREAD) - 1) / (SORTING_WORKER_SIZE+WORK_PER_THREAD), 1, 1); glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); + glDispatchCompute((this.nodeManager.getCurrentMaxNodeId() + (SORTING_WORKER_SIZE+WORK_PER_THREAD) - 1) / (SORTING_WORKER_SIZE+WORK_PER_THREAD), 1, 1); this.resultTransformer.bind(); glBindBufferRange(GL_SHADER_STORAGE_BUFFER, 0, this.outputBuffer.id, 0, 4 * OUTPUT_COUNT); @@ -137,6 +136,7 @@ public class NodeCleaner { glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 3, this.visibilityBuffer.id); glUniform1ui(0, this.visibilityId); + glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); glDispatchCompute(1, 1, 1); glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java index a32cfaf5..e0a17e19 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java @@ -125,7 +125,6 @@ public class MDICSectionRenderer extends AbstractSectionRenderer(this.thisFrameDownloadList))); this.thisFrameAllocations.clear(); this.thisFrameDownloadList.clear(); @@ -136,6 +135,7 @@ public class DownloadStream { if (!this.frames.peek().fence.signaled()) { break; } + //Release all the allocations from the frame var frame = this.frames.pop(); diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/util/HiZBuffer.java b/src/main/java/me/cortex/voxy/client/core/rendering/util/HiZBuffer.java index 07805fc0..81f18b1d 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/util/HiZBuffer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/util/HiZBuffer.java @@ -8,6 +8,7 @@ import me.cortex.voxy.client.core.rendering.RenderService; import org.lwjgl.opengl.GL11; import static org.lwjgl.opengl.ARBDirectStateAccess.*; +import static org.lwjgl.opengl.ARBShaderImageLoadStore.GL_TEXTURE_FETCH_BARRIER_BIT; import static org.lwjgl.opengl.GL11C.*; import static org.lwjgl.opengl.GL30C.*; import static org.lwjgl.opengl.GL33.glBindSampler; @@ -103,7 +104,7 @@ public class HiZBuffer { cw = Math.max(cw/2, 1); ch = Math.max(ch/2, 1); glViewport(0, 0, cw, ch); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); glTextureBarrier(); - glMemoryBarrier(GL_FRAMEBUFFER_BARRIER_BIT); + glMemoryBarrier(GL_FRAMEBUFFER_BARRIER_BIT|GL_TEXTURE_FETCH_BARRIER_BIT); } glTextureParameteri(this.texture.id, GL_TEXTURE_BASE_LEVEL, 0); glTextureParameteri(this.texture.id, GL_TEXTURE_MAX_LEVEL, 1000);//TODO: CHECK IF ITS -1 or -0 diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/util/UploadStream.java b/src/main/java/me/cortex/voxy/client/core/rendering/util/UploadStream.java index 616c4318..c5f7e76f 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/util/UploadStream.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/util/UploadStream.java @@ -80,14 +80,14 @@ public class UploadStream { public void commit() { - glMemoryBarrier(GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT|GL_BUFFER_UPDATE_BARRIER_BIT); + glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT|GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT|GL_BUFFER_UPDATE_BARRIER_BIT); //Execute all the copies for (var entry : this.uploadList) { glCopyNamedBufferSubData(this.uploadBuffer.id, entry.target.id, entry.uploadOffset, entry.targetOffset, entry.size); } this.uploadList.clear(); - glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT | GL_BUFFER_UPDATE_BARRIER_BIT); + glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT); this.caddr = -1; this.offset = 0;