I understand that Minecraft runs on Java which is very demanding on the CPU (garbage collection and JVM processes), but I still don't understand how FPS is the CPU's responsibility. Shouldn't the CPU handle game logic while the GPU handles rendering the results of that logic asynchronously? Minecraft was developed using OpenGL libraries afterall. But I still see a ton of people saying that upgrading your CPU is more worth it than upgrading your GPU if you want good FPS on Minecraft. What's actually happening under the hood?
The point here is that although CPU and GPU works asynchronously they also work alternately. GPU can't draw what CPU didn't compute yet.
If you have fast CPU and slow GPU then there's no point in computing many frames on CPU in advance, while GPU is still drawing the first one.
If you have slow CPU and fast GPU then the GPU will wait for its job.
Every game is different, some do much work on CPU, some work more in GPU and almost always one of this component will wait for another (but it may change frame-by-frame). In general, if you want 30fps then both your CPU and GPU have to do their job in less than 1/30s.
According to Minecraft specifically:
- It has VERY simple shading and texturing (little work for GPU)
- Uses a lot of geometry (this may become very hard for GPU)
- To optimize GPU drawing it does some magic on geometric data on CPU
Given those points I believe that Minecraft may be CPU-bound.