From 2bbc7a8999cea9ae0a5614abe8bb8d9d956858b6 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Thu, 19 Jun 2025 12:45:21 +1000 Subject: [PATCH] change fence query --- .../java/me/cortex/voxy/client/core/gl/GlFence.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/me/cortex/voxy/client/core/gl/GlFence.java b/src/main/java/me/cortex/voxy/client/core/gl/GlFence.java index 4477e33e..4f5514e8 100644 --- a/src/main/java/me/cortex/voxy/client/core/gl/GlFence.java +++ b/src/main/java/me/cortex/voxy/client/core/gl/GlFence.java @@ -1,6 +1,7 @@ package me.cortex.voxy.client.core.gl; import me.cortex.voxy.common.util.TrackedObject; +import org.lwjgl.system.MemoryUtil; import static org.lwjgl.opengl.GL32.*; @@ -12,13 +13,24 @@ public class GlFence extends TrackedObject { this.fence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); } + private static final long SCRATCH = MemoryUtil.nmemCalloc(1,4); + public boolean signaled() { if (!this.signaled) { + /* int ret = glClientWaitSync(this.fence, 0, 0); if (ret == GL_ALREADY_SIGNALED || ret == GL_CONDITION_SATISFIED) { this.signaled = true; } else if (ret != GL_TIMEOUT_EXPIRED) { throw new IllegalStateException("Poll for fence failed, glError: " + glGetError()); + }*/ + MemoryUtil.memPutInt(SCRATCH, -1); + nglGetSynciv(this.fence, GL_SYNC_STATUS, 1, 0, SCRATCH); + int val = MemoryUtil.memGetInt(SCRATCH); + if (val == GL_SIGNALED) { + this.signaled = true; + } else if (val != GL_UNSIGNALED) { + throw new IllegalStateException("Unknown data from glGetSync: "+val); } } return this.signaled;