From f3124be7483fa6677bd294a3d4b7816da523ae98 Mon Sep 17 00:00:00 2001 From: RogueLogix Date: Thu, 29 Feb 2024 10:58:20 -0800 Subject: [PATCH] add testing event dispatch to GL33 --- .../roguelogix/quartz/internal/gl33/GL33Core.java | 6 +++++- .../quartz/internal/gl33/GL33FeedbackDrawing.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/roguelogix/quartz/internal/gl33/GL33Core.java b/src/main/java/net/roguelogix/quartz/internal/gl33/GL33Core.java index a7a59cd..b90983b 100644 --- a/src/main/java/net/roguelogix/quartz/internal/gl33/GL33Core.java +++ b/src/main/java/net/roguelogix/quartz/internal/gl33/GL33Core.java @@ -12,6 +12,8 @@ import net.minecraft.client.renderer.RenderType; import net.roguelogix.phosphophyllite.util.NonnullDefault; import net.roguelogix.quartz.DrawBatch; +import net.roguelogix.quartz.Quartz; +import net.roguelogix.quartz.QuartzEvent; import net.roguelogix.quartz.internal.Buffer; import net.roguelogix.quartz.internal.IrisDetection; import net.roguelogix.quartz.internal.QuartzCore; @@ -131,6 +133,8 @@ public void frameStart(PoseStack pMatrixStack, float pPartialTicks, long pFinish drawInfo.deltaNano = deltaNano; drawInfo.partialTicks = pPartialTicks; + Quartz.EVENT_BUS.post(new QuartzEvent.FrameStart()); + GL33FeedbackDrawing.beginFrame(); meshManager.vertexBuffer.as(GL33Buffer.class).flush(); @@ -203,7 +207,7 @@ public void endOpaque() { @Override public void endTranslucent() { - + Quartz.EVENT_BUS.post(new QuartzEvent.FrameEnd()); } @Override diff --git a/src/main/java/net/roguelogix/quartz/internal/gl33/GL33FeedbackDrawing.java b/src/main/java/net/roguelogix/quartz/internal/gl33/GL33FeedbackDrawing.java index ef7c6bd..c4a9419 100644 --- a/src/main/java/net/roguelogix/quartz/internal/gl33/GL33FeedbackDrawing.java +++ b/src/main/java/net/roguelogix/quartz/internal/gl33/GL33FeedbackDrawing.java @@ -3,13 +3,17 @@ import com.mojang.blaze3d.systems.RenderSystem; import it.unimi.dsi.fastutil.objects.*; import net.minecraft.client.renderer.RenderType; +import net.roguelogix.phosphophyllite.util.Pair; import net.roguelogix.quartz.DrawBatch; +import net.roguelogix.quartz.Quartz; import net.roguelogix.quartz.internal.Buffer; import net.roguelogix.quartz.internal.IrisDetection; import net.roguelogix.quartz.internal.QuartzCore; +import net.roguelogix.quartz.internal.QuartzInternalEvent; import net.roguelogix.quartz.internal.common.B3DStateHelper; import net.roguelogix.quartz.internal.gl33.batching.GL33DrawBatch; import net.roguelogix.quartz.internal.gl46.GL46FeedbackDrawing; +import net.roguelogix.quartz.internal.util.PointerWrapper; import net.roguelogix.quartz.internal.util.VertexFormatOutput; import org.joml.Matrix4f; @@ -258,6 +262,14 @@ public static void collectAllFeedback(boolean shadowsEnabled) { RenderSystem.bindTexture(0); } B3DStateHelper.bindVertexArray(0); + + if(QuartzCore.TESTING_ALLOWED && QuartzCore.isTestingRunning()){ + var buffers = new Object2ObjectOpenHashMap>(); + for (RenderType renderType : inUseRenderTypes) { + buffers.put(renderType, new Pair<>(null, 0)); + } + Quartz.EVENT_BUS.post(new QuartzInternalEvent.FeedbackCollected(inUseRenderTypes, buffers)); + } } private static Matrix4f projection;