Skip to content

Commit 76eae9f

Browse files
committed
Improved fine logging
1 parent 5af4f24 commit 76eae9f

7 files changed

Lines changed: 76 additions & 40 deletions

File tree

src/main/java/com/falsepattern/falsetweaks/mixin/mixins/client/threadedupdates/WorldRendererMixin.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
package com.falsepattern.falsetweaks.mixin.mixins.client.threadedupdates;
2525

2626
import com.falsepattern.falsetweaks.mixin.bridge.occlison.WorldRendererMixinBridge;
27+
import com.falsepattern.falsetweaks.modules.debug.DebugLogging;
2728
import com.falsepattern.falsetweaks.modules.occlusion.WorldRendererOcclusion;
2829
import com.falsepattern.falsetweaks.modules.threadedupdates.ICapturableTessellator;
2930
import com.falsepattern.falsetweaks.modules.threadedupdates.IRendererUpdateResultHolder;
3031
import com.falsepattern.falsetweaks.modules.threadedupdates.NeodymiumCompat;
3132
import com.falsepattern.falsetweaks.modules.threadedupdates.ThreadedChunkUpdateHelper;
3233
import com.llamalad7.mixinextras.sugar.Local;
3334
import lombok.val;
34-
import org.spongepowered.asm.mixin.Dynamic;
3535
import org.spongepowered.asm.mixin.Mixin;
3636
import org.spongepowered.asm.mixin.Shadow;
3737
import org.spongepowered.asm.mixin.Unique;
@@ -43,7 +43,6 @@
4343
import org.spongepowered.asm.mixin.injection.Slice;
4444
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
4545

46-
import net.minecraft.client.renderer.Tessellator;
4746
import net.minecraft.client.renderer.WorldRenderer;
4847
import net.minecraft.client.shader.TesselatorVertexState;
4948
import net.minecraft.entity.EntityLivingBase;
@@ -193,7 +192,7 @@ private void addThreadRenderers(EntityLivingBase p_147892_1_, CallbackInfo ci) {
193192
require = 1)
194193
private void notifyDirty(CallbackInfo ci) {
195194
ThreadedChunkUpdateHelper.instance.onWorldRendererDirty((WorldRenderer) (Object) this);
196-
ThreadedChunkUpdateHelper.debugLog(() -> "Renderer: " + ThreadedChunkUpdateHelper.worldRendererToString((WorldRenderer)(Object) this) + " marked dirty");
195+
DebugLogging.debugLog(() -> "Renderer: " + this + " marked dirty");
197196
}
198197

199198
@Inject(method = "markDirty",

src/main/java/com/falsepattern/falsetweaks/modules/debug/Debug.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ public class Debug {
3737
public static boolean shadowOcclusionMask = true;
3838
public static boolean translucencySorting = true;
3939
public static boolean tesrRendering = true;
40-
public static boolean fineLog = false;
41-
public static boolean fineLogTrace = false;
40+
public static boolean fineLogJava = false;
41+
public static boolean fineLogJavaTrace = false;
42+
public static boolean fineLogMegaTrace = false;
4243

4344
public static void init() {
4445
SwingUtilities.invokeLater(Toggler::new);
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* This file is part of FalseTweaks.
3+
*
4+
* Copyright (C) 2022-2024 FalsePattern
5+
* All Rights Reserved
6+
*
7+
* The above copyright notice and this permission notice shall be included
8+
* in all copies or substantial portions of the Software.
9+
*
10+
* FalseTweaks is free software: you can redistribute it and/or modify
11+
* it under the terms of the GNU Lesser General Public License as published by
12+
* the Free Software Foundation, either version 3 of the License, or
13+
* (at your option) any later version.
14+
*
15+
* FalseTweaks is distributed in the hope that it will be useful,
16+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18+
* GNU Lesser General Public License for more details.
19+
*
20+
* You should have received a copy of the GNU Lesser General Public License
21+
* along with FalseTweaks. If not, see <https://www.gnu.org/licenses/>.
22+
*/
23+
24+
package com.falsepattern.falsetweaks.modules.debug;
25+
26+
import com.falsepattern.falsetweaks.Share;
27+
import com.falsepattern.falsetweaks.modules.threadedupdates.ThreadedChunkUpdateHelper;
28+
import lombok.val;
29+
import mega.trace.service.MEGATraceService;
30+
31+
import java.util.function.Supplier;
32+
33+
public class DebugLogging {
34+
public static void debugLog(Supplier<String> msg) {
35+
if (!(Debug.ENABLED && (Debug.fineLogJava || Debug.fineLogJavaTrace || Debug.fineLogMegaTrace))) {
36+
return;
37+
}
38+
val msgVal = msg.get();
39+
40+
if (Debug.fineLogJava || Debug.fineLogJavaTrace) {
41+
if (Debug.fineLogJavaTrace && ThreadedChunkUpdateHelper.isMainThread()) {
42+
Share.log.info(msgVal, new Throwable());
43+
} else {
44+
Share.log.info(msgVal);
45+
}
46+
}
47+
48+
if (Debug.fineLogMegaTrace) {
49+
MEGATraceService.INSTANCE.message(msgVal);
50+
}
51+
}
52+
}

src/main/java/com/falsepattern/falsetweaks/modules/debug/Toggler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
import com.falsepattern.falsetweaks.Compat;
2626
import com.falsepattern.falsetweaks.config.ModuleConfig;
27-
import com.falsepattern.falsetweaks.modules.occlusion.OcclusionCompat;
2827
import lombok.val;
2928

3029
import javax.swing.*;
@@ -53,8 +52,9 @@ public Toggler() {
5352
createToggle("Chunk Baking", Debug.chunkRebaking, x -> Debug.chunkRebaking = x);
5453
createToggle("Translucency sorting", Debug.translucencySorting, x -> Debug.translucencySorting = x);
5554
createToggle("TESR Rendering (Chests, stolen!)", Debug.tesrRendering, x -> Debug.tesrRendering = x);
56-
createToggle("World renderer rebuild logging", Debug.fineLog, x -> Debug.fineLog = x);
57-
createToggle("World renderer rebuild logging stacktraces", Debug.fineLogTrace, x -> Debug.fineLogTrace = x);
55+
createToggle("Java Fine Logging", Debug.fineLogJava, x -> Debug.fineLogJava = x);
56+
createToggle("Java Trace Logging", Debug.fineLogJavaTrace, x -> Debug.fineLogJavaTrace = x);
57+
createToggle("MEGATrace Fine Logging", Debug.fineLogMegaTrace, x -> Debug.fineLogMegaTrace = x);
5858
}
5959

6060
setSize(300, 200);

src/main/java/com/falsepattern/falsetweaks/modules/occlusion/OcclusionHelpers.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
package com.falsepattern.falsetweaks.modules.occlusion;
2424

2525
import com.falsepattern.falsetweaks.Tags;
26+
import com.falsepattern.falsetweaks.modules.debug.DebugLogging;
2627
import com.falsepattern.falsetweaks.modules.occlusion.util.IntStack;
27-
import com.falsepattern.falsetweaks.modules.threadedupdates.ThreadedChunkUpdateHelper;
2828

2929
import net.minecraft.util.EnumFacing;
3030

@@ -51,7 +51,7 @@ public static void init() {
5151
}
5252

5353
public static synchronized void updateArea(int x, int y, int z, int x2, int y2, int z2) {
54-
ThreadedChunkUpdateHelper.debugLog(() -> String.format("Marking Area from[x=%d,y=%d,z=%d] to[x=%d,y=%d,z=%d] for update (deferred)", x, y, z, x2, y2, z2));
54+
DebugLogging.debugLog(() -> String.format("Marking Area from[x=%d,y=%d,z=%d] to[x=%d,y=%d,z=%d] for update (deferred)", x, y, z, x2, y2, z2));
5555

5656
// backwards so it's more logical to extract
5757
deferredAreas.add(z2);

src/main/java/com/falsepattern/falsetweaks/modules/occlusion/OcclusionRenderer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.falsepattern.falsetweaks.api.dynlights.FTDynamicLights;
2727
import com.falsepattern.falsetweaks.config.OcclusionConfig;
2828
import com.falsepattern.falsetweaks.modules.debug.Debug;
29+
import com.falsepattern.falsetweaks.modules.debug.DebugLogging;
2930
import com.falsepattern.falsetweaks.modules.occlusion.interfaces.IRenderGlobalMixin;
3031
import com.falsepattern.falsetweaks.modules.occlusion.shader.ShadowPassOcclusionHelper;
3132
import com.falsepattern.falsetweaks.modules.threadedupdates.ThreadedChunkUpdateHelper;
@@ -225,7 +226,7 @@ private void updateRendererPriorityInQueue(WorldRenderer wr) {
225226
if (isInUpdateList) {
226227
return;
227228
}
228-
ThreadedChunkUpdateHelper.debugLog(() -> "Adding " + ThreadedChunkUpdateHelper.worldRendererToString(wr) + " to priority queue");
229+
DebugLogging.debugLog(() -> "Adding " + wr + " to priority queue");
229230

230231
worldRenderersToUpdateList.add(wr);
231232
updateListModificationCounter++;
@@ -299,7 +300,7 @@ public void handleOffthreadUpdate(int x1, int y1, int z1, int x2, int y2, int z2
299300
}
300301

301302
public void internalMarkBlockUpdate(int x1, int y1, int z1, int x2, int y2, int z2) {
302-
ThreadedChunkUpdateHelper.debugLog(() -> String.format("Marking Area from[x=%d,y=%d,z=%d] to[x=%d,y=%d,z=%d] for update", x1, y1, z1, x2, y2, z2));
303+
DebugLogging.debugLog(() -> String.format("Marking Area from[x=%d,y=%d,z=%d] to[x=%d,y=%d,z=%d] for update", x1, y1, z1, x2, y2, z2));
303304
int xStart = MathHelper.bucketInt(x1, 16);
304305
int yStart = MathHelper.bucketInt(y1, 16);
305306
int zStart = MathHelper.bucketInt(z1, 16);

src/main/java/com/falsepattern/falsetweaks/modules/threadedupdates/ThreadedChunkUpdateHelper.java

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.falsepattern.falsetweaks.config.ModuleConfig;
2929
import com.falsepattern.falsetweaks.config.ThreadingConfig;
3030
import com.falsepattern.falsetweaks.modules.debug.Debug;
31+
import com.falsepattern.falsetweaks.modules.debug.DebugLogging;
3132
import com.falsepattern.falsetweaks.modules.occlusion.*;
3233
import com.falsepattern.falsetweaks.modules.threadexec.FTWorker;
3334
import com.falsepattern.falsetweaks.modules.threadexec.ThreadedTask;
@@ -44,7 +45,6 @@
4445
import it.unimi.dsi.fastutil.ints.IntSet;
4546
import lombok.RequiredArgsConstructor;
4647
import lombok.val;
47-
import mega.trace.service.MEGATraceService;
4848

4949
import net.minecraft.block.Block;
5050
import net.minecraft.block.material.Material;
@@ -66,7 +66,6 @@
6666
import java.util.concurrent.LinkedBlockingDeque;
6767
import java.util.concurrent.atomic.AtomicBoolean;
6868
import java.util.concurrent.atomic.AtomicReference;
69-
import java.util.function.Supplier;
7069

7170
import static com.falsepattern.falsetweaks.modules.occlusion.OcclusionRenderer.*;
7271
import static com.falsepattern.falsetweaks.modules.threadedupdates.MainThreadContainer.MAIN_THREAD;
@@ -108,10 +107,10 @@ public void prepare(List<WorldRenderer> worldRenderersToUpdateList, int updateLi
108107
val wr = front.get(i);
109108
val task = ((IRendererUpdateResultHolder) wr).ft$getRendererUpdateTask();
110109
if (!task.inFinishedQueue) {
111-
debugLog(() -> "Fresh " + worldRendererToString(wr) + " added to back buffer");
110+
DebugLogging.debugLog(() -> "Fresh " + wr + " added to back buffer");
112111
back.add(wr);
113112
} else {
114-
debugLog(() -> "Finished " + worldRendererToString(wr) + " ignored");
113+
DebugLogging.debugLog(() -> "Finished " + wr + " ignored");
115114
((WorldRendererOcclusion) wr).ft$setInUpdateList(false);
116115
}
117116
}
@@ -149,7 +148,7 @@ public WorldRenderer next() {
149148
updatedRenderers.front().add(wr);
150149
updatedRenderersSet.front().add(wr);
151150

152-
debugLog(() -> "Consuming renderer " + worldRendererToString(wr) + " " + worldRendererUpdateTaskToString(wr));
151+
DebugLogging.debugLog(() -> "Consuming renderer " + wr + " " + worldRendererUpdateTaskToString(wr));
153152

154153
return wr;
155154
}
@@ -207,7 +206,7 @@ private static int doChunkUpdateForRenderPass(WorldRenderer wr, UpdateTask task,
207206
for (int z = wr.posZ; z < wr.posZ + 16; ++z) {
208207
for (int x = wr.posX; x < wr.posX + 16; ++x) {
209208
if (task.cancelled) {
210-
debugLog(() -> "Realized renderer " + worldRendererToString(wr) + " is dirty, aborting update");
209+
DebugLogging.debugLog(() -> "Realized renderer " + wr + " is dirty, aborting update");
211210
break BlockLoop;
212211
}
213212
flags = doChunkUpdateForRenderPassBlock(wr, task, chunkcache, tess, pass, renderblocks, x, y, z, flags);
@@ -286,28 +285,12 @@ public static boolean isMainThread() {
286285
return thread == MAIN_THREAD;
287286
}
288287

289-
public static String worldRendererToString(WorldRenderer wr) {
290-
return wr + "(" + wr.posX + ", " + wr.posY + ", " + wr.posZ + ")";
291-
}
292-
293288
private static String worldRendererUpdateTaskToString(WorldRenderer wr) {
294289
UpdateTask task = ((IRendererUpdateResultHolder) wr).ft$getRendererUpdateTask();
295290
return task.result[0].renderedSomething + "";
296291
// TODO + " (" + (task.result[0].renderedQuads == null ? "null" : task.result[0].renderedQuads.getVertexCount()) + ")/" + task.result[1].renderedSomething + " (" + (task.result[1].renderedQuads == null ? "null" : task.result[1].renderedQuads.getVertexCount()) + ")";
297292
}
298293

299-
public static void debugLog(Supplier<String> msg) {
300-
if (Debug.ENABLED && Debug.fineLog) {
301-
val msgVal = msg.get();
302-
if (Debug.fineLogTrace && Thread.currentThread().getName().toLowerCase().contains("client")) {
303-
Share.log.info(msgVal, new Throwable());
304-
} else {
305-
Share.log.info(msgVal);
306-
}
307-
MEGATraceService.INSTANCE.message(msgVal);
308-
}
309-
}
310-
311294
public void init() {
312295
OcclusionHelpers.renderer.ft$setRendererUpdateOrderProvider(rendererUpdateOrderProvider);
313296
OcclusionHelpers.renderer.ft$addRenderGlobalListener(this);
@@ -381,7 +364,7 @@ private void preRendererUpdates(List<WorldRenderer> toUpdateList, int updateLimi
381364
private void updateWorkQueue(List<WorldRenderer> toUpdateList, int updateLimit) {
382365
if (toUpdateList.isEmpty())
383366
return;
384-
debugLog(() -> "Updating " + toUpdateList.size() + " renderers");
367+
DebugLogging.debugLog(() -> "Updating " + toUpdateList.size() + " renderers");
385368
taskQueueUnsorted.getAndSet(new PendingTaskUpdate(new ArrayList<>(toUpdateList), updateLimit));
386369
}
387370

@@ -412,7 +395,7 @@ public void onDirtyRendererChanged(WorldRenderer wr) {
412395
public void onWorldRendererDirty(WorldRenderer wr) {
413396
UpdateTask task = ((IRendererUpdateResultHolder) wr).ft$getRendererUpdateTask();
414397
if (!task.isEmpty()) {
415-
debugLog(() -> "Renderer " + worldRendererToString(wr) + " is dirty, cancelling task");
398+
DebugLogging.debugLog(() -> "Renderer " + wr + " is dirty, cancelling task");
416399
task.cancelled = true;
417400
}
418401
}
@@ -428,7 +411,7 @@ public static boolean renderOffThread(Block block, int renderType) {
428411
* produced by the worker thread to fill them in.
429412
*/
430413
public void doChunkUpdate(WorldRenderer wr, Profiler profiler) {
431-
debugLog(() -> "Starting update of renderer " + worldRendererToString(wr));
414+
DebugLogging.debugLog(() -> "Starting update of renderer " + wr);
432415

433416
UpdateTask task = ((IRendererUpdateResultHolder) wr).ft$getRendererUpdateTask();
434417
if (AGGRESSIVE_NEODYMIUM_THREADING) {
@@ -542,7 +525,7 @@ public void doChunkUpdate(WorldRenderer wr, Profiler profiler) {
542525
} finally {
543526
profiler.endSection();
544527
}
545-
debugLog(() -> "Result of updating " + worldRendererToString(wr) + ": " + worldRendererUpdateTaskToString(wr));
528+
DebugLogging.debugLog(() -> "Result of updating " + wr + ": " + worldRendererUpdateTaskToString(wr));
546529
}
547530

548531
private ChunkCache getChunkCacheSnapshot(WorldRenderer wr) {
@@ -695,7 +678,7 @@ public boolean doWork(Profiler profiler) {
695678

696679
if (task.isEmpty()) {
697680
// No update in progress; add to task queue
698-
debugLog(() -> "Adding " + worldRendererToString(wr) + " to task queue");
681+
DebugLogging.debugLog(() -> "Adding " + wr + " to task queue");
699682
try {
700683
task.chunkCache = getChunkCacheSnapshot(wr);
701684
} catch (Exception ignored) {
@@ -727,7 +710,7 @@ private void runTask(WorldRenderer wr, Profiler profiler) {
727710
doChunkUpdate(wr, profiler);
728711
} catch (Exception e) {
729712
ThreadedClientHooks.threadRenderPass.set(-1);
730-
Share.log.debug("Failed to update chunk " + worldRendererToString(wr), e);
713+
Share.log.debug("Failed to update chunk " + wr, e);
731714
if (AGGRESSIVE_NEODYMIUM_THREADING) {
732715
NeodymiumCompat.safeDiscardTask(task);
733716
}

0 commit comments

Comments
 (0)