diff --git a/src/main/java/me/cortex/voxy/client/VoxyClient.java b/src/main/java/me/cortex/voxy/client/VoxyClient.java index c2ad1803..aa070675 100644 --- a/src/main/java/me/cortex/voxy/client/VoxyClient.java +++ b/src/main/java/me/cortex/voxy/client/VoxyClient.java @@ -29,6 +29,11 @@ public class VoxyClient implements ClientModInitializer { BudgetBufferRenderer.init(); VoxyCommon.setInstanceFactory(VoxyClientInstance::new); + + if (!Capabilities.INSTANCE.subgroup) { + Logger.warn("GPU does not support subgroup operations, expect some performance degradation"); + } + } else { Logger.error("Voxy is unsupported on your system."); } diff --git a/src/main/java/me/cortex/voxy/client/core/gl/Capabilities.java b/src/main/java/me/cortex/voxy/client/core/gl/Capabilities.java index 95e3b8a0..9b6e9584 100644 --- a/src/main/java/me/cortex/voxy/client/core/gl/Capabilities.java +++ b/src/main/java/me/cortex/voxy/client/core/gl/Capabilities.java @@ -24,10 +24,12 @@ public class Capabilities { public final boolean compute; public final boolean indirectParameters; public final boolean isIntel; + public final boolean subgroup; public Capabilities() { var cap = GL.getCapabilities(); this.compute = cap.glDispatchComputeIndirect != 0; + this.subgroup = cap.GL_KHR_shader_subgroup; this.indirectParameters = cap.glMultiDrawElementsIndirectCountARB != 0; this.repFragTest = cap.GL_NV_representative_fragment_test; this.meshShaders = cap.GL_NV_mesh_shader;