Less stupid workaround

Should fix compatibility with iris

Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
This commit is contained in:
Username404-59 2025-04-20 17:31:36 +02:00
parent 7b310399cf
commit 8c526473e1
Signed by: Username404-59
GPG Key ID: 7AB361FBB257A5D1
5 changed files with 10 additions and 44 deletions

View File

@ -1,38 +0,0 @@
package fr.username404.snowygui.mixins;
import com.mojang.blaze3d.opengl.*;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.systems.RenderPass;
import com.mojang.blaze3d.textures.GpuTexture;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import static fr.username404.snowygui.misc.CreateRenderPassRewriteKt.createRenderPassRewrite;
import java.util.OptionalDouble;
import java.util.OptionalInt;
@Mixin(GlCommandEncoder.class)
abstract class CursedRenderPassMixin {
@Shadow private boolean inRenderPass;
@Shadow @Final private GlDevice device;
@Shadow @Nullable private RenderPipeline lastPipeline;
/**
* @author Username404-59
* @reason war crimes- I REGRET NOTHING
*/
@Overwrite
public RenderPass createRenderPass(GpuTexture gpuTexture, OptionalInt optionalInt, @Nullable GpuTexture gpuTexture2, OptionalDouble optionalDouble) {
this.inRenderPass = false; // VIP access 😈
int framebufferId = ((GlTexture)gpuTexture).getFbo(this.device.directStateAccess(), gpuTexture2);
createRenderPassRewrite(framebufferId, gpuTexture, optionalInt, gpuTexture2, optionalDouble);
this.lastPipeline = null;
return new GlRenderPass((GlCommandEncoder) (Object) this, gpuTexture2 != null);
};
}

View File

@ -2,6 +2,7 @@ package fr.username404.snowygui.utils
import com.mojang.blaze3d.buffers.BufferType
import com.mojang.blaze3d.buffers.BufferUsage
import com.mojang.blaze3d.opengl.GlCommandEncoder
import com.mojang.blaze3d.opengl.GlStateManager
import com.mojang.blaze3d.pipeline.RenderPipeline
import com.mojang.blaze3d.pipeline.RenderTarget
@ -55,12 +56,14 @@ object RenderingUtil {
val builder = Tesselator.getInstance().begin(mode, renderPipeline.vertexFormat)
bufferBuilderConsumer(builder)
builder.buildOrThrow().use { meshData ->
RenderSystem.getDevice().createCommandEncoder().createRenderPass(
val encoder = RenderSystem.getDevice().createCommandEncoder() as GlCommandEncoder
encoder.createRenderPass(
renderTarget.colorTexture!!,
OptionalInt.empty(),
renderTarget.depthTexture,
OptionalDouble.empty()
).use { renderPass ->
encoder.inRenderPass = false;
RenderSystem.getDevice().createBuffer(
{ name }, BufferType.VERTICES, BufferUsage.DYNAMIC_WRITE, meshData.vertexBuffer()
).use { buffer ->
@ -74,6 +77,7 @@ object RenderingUtil {
uniformAndSamplerConsumer?.invoke(renderPass)
renderPass.drawIndexed(0, meshData.drawState().indexCount())
}
encoder.inRenderPass = false;
}
}
}

View File

@ -3,4 +3,7 @@ accessWidener v2 named
accessible field net/minecraft/client/OptionInstance value Ljava/lang/Object;
mutable field net/minecraft/client/OptionInstance value Ljava/lang/Object;
accessible field net/minecraft/client/gui/GuiGraphics bufferSource Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;
accessible field net/minecraft/client/gui/GuiGraphics bufferSource Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;
accessible field com/mojang/blaze3d/opengl/GlCommandEncoder inRenderPass Z
mutable field com/mojang/blaze3d/opengl/GlCommandEncoder inRenderPass Z

View File

@ -3,7 +3,6 @@
"package": "fr.username404.snowygui.mixins",
"compatibilityLevel": "JAVA_18",
"client": [
"CursedRenderPassMixin",
"EndTickMixin",
"TitleScreenMixin",
"KeysAccessor",

View File

@ -2,9 +2,7 @@
"required": false,
"package": "fr.username404.snowygui.mixins",
"compatibilityLevel": "JAVA_21",
"client": [
"CursedRenderPassMixin"
],
"client": [],
"injectors": {
"defaultRequire": 1
},