This post follows up on the case for DDS and DDS in v10 and answers some basic questions.

DDS and Texture Compression are Not the Same!

This is the first and most important point: the decision to compress textures and the decision to use DDS are not the same!

Texture compression is decided by the user.  If the user clicks “compress textures” (and nearly all users should do this) then 99% of the textures in your add-onwill be compressed.  You can’t avoid this.  The user has spoken and said “sorry, I don’t have 3 GB of VRAM, we need to tighten things up.”

DDS is a pre-compressed format; DDS says “well, if you are going to compress, I have already done the compression for you with DDSTool, so it will look better.  See the pictures in the posts above for why this is so important!

I cannot emphasize this enough: most users are going to have to use compression to save VRAM, so you should ship DDS files so that the compressed images look good.  You can ship DDS and PNG if you want to ensure that the uncompressed case looks good too, but I think that users running uncompressed is going to be rare.

Does DDS Improve Framerate?

No!  See the above post: the user may be running compressed textures regardless of whether you ship a DDS, so when you ship a DDS you may see no VRAM savings and no FPS change.  All you will get are compressed textures that look better.

Does Compression Improve Framerate?

Sometimes.  Texture compression will improve framerate under two conditions:

  1. The texture unit bandwidth on the GPU is exhausted.  This is very rare now – I haven’t seen this happen since the Radeon 9600 XT.
  2. The user is out of VRAM.  This is quite common.

But recall how free VRAM affects framerate:

  • When the user runs out of VRAM, the fps loss is often catastrophic.  The user might see huge jerking, big pauses in framerate especially as the camera moves, and performance will be unusable.
  • When the user has extra unused VRAM, there is no benefit – framerate does not go up indefinitely by freeing up VRAM.

So most users will simply turn down texture resolution until they can fly.  Thus the real effect of texture compression is to let users turn their overall texture resolution back up again one notch, improving the overall look of the sim.

Is There Any Way to Make DDS Look Less Bad?

Sometimes DDS is relatively harmless to a texture, and sometimes it just absolutely destroys it.  I don’t have a good answer to this, except: be sure to run the latest DDSTool/XGrinder (see the “command line tools” option on this site) when targeting X-Plane 10, and never set your gamma to anything other than 2.2.  I do hope to someday look at improving DDS grinding capabilities.

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.

16 comments on “DDS and V10 – What Does It Do?

  1. For those of us with 3+GB of VRAM, is there any reason to run with texture compression off until 64 bit? Since the program is limited to 4GB, if 3+GB of that is textures, that doesn’t leave much RAM left for the sim, and I assume it’ll crash?

    Do you not anticipate bandwidth being an issue even for cards with 3-4GB of VRAM using uncompressed textures in v10.20+?

    1. First: whether textures take up virtual address space (which is the issue with 32-bit builds) depends on the OS. I think on Windows you might get away with uncompressed – Mac and Linux you gotta run with compression.

      RE: bandwidth, I don’t know, since I have considered no-compressed to be unattainable. With 64 bits some users with big cards and no add-on will be able to try this config and see if texture bandwidth becomes an issue.

      1. Just to report my experience, I always leave texture compression off (I have 2 Gb of VRAM) on Linux x64 and never had problems, evben with x-plane taking 2.5 Gb of RAM and 1.5 of VRAM. So at least the nvidia binary driver seems to do the right thing with the virtual address space.

  2. If DDS is a pre-compressed format, won’t it save some CPU/GPU cycles (and thus making it a little faster) if compared with compressing a texture that has not a DDS?

    1. I believe the texture decompression is part of the texture sampling units – that is, dedicated hardware, so you don’t save GPU ALU cycles by going uncompressed. The decompression is ‘on GPU’ so what you do save is memory bus bandwidth on the card itself.

  3. About “when you ship a DDS you may see no VRAM savings and no FPS change”, I’m working with a (photographic) scenery with normals maps. I tested normals both in PNG and DDS and in DDS sim is usable but in PNG simulator runs out of memory (crashes). So… I don’t lnow about VRAM (you say is the same) but DDS textures saves (a lot of) RAM, against PNG.

    1. Yeah, sorry, I forgot to mention: normal maps are different. Normal maps are flagged for ‘no compression’, so they compress only if you pre-compress them.

      If you can live with the results of the compression, great. If you just want the specular channel, make a gray-scale texture of specular only – 1/4 the VRAM (same savings) but no res loss.

      1. No, I want normal maps but I can live with the results… it’s not the same than in PNG but it’s enough.

        Thanks for clarifing 😉

  4. I run uncompressed on Win7-64, texture resolution very high, HDR, 1920×1080 pix on a GTX670 – 2 GB.
    X-Plane usually tells me that about 1 GB of textures are used whilst NVIDIA Inspector monitors a VRAM usage of about 1,5 – 2,0 GB (no other apps running). Never had stutters or drops in framerate caused by running out of VRAM (as far as I can tell), even with detailed payware aircraft and scenery (no photoscenery here).
    But I have to say that I hardly can tell compressed from uncompressed (visually). Texture quality settings in the NVIDIA driver (very high) makes much more difference on my system. Same applies to running very high vs. extreme resolution. Aliasing is the main problem in terms of visual quality in HDR mode IMHO.

    Flo

  5. Dear Ben

    Thanks for excellent information..
    I have one question for you, is there a way to isolate certain part of the word i.e Norway regarding to its groundtexture? Is there a spesific dds file number/name to look for?

    1. No, but if you want to change textures, you can put library entries into a custom scenery pack with a region to specify which lat/lon boxes they go to.

      1. Thanks Ben..

        So DSF is the way to go?

        Just wondering what programs are best suited and what way is easiest to go in order to figure out what kind of texture area I need to focus on in order to make a landclass scenery over i.e Norway

  6. So, if I understand this correctly, DDS does give us better framerates, INDIRECTLY.

    Because it produces better graphics, we are able to turn, for example, the resolution down from “very high” to “high”, gain a couple fps, and retain the look of “very high”.

    Is that a correct summation?

Comments are closed.