Surface_Formats_NV50

This page lists the available surface formats on NV50 hardware:

'y' means you shouldn't get a DATA_ERROR if you put the enum into
3D = NV50TCL_RT_FORMAT
2D = NV50_2D_DST_FORMAT
2D.SRC = NV50_2D_SRC_FORMAT
2D.SIFC = NV50_2D_SIFC_FORMAT
(as in 'yes, it's supported')

SNORM, SINT and UINT formats are expected to work only with the 3D engine since they define
how the outputs from the fragment shader or the values in NV50TCL_CLEAR_COLOR are interpreted:
UNORM ... float [ 0.0f, 1.0f] to uint
SNORM ... float [-1.0f, 1.0f] to sint
SINT ... sint32, clamped
UINT ... uint32, clamped
SRGB ... like UNORM, but non-linear

Component 0 is always at lowest address / in the lower bits.

Enum

0

1

2

3

Type

3D

2D

2D.SRC

2D.SIFC

internal format

0x1c

?

?

?

?

?

?

y

y

0x01 / 8

0x1d

?

?

?

?

?

?

y

?

0xc0

R32

G32

B32

A32

FLOAT

y

y

y

0x02

0xc1

R32

G32

B32

A32

SINT

y

?

0x03

0xc2

R32

G32

B32

A32

UINT

y

?

0x04

0xc3

R32

G32

B32

X32

FLOAT

y

y

y

0x05

0xc4

?

?

?

?

?

y

?

0x06

0xc5

?

?

?

?

?

y

?

0x07

0xc6

R16

G16

B16

A16

UNORM

y

0x08

0xc7

R16

G16

B16

A16

SNORM

y

0x09

0xc8

R16

G16

B16

A16

SINT

y

0x0a

0xc9

R16

G16

B16

A16

UINT

y

0x0b

0xca

R16

G16

B16

A16

FLOAT

y

y

y

0x0c

0xcb

R32

G32

FLOAT

y

y

y

0x0d

0xcc

R32

G32

SINT

y

?

0x0e

0xcd

R32

G32

UINT

y

?

0x0f

0xce

R16

G16

B16

X16

FLOAT

y

y

y

0x10

0xcf

B8

G8

R8

A8

UNORM

y

y

y

y

0x11

0xd0

B8

G8

R8

A8

SRGB

y

y

y

0x12

0xd1

R10

G10

B10

A2

UNORM

y

y

y

y

0x13

0xd2

R10

G10

B10

A2

UINT

y

0x15

0xd5

R8

G8

B8

A8

UNORM

y

y

y

y

0x18

0xd6

R8

G8

B8

A8

SRGB

y

y

y

0x19

0xd7

R8

G8

B8

A8

SNORM

y

0x1a

0xd8

R8

G8

B8

A8

SINT

y

0x1b

0xd9

R8

G8

B8

A8

UINT

y

0x1c

0xda

R16

G16

UNORM

y

0x1d

0xdb

R16

G16

SNORM

y

0x1e

0xdc

R16

G16

SINT

y

0x1f

0xdd

R16

G16

UINT

y

0x20

0xde

R16

G16

FLOAT

y

0x21

0xdf

B10

G10

R10

A2

UNORM

y

y

y

y

0x22

0xe0

R11

G11

B10

FLOAT

y

0x24

0xe3

?

?

?

?

?

y

?

0x27

0xe4

?

?

?

?

?

y

?

0x28

0xe5

R32

FLOAT

y

y

y

0x29

0xe6

B8

G8

R8

X8

UNORM

y

y

y

y

0x2a

0xe7

B8

G8

R8

X8

SRGB

y

y

y

0x2b

0xe8

B5

G6

R5

UNORM

y

y

y

y

0x2c

0xe9

B5

G5

R5

A1

UNORM

y

y

y

y

0x2d

0xea

R8

G8

UNORM

y

0x2e

0xeb

R8

G8

SNORM

y

0x2f

0xec

R8

G8

SINT

y

0x30

0xed

R8

G8

UINT

y

0x31

0xee

R16

UNORM

y

y

y

y

0x32

0xef

R16

SNORM

y

0x33

0xf0

R16

SINT

y

0x34

0xf1

R16

UINT

y

0x35

0xf2

R16

FLOAT

y

y

y

0x36

0xf3

R8

UNORM

y

y

y

y

0x37

0xf4

R8

SNORM

y

0x38

0xf5

R8

SINT

y

0x39

0xf6

R8

UINT

y

0x3a

0xf7

A8

UNORM

y

0x3b

0xf8

B5

G5

R5

X1

UNORM

y

y

y

y

0x3c

0xf9

R8

G8

B8

X8

UNORM

y

y

y

y

0x3d

0xfa

R8

G8

B8

X8

SRGB

y

y

y

0x3e

0xfb

B5

G5

R5

X1

UNORM

y

y

y

0x14

0xfc

B5

G5

R5

X1

UNORM

y

y

y

0x25

0xfd

B8

G8

R8

X8

UNORM

y

y

y

0x26

0xfe

B8

G8

R8

X8

UNORM

y

y

y

0x3f

0xff

Y32

UINT

y

y

y

0x23