---
name: "SDL_GPUTextureFormat"
section: "3type"
platform: "linux"
package: "libsdl3-doc"
version: "3.2.10+ds-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SDL_GPUTextureFormat"
---

# SDL\_GPUTextureFormat(3type)

Specifies the pixel format of a texture.

## NAME

SDL\_GPUTextureFormat - Specifies the pixel format of a texture.

## HEADER FILE

Defined in SDL3/SDL\_gpu.h

## SYNOPSIS

```
#include "SDL3/SDL.h"
```

**typedef enum SDL\_GPUTextureFormat** **{**     **SDL\_GPU\_TEXTUREFORMAT\_INVALID,**     **/\* Unsigned Normalized Float Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_A8\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R8\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8B8A8\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R16\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16B16A16\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R10G10B10A2\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_B5G6R5\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_B5G5R5A1\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_B4G4R4A4\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_B8G8R8A8\_UNORM,**     **/\* Compressed Unsigned Normalized Float Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_BC1\_RGBA\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_BC2\_RGBA\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_BC3\_RGBA\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_BC4\_R\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_BC5\_RG\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_BC7\_RGBA\_UNORM,**     **/\* Compressed Signed Float Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_BC6H\_RGB\_FLOAT,**     **/\* Compressed Unsigned Float Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_BC6H\_RGB\_UFLOAT,**     **/\* Signed Normalized Float Color Formats  \*/**     **SDL\_GPU\_TEXTUREFORMAT\_R8\_SNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8\_SNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8B8A8\_SNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R16\_SNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16\_SNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16B16A16\_SNORM,**     **/\* Signed Float Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_R16\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16B16A16\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32G32\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32G32B32A32\_FLOAT,**     **/\* Unsigned Float Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_R11G11B10\_UFLOAT,**     **/\* Unsigned Integer Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_R8\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8B8A8\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16B16A16\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32G32\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32G32B32A32\_UINT,**     **/\* Signed Integer Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_R8\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8B8A8\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R16G16B16A16\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32G32\_INT,**     **SDL\_GPU\_TEXTUREFORMAT\_R32G32B32A32\_INT,**     **/\* SRGB Unsigned Normalized Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_R8G8B8A8\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_B8G8R8A8\_UNORM\_SRGB,**     **/\* Compressed SRGB Unsigned Normalized Color Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_BC1\_RGBA\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_BC2\_RGBA\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_BC3\_RGBA\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_BC7\_RGBA\_UNORM\_SRGB,**     **/\* Depth Formats \*/**     **SDL\_GPU\_TEXTUREFORMAT\_D16\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_D24\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_D32\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_D24\_UNORM\_S8\_UINT,**     **SDL\_GPU\_TEXTUREFORMAT\_D32\_FLOAT\_S8\_UINT,**     **/\* Compressed ASTC Normalized Float Color Formats\*/**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_4x4\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_5x4\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_5x5\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_6x5\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_6x6\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x5\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x6\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x8\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x5\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x6\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x8\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x10\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_12x10\_UNORM,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_12x12\_UNORM,**     **/\* Compressed SRGB ASTC Normalized Float Color Formats\*/**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_4x4\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_5x4\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_5x5\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_6x5\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_6x6\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x5\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x6\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x8\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x5\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x6\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x8\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x10\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_12x10\_UNORM\_SRGB,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_12x12\_UNORM\_SRGB,**     **/\* Compressed ASTC Signed Float Color Formats\*/**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_4x4\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_5x4\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_5x5\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_6x5\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_6x6\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x5\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x6\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_8x8\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x5\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x6\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x8\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_10x10\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_12x10\_FLOAT,**     **SDL\_GPU\_TEXTUREFORMAT\_ASTC\_12x12\_FLOAT** **} SDL\_GPUTextureFormat;**

## DESCRIPTION

Texture format support varies depending on driver, hardware, and usage flags. In general, you should use

**SDL\_GPUTextureSupportsFormat**\
  to query if a format is supported before using it. However, there are a few guaranteed formats.

FIXME: Check universal support for 32-bit component formats FIXME: Check universal support for SIMULTANEOUS\_READ\_WRITE

For SAMPLER usage, the following formats are universally supported:

• R8G8B8A8\_UNORM

• B8G8R8A8\_UNORM

• R8\_UNORM

• R8\_SNORM

• R8G8\_UNORM

• R8G8\_SNORM

• R8G8B8A8\_SNORM

• R16\_FLOAT

• R16G16\_FLOAT

• R16G16B16A16\_FLOAT

• R32\_FLOAT

• R32G32\_FLOAT

• R32G32B32A32\_FLOAT

• R11G11B10\_UFLOAT

• R8G8B8A8\_UNORM\_SRGB

• B8G8R8A8\_UNORM\_SRGB

• D16\_UNORM

For COLOR\_TARGET usage, the following formats are universally supported:

• R8G8B8A8\_UNORM

• B8G8R8A8\_UNORM

• R8\_UNORM

• R16\_FLOAT

• R16G16\_FLOAT

• R16G16B16A16\_FLOAT

• R32\_FLOAT

• R32G32\_FLOAT

• R32G32B32A32\_FLOAT

• R8\_UINT

• R8G8\_UINT

• R8G8B8A8\_UINT

• R16\_UINT

• R16G16\_UINT

• R16G16B16A16\_UINT

• R8\_INT

• R8G8\_INT

• R8G8B8A8\_INT

• R16\_INT

• R16G16\_INT

• R16G16B16A16\_INT

• R8G8B8A8\_UNORM\_SRGB

• B8G8R8A8\_UNORM\_SRGB

For STORAGE usages, the following formats are universally supported:

• R8G8B8A8\_UNORM

• R8G8B8A8\_SNORM

• R16G16B16A16\_FLOAT

• R32\_FLOAT

• R32G32\_FLOAT

• R32G32B32A32\_FLOAT

• R8G8B8A8\_UINT

• R16G16B16A16\_UINT

• R8G8B8A8\_INT

• R16G16B16A16\_INT

For DEPTH\_STENCIL\_TARGET usage, the following formats are universally supported:

• D16\_UNORM

• Either (but not necessarily both!) D24\_UNORM or D32\_FLOAT

• Either (but not necessarily both!) D24\_UNORM\_S8\_UINT or D32\_FLOAT\_S8\_UINT

Unless D16\_UNORM is sufficient for your purposes, always check which of D24/D32 is supported before creating a depth-stencil texture!

## AVAILABILITY

This enum is available since SDL 3.2.0.

## SEE ALSO

**•**(3), [**SDL\_CreateGPUTexture**(3)](/SDL_CreateGPUTexture/3.md), **•**(3), [**SDL\_GPUTextureSupportsFormat**(3)](/SDL_GPUTextureSupportsFormat/3.md)
