What exactly is VRAM used for?

My laptop has a nice GPU with dedicated video RAM. But I've noticed while playing Minecraft that the computer doesn't seem to be using it for anything. Only about 100 MB get used at all according to the Windows Task Manager, while it eats up about half my regular RAM.

I had thought that VRAM would be used for storing models and textures and stuff, which would reduce the demand on regular RAM; if that's true, the textures and models must be far smaller than I'd thought. (note that this is a heavily modded install, with much more complex models and textures than your standard Minecraft.)

If it's not true, what is VRAM used for? Is there any way I can get my computer to make better use of it?


Solution 1:

Video RAM is specifically designed to store anything that is necessary to render a frame of video. When gaming, this includes textures, models, and other graphics-specific data like shader information and lighting maps. Generally, none of this data is stored in main system RAM as you alluded to, although VRAM is not specifically designed to reduce demand on regular RAM.

Minecraft is a bit of a different beast than most games. I'd assume you're playing the Java version for PC. Java is a (relatively) high-level programming language compared to others such as C or C++ which other games will commonly be written in. Because of this, Java is inherently at a disadvantage when it comes to memory usage requirements. This is why your main system memory takes such a huge hit when running Minecraft, a very resource-intensive program written in Java.

I'm not surprised that your video RAM usage is low, though - and truthfully neither should you. As it is only meant to store textures and models, and Minecraft is, well, a game based on cubes and 16x16 textures, I think you can realize why your VRAM usage is so low.

Solution 2:

Java Minecraft is CPU heavy, but the GPU really has very little to do, graphics-wise it is very simple and graphics resources are very small in comparison to say… Call of Duty. When I say small, I mean very small, 100MB sounds about right.

Because of the “block” design of the game, you can fill the screen with relatively little resources needed. Its like using “Duplo Lego” instead of “Lego Technics.”

Java is an “interpreted” language, meaning it is not compiled down to native instructions. So when it is run, it needs a virtual machine to get the instructions (or bytecode) into something the processor will understand. Your CPU is doing more work than the GPU.