Engine-Room / Flywheel

A modern engine for modded Minecraft.
MIT License
205 stars 52 forks source link

Flywheel+Vulkanmod compatibility issues #207

Open sa1672ndo opened 9 months ago

sa1672ndo commented 9 months ago

Describe the Bug

Flywheel crashes due to failing mixin's if VulkanMod is active.

Reproduction Steps

1.install create fabric and VukanMod 2.add them to ur mods folder 3.launch mc and watch how the mixin fail.

Expected Result

Flywheel's mixin should not fail and mc should boot up without any issues.

Screenshots and Videos

There's nothing to screenshot other than the log file, but I think it's not gonna be more useful than the log I sent in the pastebin.

Crash Report or Log

https://pastebin.com/zifszcJA

Operating System

Android 13(this also affects other platforms)

What is your GPU?

Adreno 618(having a desktop gpu won't make mixins magically work)

Mod Version

0.5.1

Minecraft Version

1.20.1

Loader Version

fabric 0.14.23

Other Mods

create-fabric-0.5.1-d-build.1161+mc1.20.1.jar VulkanMod_1.20.1-0.3.4_v5_arm64.jar(android specific build, but this issue also happened on mainline build for x86_64 systems) fabric-api-0.89.0+1.20.1.jar

Additional Context

VulkanMod results in a massive performance boost on weak/mobile devices compared to optifine/sodium, That's why you should add support for it. Just think about all of the android children who want to play create on their 100 dollar phone that can't run Minecraft java 1.20.X at stable 30 fps without VulkanMod.

Kneelawk commented 8 months ago

This sounds like a fundamental incompatibility. Both of these mods need to access the GPU directly but use incompatible APIs to do so. VulkanMod rewrites the game's underlying engine to use Vulkan instead of OpenGL. Flywheel, on the other hand, uses OpenGL more efficiently to speed up rendering. If it weren't for the mixin conflict, your game would probably segfault due to Flywheel attempting to access OpenGL context in a Vulkan environment.

Ideally, VulkanMod would implement the Flywheel API itself, becoming its own Flywheel backend.