DDS
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
DirectDraw Surface Preview.
At a glance
| Original creator | Microsoft |
| First published | 1999 |
| Purpose | DirectDraw Surface: textures for Direct3D, stored in the compressed or uncompressed formats the graphics card reads, with mipmaps, cube maps and volume textures. |
| Extensions | .dds |
| Poka parser | poka-dds |
| Viewer | poka-image-with-meta-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B3 Core (see Breadth tiers) |
How much Poka reads
B3 Core. Only the main content type or types are decoded (for example geometry but not materials, layers or annotations, or only one version family). The list of gaps is substantial.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: parsers/poka-dds/src/lib.rs (own header parser plus image 0.25.10 DdsDecoder, whose source was read), tests/samples.rs run against the 3 corpus files (hopper.dds, a DXT5 file, a DX10 BC7 file). Covers legacy FourCC DDS and DX10-header DDS; only the top mip level of the first surface is ever decoded.
What Poka does not read
- BC7 pixels (header facts only)
- BC6H pixels
- BC4 and BC5 pixels (single-channel and normal-map textures)
- uncompressed RGB, RGBA, luminance, alpha and YUV pixels (header facts only; the corpus hopper.dds is such a file)
- DXT2 and DXT4 (premultiplied alpha) pixels
- DX10 formats other than BC1 to BC3 (float, 16-bit and sRGB-packed formats)
- mip levels below the first
- cube map faces beyond the first surface
- volume texture slices
- texture array elements
Background
Wikipedia says the format came with DirectX 7.0 in 1999; DirectX 8.0 added volume textures, and Direct3D 10 added texture arrays and formats such as BC6H and BC7 behind a DX10 extension header. Poka reads the header itself and decodes the pixels with the image crate where it can. The image crate does not decode BC4 to BC7, uncompressed RGB, or DX10-header files other than BC1 to BC3, so for those Poka shows the header facts only.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| DDS with a FourCC or uncompressed pixel format (DXT1 to DXT5 and others) | DDS |
Partly read | Drawn where the image crate decodes the format; header facts otherwise. |
| DDS with a DX10 extension header | DDS , FourCC DX10 |
Partly read | The DXGI format is named. The image crate decodes DX10 files whose format is BC1 to BC3; BC4 and above get header facts only. |
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- image (used; MIT OR Apache-2.0; Rust)
- png (used; MIT OR Apache-2.0; Rust)
- oxideav-dds (candidate; MIT; Rust; https://github.com/OxideAV/oxideav-dds) — decodes BC7, DX10 headers and 24-bit RGB; 3 corpus samples decoded; net size against poka-dds unverified
Sources
- https://en.wikipedia.org/wiki/DirectDraw_Surface
- parsers/poka-dds/src/lib.rs