mojira.dev
MC-295893

Significant performance regressions with vertex/index buffer uploads

As part of 1.21.5’s rendering changes, the game stopped resizing and recreating the data inside of vertex and index buffers using glBufferData each time they needed to be uploaded and began to instead update the buffer’s data via glBufferSubData.

The problem is that on macOS (and potentially with other systems and drivers), the pipeline gets flushed when glBufferSubData is used which forces rendering to wait until that operation has completed and flushing the pipeline is very slow. I’ve observed this resulting in the loss of around 50-75% of my FPS depending on how frequently the vertex and index buffers are being uploaded. This issue can be especially slow with rendering the HUD as that can require that the vertex and index buffers be uploaded frequently for being drawn.

Code Analysis
The code responsible for uploading vertex and index buffers is located at GlCommandEncoder#writeToBuffer in Mojmap.

Inside this method there are three paths available for the given buffer to be uploaded, the first one uses glBufferSubData, the second uses glBufferData, and the third path uses both. Prior to 1.21.5 the second path was chosen for uploading the given buffer which avoids this issue, now due to 1.21.5’s changes in the rendering pipeline, the first path using glBufferSubData is the chosen one which triggers this performance regression.

Fix
The old method of simply resizing and recreating the vertex/index buffer data when uploading it does not force the pipeline to be flushed, thus reverting this change or providing a workaround for affected systems is enough to resolve the significant performance regressions caused by this issue.

Environment

MacOS 15.3.2 with M1 Pro chip

Linked issues

MC-295889 1.21.5 degrades performance Resolved MC-295978 Significant drop FPS on newest update Resolved MC-296013 Major Lag in version 1.21.5 Resolved MC-296005 Major lag after Update 1.21.5 Resolved MC-296126 Significant performance regression in 1.21.5 compared to 1.21.4 Resolved

Attachments

Comments 98

I will mark this as Plausible since I can confirm that 1.21.5 does seem to bring a performance regression (in the screenshots below, it’s roughly 15-20%, but I would believe it could be much higher depending on the situation).

2025-03-26_11.47.40.png
2025-03-26_11.49.13.png

The performance tanked a ridiculous amount for me, I don't feel like I can enjoy the game as much while it continues to run this poorly.

I'm running 1.21.5 on an Apple M3 Pro MacBook Pro with 18GB RAM and the game is almost unplayable for me now when I am in my single player base near a lot of entities. On 1.21.4, I had absolutely no problems, but now, I have very poor FPS. Others are reporting this issue running 1.21.5 on Apple Silicon in this Reddit thread.

Yes, I am the person who made the reddit thread above, I was making 130fps generally on realms, now dropping to, like the post and video within shows, 8/9fps… This is absurd… This “upgrade” has only been a “downgrade” for me

1.21.4 ran smooth as butter for me with “fancy” settings throughout. Since 1.21.5 the game is literally unplayable, even with everything switched down to lowest settings. This is on Java Realms with no mods/shaders/resource packs.

Happy to provide further info as needed.

88 more comments

Hey reporting back and just like Liv, the only reason I made a Mojira account was to vote on this issue. The issue itself for me is that using any shaders from Iris in my use-case alongside performance mods that would catapult me over 170fps easily in 1.21.4 has seen a massive regression in performance after 1.21.5 and even on 1.21.8 – now with those same mods and shaders, I’m lucky to be getting my FPS in the low 89 - 103 range.

According to the Iris devs, it has to do with Minecraft Java’s rendering pipeline being completely re-worked (probably due to vibrant visuals prep, but again, I’m definitely not an expert on the topic so please correct me if I’m wrong). Is this something Mojang devs and engineers are actively trying to fix and can we expect this significant drop in FPS to be an issue that’s addressed and fixed in 1.21.9?

There is no point to discussing issues with modded Minecraft here, Mojira is strictly for tracking vanilla issues. That said, 25w31a improved performance substantially for me and many others, so most if not all systems which saw a regression in the 1.21.5 snapshots will see at least some of that loss recovered in 1.21.9.

Still present on 1.21.10 - Continues to cap the framerate to half of my refresh rate (100fps, when refresh rate is 200Hz). If I look into the sky, the framerate returns to normal (200 steady frames).

I can confirm, the issue persists for me on Windows. GPU usage on 1.21.10 averages between 90-100% even in non-intensive environments, with an FPS reduction of 30FPS when compared to GPU usage on 1.21.4 ranging between 60-80% on 1.21.4 while providing a steady 144 fps with the same settings across both versions. I’ve given up hope that the issue will ever be resolved, as the last true update we got was from July saying it was a big refactor that did not fit into a previous release. It appears this issue’s been swept under the rug by Mojang and it seems very unlikely they will revert to the old rendering methods prior to 1.21.5, so unfortunately I’ve just decided to stop playing Minecraft altogether. Hopefully they’re able to eventually fix it for you guys!

This issue is not swept under the rug. We are very aware of it.
But no, we will not revert to the old rendering methods, because it would mean cancelling Vibrant Visuals for Java.
We plan to move forward from here, not backwards. This was partially addressed, but not fully solved, in 25w31a, and it will be fully solved at some point, when the rendering tech is in a better shape to do so. We are doing big refactoring now in preparation for Vibrant Visuals and we will get to fixing this.
We are also delivering other optimizations from time to time, slowly compensating for this. I the end, we expect the game to be faster than originally. It already is on the majority of devices that is not affected by this specific issue.

AzureAaron

(Unassigned)

Plausible

Platform

Important

Performance, Rendering

1.21.5, 25w15a, 25w16a, 25w17a, 25w18a, ..., 1.21.6, 1.21.7 Release Candidate 1, 1.21.7, 1.21.8 Release Candidate 1, 1.21.8

Retrieved