4 ms·
The memory requirements for graphics changed dramatically. A screen at 1024x768, 16 bit color is 1.5 MB. A screen at 3840x2160, 24 bit color is 24 MB. 32 MB
by dale_glass 5y ago
The memory requirements for graphics changed dramatically.
A screen at 1024x768, 16 bit color is 1.5 MB.
A screen at 3840x2160, 24 bit color is 24 MB. 32 MB if using 32 bit color.
Add to it that graphics became more plentiful with increased bandwidth, and low color GIFs are out of fashion, and you very easily see the memory usage grow by several times just from that fact alone.
Older operating systems also didn't have a compositor. They told the application: "this part of your window has just been damaged by the user dragging another window over it, redraw it".
Modern operating systems use a compositor. Every window is rendered in memory then composed as needed. This makes for a much nicer experience, but the memory cost of that is quite significant.
Take a webpage, and just give the mouse wheel a good spin. It should render lightning fast, which probably means the browser has a good chunk if not all of the page pre-rendered and ready to put on the screen in a few milliseconds. This also is going to take a lot of memory.
- remram 5y ago32 MB is nothing. Unless you have hundreds of open windows this does not account for gigabytes of memory usage from the browser.
- dale_glass 5y agoPoint is, as resolutions and color depth increased, the amount of memory needed for graphics grew by several times. So a switch from 512MB being enough to several GB being needed is almost unavoidable on account of that alone.
- throwaway3699 5y agoThat all happens on the GPU. Do task managers show memory for both?
- dale_glass 5y agoWhat do you mean, "on the GPU"? Where do you think the GPU gets the textures? I'm not familiar with DirectX, but OpenGL manages textures invisibly behind the developer's back, to the point that it's difficult for a developer to find out how much VRAM there is. OpenGL wants to invisibly manage VRAM on its own, which means that every texture you have exists at least twice: Once in RAM, and once in VRAM. And very possibly 3 times, if the application keeps the original texture data in its own buffer for a bunch of reasons. So when you look at google.com, that Google logo probably exists in memory at least 3 times: probably as a RGB bitmap (the actual image object the browser works with), in RAM managed by the graphics driver (in whatever format the graphics card likes best), and then on the card's VRAM possibly. It could be more, like if the browser can apply some sort of color correction or other transformation and therefore keeps both the original and retouched version. The original PNG is also probably in the cache, and there exists the possibility of extra copies because some particular part of the system needs images to be in some specific format. Graphics are memory hungry, and it adds up fast. The nice thing about this is that your GUI doesn't get a whole bunch of horrible artifacts if you hook up a 4K monitor to a laptop that allocates 128MB VRAM to graphics. The 3D rendering layer simply makes do with what VRAM there is by constantly copying stuff from RAM as needed, with the applications not noticing anything. The bad thing is that this convenience has a cost in RAM. But really, for the better. Can you imagine the pain it would be to program a GUI if every single application had to allocate VRAM for itself and could break the system by exhausting it?
- remram 5y agoWhat I am saying is that graphics are not using much of that memory and probably can't be blamed for the increased requirements. Back in the days, maybe, as 1.5 MB was a significant portion of available RAM. However the average available RAM on computers has grown much faster than the average display size.
- dale_glass 5y agoThey very much can. Try the old Space Jam site, a wonderful example of the old web: https://www.spacejam.com/1996/ https://www.spacejam.com/1996/ That's a total of 101 kB. Now try reddit.com/r/spacejam: 13 MB. A single image on there is a megabyte worth of JPEG. It's 3024x4032 in size, which is 36MB in uncompressed RGB.