Mobile GPUs and Fill Rate

Fill rate: when we talk about fill rate, generally what we're talking about is your GPU's ability to fill in individual pixels to make the final image you see while flying.  (The actual components of GPU throughput get a lot more complex, but we'll keep things simple for now.)  Two key things to note about fill rate:

  1. It only comes from your GPU - not your CPU.
  2. The bigger the size of X-Plane's window (or the higher the full screen monitor res), the more of it you use.

Therefore I can offer this very simple test as to whether you are fill-rate limited:

If you are running in windowed mode and making the window smaller improves frame-rate, you are fill-rate limited.

(There is actually one important exception to the above test: if you are running out of VRAM, making the window smaller uses less VRAM for the main window + off-screen buffers, which can help fps.  So be sure to see whether cutting your texture res helps fps - if it does, you are out of VRAM.)

Fill rate gets used up by:

  • A larger rendering window.  This is the number one consumer of fill-rate.  Double the size of the window in each dimension, you use 4x the fill-rate.  That adds up quick!!
  • Clouds tend to be fill-rate intensive.
  • HDR mode is significantly more fill-rate intensive than non-HDR mode.
  • The 3-d cockpit is more fill-rate intensive than 2-d and external views, particularly with HDR enabled.
  • Shadows, to a limited extent.

X-Plane 10 contains a stat called "cpu load" in the framerate output data line; I will describe its full meaning and implication in another blog post, but generally low CPU load (e.g. < 0.7) means you are fill-rate limited.  If your CPU use for one core is 100% (this means 25% in the task manager for Windows users on a 4-core i5, but 100% in top for Mac/Linux users no matter what the number of cores) then you are almost certainly not fill-rate limited.

Optimizing Fill Rate

X-Plane 10.03r1 will post in a little bit - this is our first attempt to finalize X-Plane 10.03.  It is not the end of the bug fix and performance tuning work for X-Plane 10.  But if we can get a stable 10.03 we can use it as a baseline and limit betas to those who check the "get betas" check-box in the installer.

X-Plane 10.03r1 contains fill-rate optimizations for the 2-d and forward-no-HUD views; we'll have to see how much they help people, but they should help you a bit if you are fill rate limited, flying a plane with a 2-d cockpit, and are seeing low fps with clouds and/or HDR.

Once 10.03 is final, we'll start 10.04 and I will attempt to make a similar set of optimizations for the 3-d cockpit.  Note that the 2-d optimizations do not apply if you have a plane that uses the 3-d cockpit for the 2-d view.  (Since all of the new X-Plane 10 default planes do this, we'll need the 3-d optimizations in 10.04 to see the performance benefit with the 747, Baron, and other new default planes.  The Cessna, Cirrus Jet, and Piaggio from X-Plane 9 should all benefit immediately.)

Your Mobile GPU Is Light But Not Fast

Here is a table I culled from Wikipedia: it is a table of GPU performance for the "top end" cards for ATI's last 4 generations of hardware.

CARD DATE GP GT BW GFLOP
4870 Jun 08 12 30 115 1200
6970M Jan 11 21 32 115 1305
5870 Sep 09 27 68 153 2720
6970 Dec 10 28 84 176 2703
7970 Jan 12 29 118 264 3789

GP = gigapixels/second of fill, GT = gigatexels/second of texture, BW = GB/second of memory bus bandwidht, and GFLOPS = gigaflops/second of MADD.  At least I hope - see the original table.

Now I have inserted one mobile GPU (the 6970M) into this chart.  So the first thing you can see is: the 6970M provides in a laptop the power that was available in a desktop about two years earlier, more or less.  That's a big step back in time.

The reason is simple: mobile GPUs are typically cut down in their core configuration - there's no way you can run a 150W full power GPU with those 3 fans in a laptop.

If you have an iMac, you have a mobile GPU.  Even the older iMacs which didn't have the "M" designation on their chip, those were mobile too.  In fact, you've got a mobile GPU on a huge screen.  (Super-size to the 27" iMac to get the 4x fill rate boost and you pick up 1.7x the pixels; if you get the big iMac with the cheap GPU you have a mid-range mobile GPU on a 2560 x 1440 screen!)

Some Kind Of Summary

I'm not entirely sure what my main point here is...perhaps the executive summary is:

  • We (LR) are working to optimize fill rate in X-Plane 10.  Fill rate is not the only performance bottleneck we are working on, but it is a very important one.  Some of this is in X-Plane 10.03r1, some will come in later updates.
  • You can determine whether you are fill-rate limited by resizing your window.
  • If you have a mobile GPU in a laptop or iMac you may have less fill rate than you would expect.
  • Facebook
  • Reddit
  • Twitter
  • LinkedIn

About Ben Supnik

Ben is a software engineer who works on X-Plane; he spends most of his days drinking coffee and swearing at the computer -- sometimes at the same time.
This entry was posted in Development, Hardware. Bookmark the permalink.

53 Responses to Mobile GPUs and Fill Rate

  1. wotaskd says:

    Great summary Ben!

    So as long as your VRAM is within limits, fill rate will not be impacted by the bus bandwidth correct?

    • Ben Supnik says:

      Correct - that's why the window size test is good: making the window smaller doesn't relieve X-Plane of its need to push things over the bus.

      • Tony says:

        So, what is the solution if you are GPU bound?

        I am running XP on an early 2008 MacPro Dual Quad 2.8 GHZ with an ATI 5770 1GB. My graphic settings are, I would say, set mid to low and it looks as though I am GPU bound going by what was posted here.

        Lowering my cloud settings seems to have the greatest effect on FPS, I'm at 20% now. I have the textures set to Very High, and roughly 500MB of my VRAM is being used.

        HDR completely destroys my FPS so I don't even try it anymore.

        With the newest update of XP, adding a few AI planes doesn't hit FPS the way it used to. I can get away with 4-6 AI without a hit.

        What should I expect from my system specs? How do I unbind from the GPU?

  2. Swifta says:

    Ben,

    I'm very excited to see that you guys are moving on to performance tweaking! Btw on a side note, I ordered xp10 friday and got it today, monday...AWESOME shipping! It is currently installing. (with the dled installer lol).

    Now, I know you mentioned SLi a while back but I'm sitting here with 3x gtx 580s and using only one... afaik only most of this one not all, my afterburner show 60-70% gpu usage. Does the usage drop if my fill rate (1920x1080) is too high for my gfx card? In earlier beta versions (demo) my usage was in the 80-90s. Just a thought I guess. With nearly everything maxed including HDR FXAA I get about 26-28 avg which is not bad at all but boy I would LOVE to just use a second card to atleast gain another 10 fps if possible lol.

    I look forward to more improvements to come! thx!

  3. Interesting stuff.

    The reason I haven't purchased X-Plane 10 yet is on my MacBook Pro (i7/GeForce GT 330M 512 MB) clouds absolutely kill performance. Clear skys my framerate is in the 20's. Once there's clouds, it goes down to the teens or worse, and they render terribly (I can see them drawing in space).

    I'd be curious to know if that's related to fill rate, or a whole other issue. That's really the thing that bothers me so far. Otherwise it's insanely impressive. I'm just not sure I'm willing to give up the ability to fly through weather to use X-Plane 10. Hoping this will improve over time. I understand the performance tweaking isn't done yet.

  4. Pingback: Alert – Xplane 10.03r1 imminent and looks promising! « Xplane10's Blog

  5. wotaskd says:

    I can definitively feel the difference! At KSFO with Tom Curtis' scenery, my fps jumped from 16-18 to 24-25. That's 8 fps of difference! Way to go, Ben! 🙂

    The impact is a lot less dramatic with the default KSEA, 2 fps gain (from 13 to 15) at runway 34R.

    But again, this is at 5760x1080 Eyefinity, HDR, low global shadows, and FXAA 🙂 Unfortunately the ATI software doesn't seem to let me go any lower than that res. I'd love to be able to run it at 3x720p instead of 3x1080p.

  6. A Vardi says:

    See, this is why you should be looking into a more advanced graphics pathway. Funny, battlefield 3 looks great.

    • Filippo says:

      Comparing the peformances of a 3D engine of a flight sim with those of a First Person Shooter is generally conceptually wrong, since the requirements for the two engines are rather different.

      It would be like comparing a jeep with a sports car and blaming the former for having poor performances.

      The 3D engine of a FPS can apply assumptions and optimizations that are not possible within a flightsim. Just one example is the fact that in a flightsim the 3D landscape is not necessarily known a priori (think about the possibility to add custom scenery on top of the default one).

      Similar debates arose many times for the MSFS series also, but the principle is always the same. Flexibility and performance are not attainable at the same time.

      Regards,
      Filippo

      • Ben Supnik says:

        Spot on. The optimizations available vary based on the genre. Portal culling isn't terribly useful for a flight sim, for example. There's also a performance cost to having a platform for third party content, particularly if that content is going to be stable across multiple rendering engine versions.

        I believe a fair comparison would be _within_ the genre, and between products of the same generation. FSX and X-Plane 9 both have lighter hardware requirements than X-Plane 10; they had to be designed with limitations in what they did based on the lesser hardware.

        None of this means that X-Plane 10 is running as well as it could or as well as we want it to; we will continue to optimize.

        But there's also apples and oranges. With X-Plane 10, you can input full OSM road data and you get extruded 3-d bezier curve junctions with merge ramps; I don't think either FS X or X-Plane 9 will attempt to model the road grid with that kind of detail. (Note that the expense here is NOT just the detail, but the detail based on _arbitrary_ input data. You can model an overpass with an OBJ easily in any flight sim if you just want one.)

        (And yes, I know, the road engine often goes crazy - this is a high priority bug for me to fix!!)

  7. David deBoer says:

    Hello from New Zealand

    I am just downloading 10.03 and will let you know any feedback re fill and frame rates. I run scenery on a Windows 7 64 bit Desktop into 3 screens via a Matrox and a big graphics card so have plenty of grunt but the flight model is run through a Macbook pro with a medium/good CPU and an OK mobile GPU. Frame rates have been pretty good without HDR and below average [like 15 to 30 fps] with HDR. Keep on going guys ... this is just an awesome step up from XP9 which I used for 3 years. Just awesome!!

  8. Hi Ben,
    When you post on cpu usage, can you give a quick overview of which instruction sets Xplane10 can utilize? For example, can it use Advanced Vector Extensions? How do you envision the performance on a 6 core 1055T at 2.8 Mhz VS a 4 core 980 at 3.7 Mhz? Do you foresee this changing, or will rendering always be locked to one core's performance?

    Thank you! The sim is looking spectacular.

  9. Also, can you give an overview of what, if running a graphics card with ample GPU power, and oodles of VRAM, say 3GB, what would still be coming from the CPU / being a PCI bandwidth hog?

    Is traffic (cars) sent each frame? Cloud positions? Is newly drawn (distant) scenery sent in large chunks right before being drawn, or is it cached in VRAM? What can the GPU not do frame to frame. ( Flight model, AI, Traffic )

    Is there any vision for OpenCL?

  10. David de Boer says:

    Hello again from New Zealand

    I have tested 10.03 against my previous fps settings for a range of rendering options and it works way better - and probably as you intended. I have benchmarks of fps for each feature using minimum everything as the base and then ramping each one up, and 10.03 improves fps under medium and high shadow by 30% or so and under HDR by 25%.

    Good stuff

    David

  11. Stephen Young says:

    Presume from what you are saying that I might as well throw away my late 2009 27inch iMac and replace it with anything but an iMac??? What do you suggest to get optimum performance - is there a Mac out there now which will give the performance that X-Plane 10 requires? Or do I have to (horror of horrors) swallow my pride and go for a high-end Windows machine - and, if so, what?

    • Chris Serio says:

      I don't think Ben's point is to poo-poo on iMacs or laptops. I've actually done all of my development on an iMac and X-Plane runs just great...BUT you have to know what you're working with and choose your rendering settings accordingly. People have been assuming that because they have a brand new Macbook Pro or a brand new iMac, that they should be able to max out their settings. It's a poor expectation predicated on their assumption that their GPU is as good as a desktop one and it's not...i think that's one of the points of the blog post.

      So I'd say, if you want to get a new iMac, that's up to you because only you can decide what a suitable configuration for X-Plane is for your tastes. Research the GPU's before buying. http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units

    • chris says:

      "Or do I have to (horror of horrors) swallow my pride and go for a high-end Windows machine"

      ha ha this is great, but i can't agree more

      🙁 buying a high end PC solely for xplane seems silly and un practical though

  12. Kamil says:

    Hi,

    Please do not get me wrong here but who is Mac version of X-Plane for? Mac Pro users only? I bought high-end iMac (all maxed out) and getting only ~14fps. This exactly matches what you have posted above.

    Any chances it will be ever flyable on this machine?

    Kind regards,
    Kamil

    • Chris Serio says:

      Which iMac? The 21.5" or the 27"? I have the "top of the line" 21.5" iMac from 2011 and X-Plane runs just fine. You have to tune your rendering settings accordingly. Follow the steps in the blog, figure out what your bottleneck is and adjust your rendering settings.

      • Kamil says:

        Mine is 27". i7 3.4GHz, 16GB RAM and 6970M with 2GB VRAM.

        I will try to tune settings a bit tonight.

    • David says:

      I have the exact machine Chris Serio has, and I have 20% clouds, HDR with fxaa on and I have low water reflections, and 3d shadows, Very High textures and 6 AI aircraft. I get from 32 to 45 fps pretty nice, huh? When is your IMac from 2011? If you spend some time tweaking the settings on your "High-end" machine as I did you will find the sim not only being flyable but also very enjoyable.

      • Kamil says:

        David,

        Nicely said, brings some hope. Will do some tweaking and see how it goes.

        Problem with my 27" though is massive resolution it runs at. I can obviously lower it but to be honest it didn't massively increased framerates.

        Will give it few more tries. Maybe there is plenty of optimisation still ahead of us.

        Kamil

        • David says:

          Hi Kamil

          There is a lot of tweaking to do, which is always a good thing, this way people with different OS, hardware and different mindset can find what works best for them. The more the better! Screen res was one of the most important thing to adjust, I forgot to mention it before but lowering from 1920 (my maximum) to 1680 has helped gaining something like 12-15fps! Too bad that my system does not allow me to reduce it even further without ending up with a window that smaller than the screen. After all I fly with the yoke and I'm about 36" from the screen, at this distance I can't really appreciate a super duper hi res anyway.

        • David says:

          Forgot to mention the option to Compress textures to save Vram. I did a couple of tests: I went up in the sky took a screen shot with that option off and Texture Res set to HIGH then I did another shot this time with Texture Res set to VERY HIGH and then the last shot I did was with VERY HIGH and Compress Textures set to ON. Always checking the amount of Vram that xplane was using. Then I decided for Very High and compress textures ON.
          Telling you this because the tweaking and the efforts are sometime intense if you really want to get results.

  13. Mutley10G says:

    Sooo ... what do you guys reckon to the possible line-up of 2012 MacBook Pros? Ivy Bridge CPU + top of the line mobile NVIDIA GPU? Let's presume I'm only going to recycle my 2009 17 inch MBP (actually copes on low settings with XP10!) with a top of the line version!

  14. Brian Godwin says:

    Looking forward to trying out the new update tonight and hopefully I can re-tweak and get some visuals back into my crappy laptop. 🙂 Once I noticed that the new version was released, I started hearing this rumbling in my sim. I thought the sound was messed up but it kept getting progressively louder. I went something like this:
    wed, wed, Wed, Wed, WEd, WEd, WED, WED. (subtle pleading). 😉

    Great job guys!

  15. vito says:

    I have Radeon HD 6670 graphic card with 1 gb gddr5 memory (lower range of the current HD range) and when I tried your suggestion to test fill rate of the card I found no change - windowed or full screen. Guess that fill rate is problematic with whole range of the cards. Just to add that this was tested with latest release (10.03r1) of X-plane.

    • Ben Supnik says:

      That is exactly opposite of what I said. If changing window size makes no difference, fill rate is NOT the problem.

      • Vito says:

        Sorry, I was thinking to fast - you are right, I wanted to say that it seems fill rate is not the problem even with this low range cards like mine. So far I don't see great variance with frame rate tweaking other options like you said on your blog. The only big difference is tweaking clouds. Lowering the initial 40% to 20% gives me a flyable 20 fps. CPU load is always near 95 %.

  16. Frengo85 says:

    I don't think the fill rate is the main bottleneck in the engine...
    The biggest problem is that it is not "scalable": With an AMD6950 2GB @900mhz, PII X4 955 @3,6Ghz, 4Gb RAM, 1024x768, no AI aircraft, minimun graphic options I don't think 25fps is an acceptable frame rate. It seems like something "hidden" create a fps cap. Another problem is that I encount fps drops raising graphics settings without seeing both CPU and GPU usage % increase (I have never seen a workload higher that 55-60%).
    I'm not a programmer so probably I don't get the point 😛

  17. Jon Crane says:

    Not a bug but 10.03r1 has halved my frame rate. Cheerfully running 25FPS @KSEA with Phenom x6 1055 & GTX 560ti win7 64 8Gb ram before r1. Now reduced to 10FPS with settings unchanged.

    • SteveG says:

      Thats strange as RC1 is the first version that runs fluid and without bugs on my machine (onboard intel gma2000).

    • adrian says:

      Hi Jon,
      I am Running Xp10 with a 1055T And a GTX 460... Ive gotten a 1-2 fps increase from beta 7 > RC1 Windows 7, 64bit, 8GB RAM.... Those are basically the same specs are your machine ( only lower ), so its seems odd that you would have dropped by 50%.
      send me an email - we can share tips on tweaking. adrian @ i9design dought com

  18. Eric says:

    Well I cannot argue against the low mobile GPU numbers. I was somewhat aware of the deficiencies of lightweight GPUs when compared to their big brothers of the same name. But I also knew this:

    The 6970M has a very respectable G3D Mark score of 2629 which put it in the top 20 of the 200 or so of the "top end" cards tested by PassMark. Since I had no plans of playing Crysis 2 at 2560 x 1440 I wasn't concerned by the moderate scores earned by the 6970M. What I did care about was if it would play modern combat flight sims at high settings with HDR at that resolution. And it does as I knew it would. X-plane does too, but not with HDR and certainly not so well with 10.03 rc1. My concern is that you might be scaring people away from the latest iMac or more importantly--you might be scaring iMac owners away from XP10! To both parties I say--fear not, XP10 and the iMac look beautiful together.

  19. "** Why not keep all of the geometry in VRAM? That’s a long sad story about the OpenGL API that we’ll have to save for another day."

  20. Pingback: Optimizando el rendimiento de XP10 - ForoAviones, Comunidad de Aviacion

  21. Samantha says:

    Macbook pro 6750M i7 and 16GB of RAM. FSX landing over NYC I get 35+fps with things cranked up. With X-plane I can barely manage 20 sitting on the KSEA runway with the window made as small as possible. Crysis and modern games run great, I'm not arguing the hardware aspect but it would seem that others have figured out optimisations you guys have not.

    Sad that this is our only hope for anything new, hopefully you guys do a rewrite, fix up the interface. I don't mind supporting you but at this point the price is more of a donation since the product is unusable.

  22. chris says:

    BTW, with the newest betas of Xplane, I can finally play it on my MacMini from 2009. Smallest window size (this is super important), no HDR, clouds to minimum.

    When you compare a graphics engine to a car engine, the bandwidth is like horsepower. But the fillrate is the displacement. Without fillrate, you'll have no fun (and it is exactly the thing that will drain your batteries).

  23. Andrea says:

    Ok, then how am I getting 35+fps in FSX with details turned up and yet X-plane struggles with clear conditions and the window as small as it will go on a 6950M. Curious how a few posts have been deleted from the blog, truth hurts.

  24. Chris says:

    Well, it would appear that my GTX 460 OC is indeed fill rate limited, since I see a drop of about 8-10 fps when reducing the window and using medium settings. One question I have though: when you mentioned the CPU load example of <0.7, is a 1.0 then 100% CPU load? Mine stays around 0.97 to 0.99, but looking at my Quad core shows only two of the cores really getting a workout.
    Windows 7 64bit, Intel Core 2 Quad E9550 OC 3.4GHz, 8GB RAM, PNY GeForce GTX 460 OC.

    • Chris says:

      I meant to say that it is an increase of 8-10fps when reducing window.

    • Ben Supnik says:

      CPU load is for the one core that renders. So when you are CPU bound in rendering, one core will be near 100%, CPU load will be near 1.0, and the other 3 cores will have variable work load based on what's going on.

      I think I've said this before, but I cannot emphasize it enough:

      X-Plane will NOT use all of your cores to render.

      • Chris says:

        Ah, that makes sense. I was wondering why I wasn't seeing an increase in the other cores as I turned up the "CPU Intensive" rendering options. Thanks.

Comments are closed.