With Vulkan and Metal, X-Plane is now firmly in the driver’s seat for VRAM management. This lets us eliminate stutters that were previously present with OpenGL and almost impossible to avoid. It has, however, one big and noticeable downside: when you run out of VRAM, you get blurry textures.
Of course the goal wasn’t to replace stuttering with blurry textures, and we believe that given the normal work load of X-Plane, you should not be seeing this. The fact that so many users are seeing blurry textures, especially on big cards with lots of VRAM, points to the VRAM code being buggy in all the ways beta code can be buggy.
How much VRAM do I need?
Just to get the obvious out of the way, our system requirements have not changed for 11.50. Our minimum VRAM requirement for X-Plane 11 is still 1Gb. We expect these cards to be able to run 1080p with lowered texture resolution, providing an equal experience to X-Plane 11.41. With 2Gb we expect users to be able to run HDR with medium texture resolution on 1080p systems. 4Gb and higher should be able to run HDR at with high resolution textures with 2k monitor resolutions. With 6Gb and higher, 4k monitor resolution should be possible.
Of course these are just ballpark numbers assuming a stock install–once you install HD meshes and 4k scenery for everything you will have to adjust your settings accordingly or have more VRAM. We do expect an 8Gb system to cope with a lot of abuse from third party scenery and add ons, and even cards with less VRAM should still perform well. X-Plane will not require a yet-to-be released 24Gb RTX 3080 Ti, unlike some users have speculated in the comments.
The fact that so many users with high VRAM cards are complaining about blurry textures indicates to us that there are definitely still bugs with our VRAM strategy. Now that 11.50 is semi stable and we are entering the Walk part of the “Crawl, Walk, Run” cycle, we are looking into these blurry texture reports. You can help us!
With X-Plane 11.50 Beta 9 we are shipping better diagnostic tools to give us more insight into what is happening. That is one of the truly great things about Vulkan and Metal: we can extract huge amounts of useful information from X-Plane, now that we are in the driver’s seat for so many things. Previously we had to do a lot of guessing about the black box OpenGL driver.
Where does the VRAM go?
One of the big questions with blurry textures is where the VRAM is going. It’s more than possible that we have bookkeeping bugs in our code, or that with the right combination of scenery and aircraft, the VRAM budget is all spent somewhere where it’s not useful. As a concrete example of this, prior to Beta 9, we had a bug where AI aircraft were always running in full resolution. That means that if you had a super detailed aircraft with lots of 4k textures and the AI was flying it, one AI aircraft could easily use up a gigabyte or more of your VRAM. Starting in Beta 9, we now correctly page AI aircraft textures by distance.
X-Plane now ships with two tools to decipher VRAM usage. For users, to get a quick overview of where your VRAM is going, you can open up the VRAM Profiler from the Developer menu. The Overview tab will give you a very high level overview of what packages use how much of your VRAM. With some third party scenery and the stock 737 it looks like this for me at KSEA with maximum object density:
As you can see, the biggest source of VRAM allocations is X-Plane itself. That category is essentially a catch all for all resources that don’t fit elsewhere. The next highest up is replacement textures from a third party scenery add on, followed by the user aircraft. If you get blurry textures, you can do a quick sanity check with this tool to see if there is something specific that is eating up all your VRAM and forces everything else to be low resolution.
What do I do if it’s blurry?
X-Plane now has is the ability to create paging reports which are meant to be sent to us. If you are encountering blurry textures and know for a fact that this is because your VRAM is incorrectly utilized, please create and send us the report so we can further diagnose this. Our hope is to find a pattern or other information that can help us pinpoint where exactly the VRAM goes for some users but not others.
Please generate the report when you encounter a blurry texture situation. Open the Texture Browser from under the Developer menu, and go to the “Pager Info” tab. Among a whole lot of diagnostic info about the state of the texture pager, that tab also contains a “Create report” button. Hitting that button will write to disk an exhaustive report about the current resource allocations and various internal states. X-Plane will tell you where the report was saved and you should send it to us via the bug report form for further diagnosis.
Why do we even have blurry textures?
If you’re wondering how we got here when OpenGL was doing “just fine,” the short answer is: we have blurry textures because the alternative is guaranteed stutters.
The OpenGL strategy essentially hinges around the idea that VRAM is never truly exposed to applications, so the driver has to deal with it by moving memory around in the middle of the frame. The blessing of not having to worry about VRAM came at the cost of stutters and driver overhead.
With Vulkan and Metal all of this changed. VRAM is exposed to the application and it’s a very finite resource. The whole goal of using these APIs is to enable applications to pre-bake everything at load time so when it comes to rendering frames they can be done without any additional work. But this means we must handle VRAM responsibly, and adapt on the fly as VRAM pressures change. It’s a tricky balance, one that we haven’t quite perfected yet, but we now have more tools to help us get there.