minecraft-linux / mcpelauncher-manifest

The main repository for the Linux and Mac OS Bedrock edition Minecraft launcher.
https://minecraft-linux.github.io
GNU General Public License v3.0
985 stars 99 forks source link

Versions 1.20.30+ will not have hardware rendering on older hardware (GLES 3.0 is now required) #933

Open tutacat opened 10 months ago

tutacat commented 10 months ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]te

Describe the solution you'd like Minecraft versions 1.20.31 and up are crashing instantly (on older hardware) Try and find the issue that is causing the crash

Describe alternatives you've considered This may require faking or translating OpenGL ES 3.0, Android 8 Oreo, or 1GB dedicated RAM, which is what the new versions require.

Additional context This issue currently affects all versions 1.20.31.02 and higher.

https://feedback.minecraft.net/hc/en-us/articles/19545277817357#h_01HADK1XDP28QQ5Z9P71NSDAEN

(from above page):

Minimum Supported Mobile Hardware

As Minecraft grows, so must the operating system and hardware that supports it.....

For Android, as of February 2024, devices require greater than 1 GB RAM, run OS 8 (Oreo) or above, and have OpenGL ES 3.0 to run Minecraft.

Please refer to our Minecraft Help Center articles for further details:

Crash log on the left [A.txt // Intel Core 5xx Mobile 1st Gen Core (Arrandale)]; Success on the right [B.txt // AMD 4x50, Zen 2 3rd Gen (Renoir)]

Crash log diff for crash compared with normal function (diffchecker.com)

ChristopherHX commented 10 months ago

How would you increase the GLES version on older Hardware?

ChristopherHX commented 10 months ago

BTW I wan't able to run the game using a intel gma 950 mobile (2008) intel gpu. Software rendering has been no solution for that OpenGL 1.? gpu

The next hardware from my side is ivy bridge from 2012, far more modern

ChristopherHX commented 10 months ago

A max supported Desktop OpenGl 2.1 is not a good starting point for emulating es3 without doing everything in software. A max supported OpenGl ES 2 is neither a good starting point for emulating es3.

You can force swrast in mesa via LIBGL_ALWAYS_SOFTWARE=1 and it will continue, assuming your mesa packages are insalled correctly. Read more about that in https://unix.stackexchange.com/questions/4252/using-software-opengl-rendering-with-x.

swrast always slow and it is not funny playing with it.

tutacat commented 10 months ago

Understandable, that makes sense. I think a good solution is leaving a comment about enabling software rendering (since it's 100% software, it takes a lot of processing, but supports all features), older version, or using newer hardware. Maybe it is worth adding a note about it?

ChristopherHX commented 10 months ago

Optimally we could downgrade to swrast if OpenGLES 3 is not supported and the running game requires es3 to show a warning and continue

By hooking bgfx::fatal?

Does 1.20.50 still expose bgfx::fatal in the crash dump? If not then it's not a good path.

Mojang is good in hideing information, which helps to debug/mod the game as of lately

ChristopherHX commented 10 months ago

I have updated the readme to more explicitly mention this issue https://github.com/minecraft-linux/mcpelauncher-manifest/commit/cb028aba91d036dbf2b0aa53616df31d41a25866.

The ReadMe has already been updated to mention it in the system requirement table with 1.20.10 as max version.

I wasn't shure which game series broke old hardware, so I was more pessimistic with the previous edit.

pjft commented 2 months ago

I've received this warning after updating to 1.20.30, and noticed I was on OpenGL 1.4. I updated OpenGL on my Linux hardware, but it still returns the same. I'm going to try the latest Preview version and see how it behaves, but it's weird because OpenGL does show as 3.0. I'll paste the "About" info here in a while in case it helps.

ChristopherHX commented 2 months ago

1.21.30 mentions a OpenGL ES 3.1 requirement. Just to add that to this issue with a new comment with due date around Spring 2025

Mojang want to remove old code, since the 1.20 deprecation of OpenGL ES 2 it didn't take long now.

However currently are OpenGL ES 3.1 GPU's safe, due to missing OpenGL ES 3.2 render code

Your device will sunset, like the macOS port where it applies to all hardware.

Software rendering would work in all cases, but too bad fps

pjft Please note OpenGL != OpenGL ES, those have unrelated versions numbers. Minecraft Java might use OpenGL, we need OpenGL ES

pjft commented 2 months ago

Oh. Oh my. I'm so sorry for the complete mixup there!

Thanks for spelling out the ES 3.1 requirement - I couldn't find any mention of it anywhere, so I was struggling to figure out what the issue was. Also, I wasn't aware that OpenGL and OpenGL ES had unrelated version numbers. My bad.

I see: on one of my Linux laptops I have Max GLES[23] profile version: 3.0 and in another one I have 3.2, so that explains why one of the laptops received that notification and the other one didn't. I'm assuming this is a hardware restriction, and not something that drivers would help address, is that it?

Oh well.

Still, thank you so much for this project - it's still the main way for us to play Minecraft at home, and it has been working flawlessly. Thank you!