Despite having 6GB on the card only 3GB seem to be used as indicated on screen and in the logs and the rest goes to slower (?) virtual memory. Is that right? If so, is it possible and is there any sense removing this limit to eliminate virtual memory calls? Probably a DX9 (or DX8) limitation. Just looking to squeeze that extra little drop of performance that seems to be just out of reach.
"Take the cylinder out of my kidneys, The connecting rod out of my brain, my brain, From out of my arse take the camshaft, And assemble the engine again."
This is "free" memory that is reported in logs on on "Z" key info. You can see maximum available memory near the beginning of EnhancedShaders.log, something like this: FakeDevice::FakeDevice - Available Texture Memory 4076 MB Then if you subtract free mem from this available mem, you will get the idea how much is used.
I don't think the GPU memory limits WOFF performance on any more or less modern GPU. Previously I've been running WOFF on very old 1Gb GTX285 and now I'm on 4Gb GTX970 and while the latter is obviously much faster, the former wasn't that bad. So I don't think it really benefits from more than 2Gb.
Ah ok. Thanks AnKor. Well its always worth a quick look! Who knows, maybe WOTR will have some nice improvements to the underlying engine that could be ported back to WOFF UE someday. One can always dream...
Thanks for looking into it AnKor, but for a 6GB card, 3GB used or 3GB available means the same thing - that the other 3 GB are just sitting around doing nothing, while WOFF is using virtual memory instead. That is the bit (pardon the pun) that I'm unclear about. Why use virtual memory (I assume which is slower than real memory) if you have plenty of DDR5 still available? Could the swapping in and out of the virtual memory be causing some of the stutters? Just thinking aloud.
"Take the cylinder out of my kidneys, The connecting rod out of my brain, my brain, From out of my arse take the camshaft, And assemble the engine again."
I think that this "virtual memory" is in fact RAM operational memory used by game variables, engine, not by graphic engine. CFS3 performance depends heavily on CPU and CPU works with RAM (while GPU with VRAM). You can not load and run the entire application just in video (DDR5) memory. Just my 2 cents.
VRAM can be used only for stuff related to rendering (well, starting with DX11 it is possible to run general purpose calculations on GPU, but it is still only usable for certain cases, and we are in DX9 here anyway). The main consumer is textures like terrain and aircraft skins. My shaders also use about 100Mb for creating shadows and about 60Mb for caching aircraft models. By the way model cache is one of the first thing I implemented for DX9 and it greatly improved performance, original CFS3 was uploading the same 3D models for each frame. I could probably increase the cache size these, but the way DX9 works it may lead to instability and current cache seems to work ok. I could increase maximum shadow resolution, but it obvious won't improve FPS. I could use some memory to add better post effects. This is something I considered, but again this is only image quality improvement, and will likely reduce FPS.
I agree that "free memory is a wasted memory", but there's actually nothing I could use additional VRAM for.
Added. Yes, JJJ65, virtual memory is ordinary RAM which is mainly used for everything including physics engine, AI, etc. Some rendering data also has to be stored in ordinary RAM before it gets uploaded into VRAM. For example, CFS3 generates terrain mesh in RAM and then loads it into VRAM.
Thank you Gentlemen for a thorough explanation. Now everything is clear. “Virtual” is just a misnomer.
"Take the cylinder out of my kidneys, The connecting rod out of my brain, my brain, From out of my arse take the camshaft, And assemble the engine again."