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 |

