2021-06-11 12:02:28 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
2022-09-26 08:02:51 +00:00
|
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
2021-06-11 12:02:28 +00:00
|
|
|
Date: Mon, 27 Apr 2020 02:48:06 -0700
|
|
|
|
Subject: [PATCH] Reduce MutableInt allocations from light engine
|
|
|
|
|
|
|
|
We can abuse the fact light is single threaded and share an instance
|
|
|
|
per light engine instance
|
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java
|
2021-06-14 05:32:56 +00:00
|
|
|
index 729c4b1763a24bac3c0764bea505555a32e54f57..37d7165dfd17da03428f8dbbbf95aa8005be289c 100644
|
2021-06-11 12:02:28 +00:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java
|
2021-06-14 05:32:56 +00:00
|
|
|
@@ -15,6 +15,7 @@ import org.apache.commons.lang3.mutable.MutableInt;
|
|
|
|
public final class BlockLightEngine extends LayerLightEngine<BlockLightSectionStorage.BlockDataLayerStorageMap, BlockLightSectionStorage> {
|
2021-06-11 12:02:28 +00:00
|
|
|
private static final Direction[] DIRECTIONS = Direction.values();
|
|
|
|
private final BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos();
|
2021-06-14 05:32:56 +00:00
|
|
|
+ private final MutableInt mutableInt = new MutableInt(); // Paper
|
2021-06-11 12:02:28 +00:00
|
|
|
|
|
|
|
public BlockLightEngine(LightChunkGetter chunkProvider) {
|
|
|
|
super(chunkProvider, LightLayer.BLOCK, new BlockLightSectionStorage(chunkProvider));
|
2021-06-14 05:32:56 +00:00
|
|
|
@@ -44,7 +45,7 @@ public final class BlockLightEngine extends LayerLightEngine<BlockLightSectionSt
|
|
|
|
if (direction == null) {
|
2021-06-11 12:02:28 +00:00
|
|
|
return 15;
|
|
|
|
} else {
|
2021-06-14 05:32:56 +00:00
|
|
|
- MutableInt mutableInt = new MutableInt();
|
2021-06-11 12:02:28 +00:00
|
|
|
+ //MutableInt mutableint = new MutableInt(); // Paper - share mutableint, single threaded
|
2021-06-14 05:32:56 +00:00
|
|
|
BlockState blockState = this.getStateAndOpacity(targetId, mutableInt);
|
|
|
|
if (mutableInt.getValue() >= 15) {
|
|
|
|
return 15;
|
2021-06-11 12:02:28 +00:00
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
|
2022-07-27 20:17:18 +00:00
|
|
|
index 56b8f6ac53e7598da4dea2180825242222f86731..ca710a20e8b97341616463f4058b61cf4999af28 100644
|
2021-06-11 12:02:28 +00:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java
|
2022-07-27 20:17:18 +00:00
|
|
|
@@ -15,6 +15,7 @@ import org.apache.commons.lang3.mutable.MutableInt;
|
2021-06-14 05:32:56 +00:00
|
|
|
public final class SkyLightEngine extends LayerLightEngine<SkyLightSectionStorage.SkyDataLayerStorageMap, SkyLightSectionStorage> {
|
2021-06-11 12:02:28 +00:00
|
|
|
private static final Direction[] DIRECTIONS = Direction.values();
|
|
|
|
private static final Direction[] HORIZONTALS = new Direction[]{Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST};
|
2021-06-14 05:32:56 +00:00
|
|
|
+ private final MutableInt mutableInt = new MutableInt(); // Paper
|
2021-06-11 12:02:28 +00:00
|
|
|
|
|
|
|
public SkyLightEngine(LightChunkGetter chunkProvider) {
|
|
|
|
super(chunkProvider, LightLayer.SKY, new SkyLightSectionStorage(chunkProvider));
|
2022-07-27 20:17:18 +00:00
|
|
|
@@ -26,7 +27,7 @@ public final class SkyLightEngine extends LayerLightEngine<SkyLightSectionStorag
|
2021-06-11 12:02:28 +00:00
|
|
|
if (level >= 15) {
|
|
|
|
return level;
|
|
|
|
} else {
|
2021-06-14 05:32:56 +00:00
|
|
|
- MutableInt mutableInt = new MutableInt();
|
2021-06-11 12:02:28 +00:00
|
|
|
+ //MutableInt mutableint = new MutableInt(); // Paper - share mutableint, single threaded
|
2021-06-14 05:32:56 +00:00
|
|
|
BlockState blockState = this.getStateAndOpacity(targetId, mutableInt);
|
|
|
|
if (mutableInt.getValue() >= 15) {
|
|
|
|
return 15;
|