Paladin's Furniture

Paladin's Furniture

7M Downloads

1.4 is incompatible with VulkanMod because of custom loading screen

VisualEhrmanntraut opened this issue ยท 13 comments

commented

Bug Description

the new loading screen in the asset generation does not work with VulkanMod because there is no OpenGL context

Reproduction Steps

add vulkanmod
add paladin's furniture
boot game with no caches
observe crash

Log File

[18:28:21] [Render thread/INFO]: Starting PFM Asset Generation
FATAL ERROR in native method: Thread[#1,Render thread,10,main]: No context is current or a function that is not available in the current context was called. The JVM will abort execution.
	at org.lwjgl.opengl.GL20C.glCreateShader(Native Method)
	at org.lwjgl.opengl.GL20.glCreateShader(GL20.java:230)
	at com.unlikepaladin.pfm.client.screens.overlay.GLText._gltCreateText2DShader(GLText.java:1108)
	at com.unlikepaladin.pfm.client.screens.overlay.GLText.gltInit(GLText.java:1001)
	at com.unlikepaladin.pfm.client.screens.overlay.GLText.<init>(GLText.java:998)
	at com.unlikepaladin.pfm.client.screens.overlay.PFMGeneratingOverlay.<init>(PFMGeneratingOverlay.java:62)
	at com.unlikepaladin.pfm.runtime.ClientOverlaySetter.setOverlayToPFMOverlay(ClientOverlaySetter.java:12)
	at com.unlikepaladin.pfm.runtime.PFMAssetGenerator.run(PFMAssetGenerator.java:80)
	at com.unlikepaladin.pfm.runtime.PFMRuntimeResources.prepareAndRunAssetGen(PFMRuntimeResources.java:116)
	at com.unlikepaladin.pfm.client.screens.widget.PFMOptionListWidget.lambda$new$0(PFMOptionListWidget.java:72)
	at com.unlikepaladin.pfm.client.screens.widget.PFMOptionListWidget$$Lambda/0x00007ff0032772a0.onPress(Unknown Source)
	at net.minecraft.class_4185.method_25306(class_4185.java:96)
	at net.minecraft.class_4264.method_25348(class_4264.java:43)
	at net.minecraft.class_339.method_25402(class_339.java:141)
	at com.unlikepaladin.pfm.client.screens.widget.PFMOptionListWidget$ButtonEntry.method_25402(PFMOptionListWidget.java:260)
	at net.minecraft.class_4069.method_25402(class_4069.java:43)
	at net.minecraft.class_9017.method_25402(class_9017.java:57)
	at net.minecraft.class_4069.method_25402(class_4069.java:43)
	at net.minecraft.class_312.mixinextras$bridge$method_25402$80(class_312.java)
	at net.minecraft.class_312$$Lambda/0x00007ff00323ec10.call(Unknown Source)
	at net.minecraft.class_312.wrapOperation$zdn000$architectury$onGuiMouseClicked(class_312.java:2085)
	at net.minecraft.class_312.mixinextras$bridge$wrapOperation$zdn000$architectury$onGuiMouseClicked$84(class_312.java)
	at net.minecraft.class_312$$Lambda/0x00007ff00323ee30.call(Unknown Source)
	at net.minecraft.class_312.wrapOperation$dhb000$fabric-screen-api-v1$invokeMouseClickedEvents(class_312.java:5545)
	at net.minecraft.class_312.method_1601(class_312.java:114)
	at net.minecraft.class_312.method_22686(class_312.java:215)
	at net.minecraft.class_312$$Lambda/0x00007ff003237890.run(Unknown Source)
	at net.minecraft.class_1255.execute(class_1255.java:110)
	at net.minecraft.class_312.method_22684(class_312.java:215)
	at net.minecraft.class_312$$Lambda/0x00007ff002d61dc0.invoke(Unknown Source)
	at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43)
	at org.lwjgl.system.JNI.invokeV(Native Method)
	at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509)
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(RenderSystem.java:186)
	at net.minecraft.class_310.method_1523(class_310.java:1364)
	at net.minecraft.class_310.method_1514(class_310.java:922)
	at net.minecraft.client.main.Main.main(Main.java:267)
	at java.lang.invoke.LambdaForm$DMH/0x00007ff001004800.invokeStaticInit([email protected]/LambdaForm$DMH)
	at java.lang.invoke.LambdaForm$MH/0x00007ff001005000.invokeExact_MT([email protected]/LambdaForm$MH)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at java.lang.invoke.LambdaForm$DMH/0x00007ff001004800.invokeStaticInit([email protected]/LambdaForm$DMH)
	at java.lang.invoke.LambdaForm$MH/0x00007ff001005000.invokeExact_MT([email protected]/LambdaForm$MH)
	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:105)
	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
	at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)
Process crashed with exitcode 6.
commented

well this is annoying, guess I can disable the screen if vulkanmod is present

commented

That'll do for now, I guess.

commented

Should be fixed on 1.4.2

commented

@UnlikePaladin it is not fixed, I also specifically set disableGeneratingScreen.

java.lang.NullPointerException: Cannot invoke "org.lwjgl.vulkan.VkCommandBuffer.getCapabilities()" because "commandBuffer" is null
	at knot//org.lwjgl.vulkan.VK10.nvkCmdPipelineBarrier(VK10.java:15546)
	at knot//org.lwjgl.vulkan.VK10.vkCmdPipelineBarrier(VK10.java:15689)
	at knot//net.vulkanmod.vulkan.texture.VulkanImage.transitionLayout(VulkanImage.java:371)
	at knot//net.vulkanmod.vulkan.texture.VulkanImage.transitionLayout(VulkanImage.java:346)
	at knot//net.vulkanmod.vulkan.texture.VulkanImage.transitionImageLayout(VulkanImage.java:340)
	at knot//net.vulkanmod.vulkan.texture.VulkanImage.transitionImageLayout(VulkanImage.java:274)
	at knot//net.vulkanmod.vulkan.framebuffer.RenderPass.beginRenderPass(RenderPass.java:141)
	at knot//net.vulkanmod.vulkan.framebuffer.Framebuffer.beginRenderPass(Framebuffer.java:121)
	at knot//net.vulkanmod.vulkan.pass.DefaultMainPass.rebindMainTarget(DefaultMainPass.java:105)
	at knot//net.minecraft.class_6364.method_1235(class_6364.java:534)
	at knot//com.unlikepaladin.pfm.runtime.ClientOverlaySetter.updateScreen(ClientOverlaySetter.java:27)
	at knot//com.unlikepaladin.pfm.runtime.PFMAssetGenerator.run(PFMAssetGenerator.java:96)
	at knot//com.unlikepaladin.pfm.runtime.PFMRuntimeResources.prepareAndRunAssetGen(PFMRuntimeResources.java:116)
	at knot//net.fabricmc.fabric.impl.resource.loader.ModResourcePackCreator$Anonymous$666feae2472f4521909f40972b85f2a2.lambda$open$0(PFMModResourcePackCreatorMixin.java:44)
	at knot//com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:200)
	at knot//com.unlikepaladin.pfm.client.PathPackRPWrapper.method_14406(PathPackRPWrapper.java:56)
	at knot//net.minecraft.class_6861.method_41275(class_6861.java:31)
	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:289)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:636)
	at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:291)
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:656)
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:662)
	at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:667)
	at knot//net.minecraft.class_6861.<init>(class_6861.java:31)
	at knot//net.minecraft.class_3304.method_18232(class_3304.java:46)
	at knot//net.minecraft.class_310.<init>(class_310.java:704)
	at knot//net.minecraft.client.main.Main.main(Main.java:250)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:105)
	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
	at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)
commented

That stacktrace looks like a vulkan mod thing, it crashed while updating the screen in vulkan mod code. Go open a report on their repo, there is not much I can do there.

commented

but it only happens with version 1.4+ of this mod, it was fine in 1.3 which did not have this specific feature

commented

You'd have to ask the Vkmod dev team :p

commented

I'll see, it's not too important, thanks for making this cool mod

commented

I mean as a workaround you can just let it generate things without VulkanMod and then add it back in, I know it's not ideal :/

commented

Yes but it's crashing when it tries to update the screen, data and asset gen were reworked to not lock up the whole game and instead process in the background while it updates the screen, disabling the config tells it to not show my screen which it is correctly avoiding. However it is crashing but now in Vulkan Mod code when Vanilla tries to redraw the screen. This is out of my hands.

commented

Looking at it closer, I think the reason the crash happens is because the overlay is updated earlier than expected

commented

Which is something that has to be fixed on VulkanMod's side... There quite literally is no overlay being set, it avoids the entire block if VKMod is present

commented

I wasn't disagreeing per se, I am not sure if the reason just happens to be that vanilla renderer has null checks and this particular place in vkmod doesn't have any