nil: Add a CSV version of the format table

This is much more readable than the macro mess we had before.  Most
notably because we no longer have this mess of #defines for format
support flags and instead have a character per flag and every every
supported flag is there every time.  This makes it way easier to figure
out what we're actually claiming a format can do.

This conversion was tested with a patch that did a memcmp() of this
table against the old one to ensure that the two tables are bit-for-bit
identical.  Later commits may modify the table in various ways but this
conversion to a CSV file is lossless.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28453>
This commit is contained in:
Faith Ekstrand
2024-03-28 15:53:09 -05:00
committed by Marge Bot
parent 3f50d72ec5
commit 70843be321
3 changed files with 507 additions and 1 deletions
+11 -1
View File
@@ -9,6 +9,16 @@ libnil_files = files(
'nil_image_tic.c',
)
nil_format_table = custom_target(
'nil_format_table',
input : files('nil_format_table_gen.py', 'nil_formats.csv'),
output : ['nil_format_table.h', 'nil_format_table.c'],
command : [
prog_python, '@INPUT0@', '--csv', '@INPUT1@',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@',
],
)
libnil_deps = [
idep_mesautil,
idep_nouveau_ws,
@@ -17,7 +27,7 @@ libnil_deps = [
_libnil = static_library(
'nil',
libnil_files,
[libnil_files, nil_format_table],
include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium],
dependencies : libnil_deps,
c_args : [no_override_init_args],
+212
View File
@@ -0,0 +1,212 @@
# Copyright 2024 Collabora Ltd.
# SPDX-License-Identifier: MIT
"""Generates nil_format_table.c"""
import argparse
import csv
import os
from mako import template
TEMPLATE_H = template.Template(text="""\
/* Copyright 2024 Collabora Ltd.
* SPDX-License-Identifier: MIT
*/
#ifndef ${guard}
#define ${guard}
#include "nil_format.h"
enum nil_format_support_flags {
NIL_FORMAT_SUPPORTS_TEXTURE_BIT = BITFIELD_BIT(0),
NIL_FORMAT_SUPPORTS_BUFFER_BIT = BITFIELD_BIT(1),
NIL_FORMAT_SUPPORTS_STORAGE_BIT = BITFIELD_BIT(2),
NIL_FORMAT_SUPPORTS_RENDER_BIT = BITFIELD_BIT(3),
NIL_FORMAT_SUPPORTS_ALPHA_BLEND_BIT = BITFIELD_BIT(4),
NIL_FORMAT_SUPPORTS_DEPTH_STENCIL_BIT = BITFIELD_BIT(5),
NIL_FORMAT_SUPPORTS_SCANOUT_BIT = BITFIELD_BIT(6),
};
struct nil_format_info {
unsigned czt:8;
unsigned support:24;
struct nil_tic_format tic;
};
extern const struct nil_format_info nil_format_table[PIPE_FORMAT_COUNT];
#endif /* ${guard} */
""");
TEMPLATE_C = template.Template(text="""\
/* Copyright 2024 Collabora Ltd.
* SPDX-License-Identifier: MIT
*/
/* This file is autogenerated by nil_format_table_gen.py. DO NOT EDIT! */
#include "nil_format_table.h"
#include "cl9097.h"
#include "cl9097tex.h"
#include "clb097.h"
#include "clb097tex.h"
const struct nil_format_info nil_format_table[PIPE_FORMAT_COUNT] = {
% for f in formats:
[PIPE_FORMAT_${f.pipe}] = {
.czt = ${f.czt()},
.support = ${f.support()},
.tic = {
.comp_sizes = ${f.tcs()},
.type_r = ${f.type(0)},
.type_g = ${f.type(1)},
.type_b = ${f.type(2)},
.type_a = ${f.type(3)},
.src_x = ${f.src(0)},
.src_y = ${f.src(1)},
.src_z = ${f.src(2)},
.src_w = ${f.src(3)},
},
},
% endfor
};
""");
CT_FORMAT_PREFIX = {
None : 'NV9097_SET_COLOR_TARGET_FORMAT_V_',
'maxwell' : 'NVB097_SET_COLOR_TARGET_FORMAT_V_',
'tk1' : 'NVB097_SET_COLOR_TARGET_FORMAT_V_',
}
ZT_FORMAT_PREFIX = {
None : 'NV9097_SET_ZT_FORMAT_V_',
'maxwell' : 'NVB097_SET_ZT_FORMAT_V_',
'tk1' : 'NVB097_SET_ZT_FORMAT_V_',
}
TCS_PREFIX = {
None : 'NV9097_TEXHEADV2_0_COMPONENT_SIZES_',
'maxwell' : 'NVB097_TEXHEAD_BL_COMPONENTS_SIZES_',
'tk1' : 'NVB097_TEXHEAD_BL_COMPONENTS_SIZES_',
}
DATA_TYPES = {
'S' : 'NV9097_TEXHEADV2_0_R_DATA_TYPE_NUM_SNORM',
'N' : 'NV9097_TEXHEADV2_0_R_DATA_TYPE_NUM_UNORM',
'I' : 'NV9097_TEXHEADV2_0_R_DATA_TYPE_NUM_SINT',
'U' : 'NV9097_TEXHEADV2_0_R_DATA_TYPE_NUM_UINT',
'F' : 'NV9097_TEXHEADV2_0_R_DATA_TYPE_NUM_FLOAT',
}
SOURCES = {
'0' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_ZERO',
'R' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_R',
'G' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_G',
'B' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_B',
'A' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_A',
'1' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_ONE',
}
SUPPORT_FLAGS = {
'T' : 'NIL_FORMAT_SUPPORTS_TEXTURE_BIT',
'B' : 'NIL_FORMAT_SUPPORTS_BUFFER_BIT',
'S' : 'NIL_FORMAT_SUPPORTS_STORAGE_BIT',
'C' : 'NIL_FORMAT_SUPPORTS_RENDER_BIT',
'A' : 'NIL_FORMAT_SUPPORTS_ALPHA_BLEND_BIT',
'Z' : 'NIL_FORMAT_SUPPORTS_DEPTH_STENCIL_BIT',
'D' : 'NIL_FORMAT_SUPPORTS_SCANOUT_BIT',
}
class Format(object):
def __init__(self, line):
self.pipe = line[0].strip()
self._czt = line[1].strip()
self._tcs = line[2].strip()
self._types = list(line[3].strip())
self._srcs = list(line[4].strip())
self._support = list(line[5].strip())
if len(line) > 6:
self.hw = line[6].strip().lower()
else:
self.hw = None
def czt(self):
if self._czt == 'NONE':
return CT_FORMAT_PREFIX[self.hw] + 'DISABLED'
elif 'Z' in self._support:
return ZT_FORMAT_PREFIX[self.hw] + self._czt
else:
return CT_FORMAT_PREFIX[self.hw] + self._czt
def support(self):
return ' | '.join(SUPPORT_FLAGS[f] for f in self._support)
def tcs(self):
return TCS_PREFIX[self.hw] + self._tcs
def type(self, comp):
if comp < len(self._types):
return DATA_TYPES[self._types[comp]]
else:
return DATA_TYPES['U']
def src(self, comp):
if self._srcs[comp] == '1':
# Find any component which isn't a 0/1 and look at that
# component's data type to determine whether or not 1 is an
# integer.
for s in self._srcs:
c = 'RGBA'.find(s)
if c >= 0:
if self._types[c] in 'SNF':
return SOURCES['1'] + '_FLOAT'
else:
return SOURCES['1'] + '_INT'
assert False, self.pipe + ': Failed to find non-constant component'
else:
c = 'RGBA'.find(self._srcs[comp])
assert c < len(self._types), self.pipe + ': Swizzle is out of bounds'
return SOURCES[self._srcs[comp]]
def reader(csvfile):
"""Wrapper around csv.reader that skips comments and blanks."""
# csv.reader actually reads the file one line at a time (it was designed to
# open excel generated sheets), so hold the file until all of the lines are
# read.
with open(csvfile, 'r') as f:
for line in csv.reader(f):
if line and not line[0].startswith('#'):
yield line
def main():
"""Main function."""
parser = argparse.ArgumentParser()
parser.add_argument('--csv', action='store', help='The CSV file to parse.')
parser.add_argument('--out-c', required=True, help='Output C file.')
parser.add_argument('--out-h', required=True, help='Output H file.')
args = parser.parse_args()
formats = [Format(l) for l in reader(args.csv)]
try:
with open(args.out_h, 'w', encoding='utf-8') as f:
guard = os.path.basename(args.out_h).replace('.', '_').upper()
f.write(TEMPLATE_H.render(guard=guard))
with open(args.out_c, 'w', encoding='utf-8') as f:
f.write(TEMPLATE_C.render(formats=formats))
except Exception:
# In the event there's an error, this imports some helpers from mako
# to print a useful stack trace and prints it, then exits with
# status 1, if python is run with debug; otherwise it just raises
# the exception
import sys
from mako import exceptions
print(exceptions.text_error_template().render(), file=sys.stderr)
sys.exit(1)
if __name__ == '__main__':
main()
+284
View File
@@ -0,0 +1,284 @@
# Copyright 2024 Collabora Ltd.
# SPDX-License-Identifier: MIT
# Columns:
# name: PIPE_FORMAT enum
# czt: Color/Z target format if renderable or NONE
# tcs: TIC component sizes
# type: Data type:
# S: SNORM
# N: UNORM
# I: SINT
# U: UINT
# F: FLOAT
# src: Swizzle of the form RGBAX01
# caps: Format capabilities:
# C: Color target
# T: Texture
# Z: Depth/stencil target
# B: Bufer
# A: Alpha blend
# S: Storage
# D: Scanout
# hw: First hardware generation on which the format
# name czt tcs type src support hw
# BGRA display formats
B8G8R8A8_UNORM , A8R8G8B8 , A8B8G8R8 , NNNN , BGRA , CTBASD
B8G8R8X8_UNORM , X8R8G8B8 , A8B8G8R8 , NNNN , BGR1 , CTAD
B8G8R8A8_SRGB , A8RL8GL8BL8 , A8B8G8R8 , NNNN , BGRA , CTAD
B8G8R8X8_SRGB , X8RL8GL8BL8 , A8B8G8R8 , NNNN , BGR1 , CTAD
R8G8B8A8_UNORM , A8B8G8R8 , A8B8G8R8 , NNNN , RGBA , CTBSA
R8G8B8X8_UNORM , X8B8G8R8 , A8B8G8R8 , NNNN , RGB1 , CTA
R8G8B8A8_SRGB , A8BL8GL8RL8 , A8B8G8R8 , NNNN , RGBA , CTA
R8G8B8X8_SRGB , X8BL8GL8RL8 , A8B8G8R8 , NNNN , RGB1 , CTA
# Depth/stencil formats
Z16_UNORM , Z16 , Z16 , NUUU , R001 , TZ , Maxwell
Z32_FLOAT , ZF32 , ZF32 , FUUU , R001 , TZ
Z24X8_UNORM , X8Z24 , X8Z24 , NUUU , R001 , TZ
X8Z24_UNORM , Z24S8 , Z24S8 , UNUU , G001 , TZ
Z24_UNORM_S8_UINT , S8Z24 , S8Z24 , NUUU , R001 , TZ
S8_UINT_Z24_UNORM , Z24S8 , Z24S8 , UNUU , G001 , TZ
Z32_FLOAT_S8X24_UINT , ZF32_X24S8 , ZF32_X24S8 , FUUU , R001 , TZ
# Stencil-only formats
S8_UINT , NONE , R8 , UUUU , R001 , T
X24S8_UINT , NONE , G8R24 , UUUU , G001 , T
S8X24_UINT , NONE , G24R8 , UUUU , R001 , T
X32_S8X24_UINT , NONE , R32_B24G8 , UUUU , G001 , T
B5G6R5_UNORM , R5G6B5 , B5G6R5 , NNNN , BGR1 , CTAD
R5G6B5_UNORM , NONE , B5G6R5 , NNNN , RGB1 , T
R5G5B5A1_UNORM , NONE , A1B5G5R5 , NNNN , RGBA , T
B5G5R5A1_UNORM , A1R5G5B5 , A1B5G5R5 , NNNN , BGRA , CTAD
B5G5R5X1_UNORM , X1R5G5B5 , A1B5G5R5 , NNNN , BGR1 , CTAD
A4B4G4R4_UNORM , NONE , A4B4G4R4 , NNNN , ABGR , T
A4R4G4B4_UNORM , NONE , A4B4G4R4 , NNNN , GBAR , T
B4G4R4A4_UNORM , NONE , A4B4G4R4 , NNNN , BGRA , T
B4G4R4X4_UNORM , NONE , A4B4G4R4 , NNNN , BGR1 , T
R4G4B4A4_UNORM , NONE , A4B4G4R4 , NNNN , RGBA , T
R4G4B4X4_UNORM , NONE , A4B4G4R4 , NNNN , RGB1 , T
R9G9B9E5_FLOAT , NONE , E5B9G9R9_SHAREDEXP, FFFF , RGB1 , T
R10G10B10A2_UNORM , A2B10G10R10 , A2B10G10R10 , NNNN , RGBA , TCBASD
R10G10B10X2_UNORM , A2B10G10R10 , A2B10G10R10 , NNNN , RGB1 , T
B10G10R10A2_UNORM , A2R10G10B10 , A2B10G10R10 , NNNN , BGRA , CTA
B10G10R10X2_UNORM , A2R10G10B10 , A2B10G10R10 , NNNN , BGR1 , T
R10G10B10A2_SNORM , NONE , A2B10G10R10 , SSSS , RGBA , T
B10G10R10A2_SNORM , NONE , A2B10G10R10 , SSSS , BGRA , T
R10G10B10A2_UINT , AU2BU10GU10RU10 , A2B10G10R10 , UUUU , RGBA , CTBS
B10G10R10A2_UINT , NONE , A2B10G10R10 , UUUU , BGRA , TB
R11G11B10_FLOAT , BF10GF11RF11 , BF10GF11RF11 , FFFF , RGB1 , CTBSA
L8_UNORM , R8 , R8 , NNNN , RRR1 , CTA
L8_SRGB , NONE , R8 , NNNN , RRR1 , T
L8_SNORM , RN8 , R8 , SSSS , RRR1 , CTA
L8_SINT , RS8 , R8 , IIII , RRR1 , CT
L8_UINT , RU8 , R8 , UUUU , RRR1 , CT
L16_UNORM , R16 , R16 , NNNN , RRR1 , CTA
L16_SNORM , RN16 , R16 , SSSS , RRR1 , CTA
L16_FLOAT , RF16 , R16 , FFFF , RRR1 , CTA
L16_SINT , RS16 , R16 , IIII , RRR1 , CT
L16_UINT , RU16 , R16 , UUUU , RRR1 , CT
L32_FLOAT , RF32 , R32 , FFFF , RRR1 , CTA
L32_SINT , RS32 , R32 , IIII , RRR1 , CT
L32_UINT , RU32 , R32 , UUUU , RRR1 , CT
I8_UNORM , R8 , R8 , NNNN , RRRR , CT
I8_SNORM , RN8 , R8 , SSSS , RRRR , CT
I8_SINT , RS8 , R8 , IIII , RRRR , CT
I8_UINT , RU8 , R8 , UUUU , RRRR , CT
I16_UNORM , R16 , R16 , NNNN , RRRR , CT
I16_SNORM , RN16 , R16 , SSSS , RRRR , CT
I16_FLOAT , RF16 , R16 , FFFF , RRRR , CT
I16_SINT , RS16 , R16 , IIII , RRRR , CT
I16_UINT , RU16 , R16 , UUUU , RRRR , CT
I32_FLOAT , RF32 , R32 , FFFF , RRRR , CT
I32_SINT , RS32 , R32 , IIII , RRRR , CT
I32_UINT , RU32 , R32 , UUUU , RRRR , CT
A8_UNORM , A8 , R8 , NNNN , 000R , CTBSA
A8_SNORM , RN8 , R8 , SSSS , 000R , T
A8_SINT , RS8 , R8 , IIII , 000R , T
A8_UINT , RU8 , R8 , UUUU , 000R , T
A16_UNORM , R16 , R16 , NNNN , 000R , T
A16_SNORM , RN16 , R16 , SSSS , 000R , T
A16_FLOAT , AF16 , R16 , FFFF , 000R , T
A16_SINT , RS16 , R16 , IIII , 000R , T
A16_UINT , RU16 , R16 , UUUU , 000R , T
A32_FLOAT , AF32 , R32 , FFFF , 000R , T
A32_SINT , RS32 , R32 , IIII , 000R , T
A32_UINT , RU32 , R32 , UUUU , 000R , T
L4A4_UNORM , NONE , G4R4 , NNNN , RRRG , T
L8A8_UNORM , G8R8 , G8R8 , NNNN , RRRG , T
L8A8_SNORM , GN8RN8 , G8R8 , SSSS , RRRG , T
L8A8_SRGB , NONE , G8R8 , NNNN , RRRG , T
L8A8_SINT , GS8RS8 , G8R8 , IIII , RRRG , T
L8A8_UINT , GU8RU8 , G8R8 , UUUU , RRRG , T
L16A16_UNORM , R16_G16 , R16_G16 , NNNN , RRRG , T
L16A16_SNORM , RN16_GN16 , R16_G16 , SSSS , RRRG , T
L16A16_FLOAT , RF16_GF16 , R16_G16 , FFFF , RRRG , T
L16A16_SINT , RS16_GS16 , R16_G16 , IIII , RRRG , T
L16A16_UINT , RU16_GU16 , R16_G16 , UUUU , RRRG , T
L32A32_FLOAT , RF32_GF32 , R32_G32 , FFFF , RRRG , T
L32A32_SINT , RS32_GS32 , R32_G32 , IIII , RRRG , T
L32A32_UINT , RU32_GU32 , R32_G32 , UUUU , RRRG , T
DXT1_RGB , NONE , DXT1 , NNNN , RGB1 , T
DXT1_SRGB , NONE , DXT1 , NNNN , RGB1 , T
DXT1_RGBA , NONE , DXT1 , NNNN , RGBA , T
DXT1_SRGBA , NONE , DXT1 , NNNN , RGBA , T
DXT3_RGBA , NONE , DXT23 , NNNN , RGBA , T
DXT3_SRGBA , NONE , DXT23 , NNNN , RGBA , T
DXT5_RGBA , NONE , DXT45 , NNNN , RGBA , T
DXT5_SRGBA , NONE , DXT45 , NNNN , RGBA , T
RGTC1_UNORM , NONE , DXN1 , NNNN , R001 , T
RGTC1_SNORM , NONE , DXN1 , SSSS , R001 , T
RGTC2_UNORM , NONE , DXN2 , NNNN , RG01 , T
RGTC2_SNORM , NONE , DXN2 , SSSS , RG01 , T
LATC1_UNORM , NONE , DXN1 , NNNN , RRR1 , T
LATC1_SNORM , NONE , DXN1 , SSSS , RRR1 , T
LATC2_UNORM , NONE , DXN2 , NNNN , RRRG , T
LATC2_SNORM , NONE , DXN2 , SSSS , RRRG , T
BPTC_RGBA_UNORM , NONE , BC7U , NNNN , RGBA , T
BPTC_SRGBA , NONE , BC7U , NNNN , RGBA , T
BPTC_RGB_FLOAT , NONE , BC6H_SF16 , FFFF , RGB1 , T
BPTC_RGB_UFLOAT , NONE , BC6H_UF16 , FFFF , RGB1 , T
ETC1_RGB8 , NONE , ETC2_RGB , NNNN , RGB1 , T , Maxwell
ETC2_RGB8 , NONE , ETC2_RGB , NNNN , RGB1 , T , Maxwell
ETC2_SRGB8 , NONE , ETC2_RGB , NNNN , RGB1 , T , Maxwell
ETC2_RGB8A1 , NONE , ETC2_RGB_PTA , NNNN , RGBA , T , Maxwell
ETC2_SRGB8A1 , NONE , ETC2_RGB_PTA , NNNN , RGBA , T , Maxwell
ETC2_RGBA8 , NONE , ETC2_RGBA , NNNN , RGBA , T , Maxwell
ETC2_SRGBA8 , NONE , ETC2_RGBA , NNNN , RGBA , T , Maxwell
ETC2_R11_UNORM , NONE , EAC , NNNN , R001 , T , Maxwell
ETC2_R11_SNORM , NONE , EAC , SSSS , R001 , T , Maxwell
ETC2_RG11_UNORM , NONE , EACX2 , NNNN , RG01 , T , Maxwell
ETC2_RG11_SNORM , NONE , EACX2 , SSSS , RG01 , T , Maxwell
ASTC_4x4 , NONE , ASTC_2D_4X4 , NNNN , RGBA , T , TK1
ASTC_5x4 , NONE , ASTC_2D_5X4 , NNNN , RGBA , T , TK1
ASTC_5x5 , NONE , ASTC_2D_5X5 , NNNN , RGBA , T , TK1
ASTC_6x5 , NONE , ASTC_2D_6X5 , NNNN , RGBA , T , TK1
ASTC_6x6 , NONE , ASTC_2D_6X6 , NNNN , RGBA , T , TK1
ASTC_8x5 , NONE , ASTC_2D_8X5 , NNNN , RGBA , T , TK1
ASTC_8x6 , NONE , ASTC_2D_8X6 , NNNN , RGBA , T , TK1
ASTC_8x8 , NONE , ASTC_2D_8X8 , NNNN , RGBA , T , TK1
ASTC_10x5 , NONE , ASTC_2D_10X5 , NNNN , RGBA , T , TK1
ASTC_10x6 , NONE , ASTC_2D_10X6 , NNNN , RGBA , T , TK1
ASTC_10x8 , NONE , ASTC_2D_10X8 , NNNN , RGBA , T , TK1
ASTC_10x10 , NONE , ASTC_2D_10X10 , NNNN , RGBA , T , TK1
ASTC_12x10 , NONE , ASTC_2D_12X10 , NNNN , RGBA , T , TK1
ASTC_12x12 , NONE , ASTC_2D_12X12 , NNNN , RGBA , T , TK1
ASTC_4x4_SRGB , NONE , ASTC_2D_4X4 , NNNN , RGBA , T , TK1
ASTC_5x4_SRGB , NONE , ASTC_2D_5X4 , NNNN , RGBA , T , TK1
ASTC_5x5_SRGB , NONE , ASTC_2D_5X5 , NNNN , RGBA , T , TK1
ASTC_6x5_SRGB , NONE , ASTC_2D_6X5 , NNNN , RGBA , T , TK1
ASTC_6x6_SRGB , NONE , ASTC_2D_6X6 , NNNN , RGBA , T , TK1
ASTC_8x5_SRGB , NONE , ASTC_2D_8X5 , NNNN , RGBA , T , TK1
ASTC_8x6_SRGB , NONE , ASTC_2D_8X6 , NNNN , RGBA , T , TK1
ASTC_8x8_SRGB , NONE , ASTC_2D_8X8 , NNNN , RGBA , T , TK1
ASTC_10x5_SRGB , NONE , ASTC_2D_10X5 , NNNN , RGBA , T , TK1
ASTC_10x6_SRGB , NONE , ASTC_2D_10X6 , NNNN , RGBA , T , TK1
ASTC_10x8_SRGB , NONE , ASTC_2D_10X8 , NNNN , RGBA , T , TK1
ASTC_10x10_SRGB , NONE , ASTC_2D_10X10 , NNNN , RGBA , T , TK1
ASTC_12x10_SRGB , NONE , ASTC_2D_12X10 , NNNN , RGBA , T , TK1
ASTC_12x12_SRGB , NONE , ASTC_2D_12X12 , NNNN , RGBA , T , TK1
R32G32B32A32_FLOAT , RF32_GF32_BF32_AF32 , R32_G32_B32_A32 , FFFF , RGBA , CTBSA
R32G32B32A32_UNORM , NONE , R32_G32_B32_A32 , NNNN , RGBA , T
R32G32B32A32_SNORM , NONE , R32_G32_B32_A32 , SSSS , RGBA , T
R32G32B32A32_SINT , RS32_GS32_BS32_AS32 , R32_G32_B32_A32 , IIII , RGBA , CTBS
R32G32B32A32_UINT , RU32_GU32_BU32_AU32 , R32_G32_B32_A32 , UUUU , RGBA , CTBS
R32G32B32X32_FLOAT , RF32_GF32_BF32_X32 , R32_G32_B32_A32 , FFFF , RGB1 , CTA
R32G32B32X32_SINT , RS32_GS32_BS32_X32 , R32_G32_B32_A32 , IIII , RGB1 , CT
R32G32B32X32_UINT , RU32_GU32_BU32_X32 , R32_G32_B32_A32 , UUUU , RGB1 , CT
R32G32B32_FLOAT , NONE , R32_G32_B32 , FFFF , RGB1 , TB
R32G32B32_SINT , NONE , R32_G32_B32 , IIII , RGB1 , TB
R32G32B32_UINT , NONE , R32_G32_B32 , UUUU , RGB1 , TB
R32G32_FLOAT , RF32_GF32 , R32_G32 , FFFF , RG01 , CTBSA
R32G32_UNORM , NONE , R32_G32 , NNNN , RG01 , T
R32G32_SNORM , NONE , R32_G32 , SSSS , RG01 , T
R32G32_SINT , RS32_GS32 , R32_G32 , IIII , RG01 , CTBS
R32G32_UINT , RU32_GU32 , R32_G32 , UUUU , RG01 , CTBS
R32_FLOAT , RF32 , R32 , FFFF , R001 , CTBSA
R32_UNORM , NONE , R32 , NNNN , R001 , T
R32_SNORM , NONE , R32 , SSSS , R001 , T
R32_SINT , RS32 , R32 , IIII , R001 , CTBS
R32_UINT , RU32 , R32 , UUUU , R001 , CTBS
R64_SINT , NONE , R32_G32 , IIII , RG01 , S
R64_UINT , NONE , R32_G32 , UUUU , RG01 , S
R16G16B16A16_FLOAT , RF16_GF16_BF16_AF16 , R16_G16_B16_A16 , FFFF , RGBA , CTBSA
R16G16B16A16_UNORM , R16_G16_B16_A16 , R16_G16_B16_A16 , NNNN , RGBA , CTBSA
R16G16B16A16_SNORM , RN16_GN16_BN16_AN16 , R16_G16_B16_A16 , SSSS , RGBA , CTBSA
R16G16B16A16_SINT , RS16_GS16_BS16_AS16 , R16_G16_B16_A16 , IIII , RGBA , CTBS
R16G16B16A16_UINT , RU16_GU16_BU16_AU16 , R16_G16_B16_A16 , UUUU , RGBA , CTBS
R16G16B16X16_FLOAT , RF16_GF16_BF16_X16 , R16_G16_B16_A16 , FFFF , RGB1 , CTA
R16G16B16X16_UNORM , R16_G16_B16_A16 , R16_G16_B16_A16 , NNNN , RGB1 , T
R16G16B16X16_SNORM , RN16_GN16_BN16_AN16 , R16_G16_B16_A16 , SSSS , RGB1 , T
R16G16B16X16_SINT , RS16_GS16_BS16_AS16 , R16_G16_B16_A16 , IIII , RGB1 , CT
R16G16B16X16_UINT , RU16_GU16_BU16_AU16 , R16_G16_B16_A16 , UUUU , RGB1 , CT
R16G16_FLOAT , RF16_GF16 , R16_G16 , FFFF , RG01 , CTBSA
R16G16_UNORM , R16_G16 , R16_G16 , NNNN , RG01 , CTBSA
R16G16_SNORM , RN16_GN16 , R16_G16 , SSSS , RG01 , CTBSA
R16G16_SINT , RS16_GS16 , R16_G16 , IIII , RG01 , CTBS
R16G16_UINT , RU16_GU16 , R16_G16 , UUUU , RG01 , CTBS
R16_FLOAT , RF16 , R16 , FFFF , R001 , CTBSA
R16_UNORM , R16 , R16 , NNNN , R001 , CTBSA
R16_SNORM , RN16 , R16 , SSSS , R001 , CTBSA
R16_SINT , RS16 , R16 , IIII , R001 , CTBS
R16_UINT , RU16 , R16 , UUUU , R001 , CTBS
R8G8B8A8_SNORM , AN8BN8GN8RN8 , A8B8G8R8 , SSSS , RGBA , CTBSA
R8G8B8A8_SINT , AS8BS8GS8RS8 , A8B8G8R8 , IIII , RGBA , CTBS
R8G8B8A8_UINT , AU8BU8GU8RU8 , A8B8G8R8 , UUUU , RGBA , CTBS
R8G8B8X8_SNORM , AN8BN8GN8RN8 , A8B8G8R8 , SSSS , RGB1 , T
R8G8B8X8_SINT , AS8BS8GS8RS8 , A8B8G8R8 , IIII , RGB1 , CT
R8G8B8X8_UINT , AU8BU8GU8RU8 , A8B8G8R8 , UUUU , RGB1 , CT
R8G8_UNORM , G8R8 , G8R8 , NNNN , RG01 , CTBSA
R8G8_SNORM , GN8RN8 , G8R8 , SSSS , RG01 , CTBSA
R8G8_SINT , GS8RS8 , G8R8 , IIII , RG01 , CTBS
R8G8_UINT , GU8RU8 , G8R8 , UUUU , RG01 , CTBS
# On Fermi+, the green component doesn't get decoding?
# R8G8_SRGB , NONE , G8R8 , NNNN , RG01 , T
R8_UNORM , R8 , R8 , NNNN , R001 , CTBSA
R8_SNORM , RN8 , R8 , SSSS , R001 , CTBSA
R8_SINT , RS8 , R8 , IIII , R001 , CTBS
R8_UINT , RU8 , R8 , UUUU , R001 , CTBS
R8_SRGB , NONE , R8 , NNNN , R001 , T
R8G8_B8G8_UNORM , NONE , G8B8G8R8 , NNNN , RGB1 , T
G8R8_B8R8_UNORM , NONE , G8B8G8R8 , NNNN , GRB1 , T
G8R8_G8B8_UNORM , NONE , B8G8R8G8 , NNNN , RGB1 , T
R8G8_R8B8_UNORM , NONE , B8G8R8G8 , NNNN , GRB1 , T
G8B8_G8R8_UNORM , NONE , B8G8R8G8 , NNNN , BGR1 , T
B8G8_R8G8_UNORM , NONE , G8B8G8R8 , NNNN , BGR1 , T
R1_UNORM , NONE , R1 , NNNN , R001 , T
R4A4_UNORM , NONE , G4R4 , NNNN , R00G , T
R8A8_UNORM , NONE , G8R8 , NNNN , R00G , T
A4R4_UNORM , NONE , G4R4 , NNNN , G00R , T
A8R8_UNORM , NONE , G8R8 , NNNN , G00R , T
R8SG8SB8UX8U_NORM , NONE , A8B8G8R8 , SSNN , RGB1 , T
R5SG5SB6U_NORM , NONE , B6G5R5 , SSNN , RGB1 , T
1 # Copyright 2024 Collabora Ltd.
2 # SPDX-License-Identifier: MIT
3 # Columns:
4 # name: PIPE_FORMAT enum
5 # czt: Color/Z target format if renderable or NONE
6 # tcs: TIC component sizes
7 # type: Data type:
8 # S: SNORM
9 # N: UNORM
10 # I: SINT
11 # U: UINT
12 # F: FLOAT
13 # src: Swizzle of the form RGBAX01
14 # caps: Format capabilities:
15 # C: Color target
16 # T: Texture
17 # Z: Depth/stencil target
18 # B: Bufer
19 # A: Alpha blend
20 # S: Storage
21 # D: Scanout
22 # hw: First hardware generation on which the format
23 # name czt tcs type src support hw
24 # BGRA display formats
25 B8G8R8A8_UNORM A8R8G8B8 A8B8G8R8 NNNN BGRA CTBASD
26 B8G8R8X8_UNORM X8R8G8B8 A8B8G8R8 NNNN BGR1 CTAD
27 B8G8R8A8_SRGB A8RL8GL8BL8 A8B8G8R8 NNNN BGRA CTAD
28 B8G8R8X8_SRGB X8RL8GL8BL8 A8B8G8R8 NNNN BGR1 CTAD
29 R8G8B8A8_UNORM A8B8G8R8 A8B8G8R8 NNNN RGBA CTBSA
30 R8G8B8X8_UNORM X8B8G8R8 A8B8G8R8 NNNN RGB1 CTA
31 R8G8B8A8_SRGB A8BL8GL8RL8 A8B8G8R8 NNNN RGBA CTA
32 R8G8B8X8_SRGB X8BL8GL8RL8 A8B8G8R8 NNNN RGB1 CTA
33 # Depth/stencil formats
34 Z16_UNORM Z16 Z16 NUUU R001 TZ Maxwell
35 Z32_FLOAT ZF32 ZF32 FUUU R001 TZ
36 Z24X8_UNORM X8Z24 X8Z24 NUUU R001 TZ
37 X8Z24_UNORM Z24S8 Z24S8 UNUU G001 TZ
38 Z24_UNORM_S8_UINT S8Z24 S8Z24 NUUU R001 TZ
39 S8_UINT_Z24_UNORM Z24S8 Z24S8 UNUU G001 TZ
40 Z32_FLOAT_S8X24_UINT ZF32_X24S8 ZF32_X24S8 FUUU R001 TZ
41 # Stencil-only formats
42 S8_UINT NONE R8 UUUU R001 T
43 X24S8_UINT NONE G8R24 UUUU G001 T
44 S8X24_UINT NONE G24R8 UUUU R001 T
45 X32_S8X24_UINT NONE R32_B24G8 UUUU G001 T
46 B5G6R5_UNORM R5G6B5 B5G6R5 NNNN BGR1 CTAD
47 R5G6B5_UNORM NONE B5G6R5 NNNN RGB1 T
48 R5G5B5A1_UNORM NONE A1B5G5R5 NNNN RGBA T
49 B5G5R5A1_UNORM A1R5G5B5 A1B5G5R5 NNNN BGRA CTAD
50 B5G5R5X1_UNORM X1R5G5B5 A1B5G5R5 NNNN BGR1 CTAD
51 A4B4G4R4_UNORM NONE A4B4G4R4 NNNN ABGR T
52 A4R4G4B4_UNORM NONE A4B4G4R4 NNNN GBAR T
53 B4G4R4A4_UNORM NONE A4B4G4R4 NNNN BGRA T
54 B4G4R4X4_UNORM NONE A4B4G4R4 NNNN BGR1 T
55 R4G4B4A4_UNORM NONE A4B4G4R4 NNNN RGBA T
56 R4G4B4X4_UNORM NONE A4B4G4R4 NNNN RGB1 T
57 R9G9B9E5_FLOAT NONE E5B9G9R9_SHAREDEXP FFFF RGB1 T
58 R10G10B10A2_UNORM A2B10G10R10 A2B10G10R10 NNNN RGBA TCBASD
59 R10G10B10X2_UNORM A2B10G10R10 A2B10G10R10 NNNN RGB1 T
60 B10G10R10A2_UNORM A2R10G10B10 A2B10G10R10 NNNN BGRA CTA
61 B10G10R10X2_UNORM A2R10G10B10 A2B10G10R10 NNNN BGR1 T
62 R10G10B10A2_SNORM NONE A2B10G10R10 SSSS RGBA T
63 B10G10R10A2_SNORM NONE A2B10G10R10 SSSS BGRA T
64 R10G10B10A2_UINT AU2BU10GU10RU10 A2B10G10R10 UUUU RGBA CTBS
65 B10G10R10A2_UINT NONE A2B10G10R10 UUUU BGRA TB
66 R11G11B10_FLOAT BF10GF11RF11 BF10GF11RF11 FFFF RGB1 CTBSA
67 L8_UNORM R8 R8 NNNN RRR1 CTA
68 L8_SRGB NONE R8 NNNN RRR1 T
69 L8_SNORM RN8 R8 SSSS RRR1 CTA
70 L8_SINT RS8 R8 IIII RRR1 CT
71 L8_UINT RU8 R8 UUUU RRR1 CT
72 L16_UNORM R16 R16 NNNN RRR1 CTA
73 L16_SNORM RN16 R16 SSSS RRR1 CTA
74 L16_FLOAT RF16 R16 FFFF RRR1 CTA
75 L16_SINT RS16 R16 IIII RRR1 CT
76 L16_UINT RU16 R16 UUUU RRR1 CT
77 L32_FLOAT RF32 R32 FFFF RRR1 CTA
78 L32_SINT RS32 R32 IIII RRR1 CT
79 L32_UINT RU32 R32 UUUU RRR1 CT
80 I8_UNORM R8 R8 NNNN RRRR CT
81 I8_SNORM RN8 R8 SSSS RRRR CT
82 I8_SINT RS8 R8 IIII RRRR CT
83 I8_UINT RU8 R8 UUUU RRRR CT
84 I16_UNORM R16 R16 NNNN RRRR CT
85 I16_SNORM RN16 R16 SSSS RRRR CT
86 I16_FLOAT RF16 R16 FFFF RRRR CT
87 I16_SINT RS16 R16 IIII RRRR CT
88 I16_UINT RU16 R16 UUUU RRRR CT
89 I32_FLOAT RF32 R32 FFFF RRRR CT
90 I32_SINT RS32 R32 IIII RRRR CT
91 I32_UINT RU32 R32 UUUU RRRR CT
92 A8_UNORM A8 R8 NNNN 000R CTBSA
93 A8_SNORM RN8 R8 SSSS 000R T
94 A8_SINT RS8 R8 IIII 000R T
95 A8_UINT RU8 R8 UUUU 000R T
96 A16_UNORM R16 R16 NNNN 000R T
97 A16_SNORM RN16 R16 SSSS 000R T
98 A16_FLOAT AF16 R16 FFFF 000R T
99 A16_SINT RS16 R16 IIII 000R T
100 A16_UINT RU16 R16 UUUU 000R T
101 A32_FLOAT AF32 R32 FFFF 000R T
102 A32_SINT RS32 R32 IIII 000R T
103 A32_UINT RU32 R32 UUUU 000R T
104 L4A4_UNORM NONE G4R4 NNNN RRRG T
105 L8A8_UNORM G8R8 G8R8 NNNN RRRG T
106 L8A8_SNORM GN8RN8 G8R8 SSSS RRRG T
107 L8A8_SRGB NONE G8R8 NNNN RRRG T
108 L8A8_SINT GS8RS8 G8R8 IIII RRRG T
109 L8A8_UINT GU8RU8 G8R8 UUUU RRRG T
110 L16A16_UNORM R16_G16 R16_G16 NNNN RRRG T
111 L16A16_SNORM RN16_GN16 R16_G16 SSSS RRRG T
112 L16A16_FLOAT RF16_GF16 R16_G16 FFFF RRRG T
113 L16A16_SINT RS16_GS16 R16_G16 IIII RRRG T
114 L16A16_UINT RU16_GU16 R16_G16 UUUU RRRG T
115 L32A32_FLOAT RF32_GF32 R32_G32 FFFF RRRG T
116 L32A32_SINT RS32_GS32 R32_G32 IIII RRRG T
117 L32A32_UINT RU32_GU32 R32_G32 UUUU RRRG T
118 DXT1_RGB NONE DXT1 NNNN RGB1 T
119 DXT1_SRGB NONE DXT1 NNNN RGB1 T
120 DXT1_RGBA NONE DXT1 NNNN RGBA T
121 DXT1_SRGBA NONE DXT1 NNNN RGBA T
122 DXT3_RGBA NONE DXT23 NNNN RGBA T
123 DXT3_SRGBA NONE DXT23 NNNN RGBA T
124 DXT5_RGBA NONE DXT45 NNNN RGBA T
125 DXT5_SRGBA NONE DXT45 NNNN RGBA T
126 RGTC1_UNORM NONE DXN1 NNNN R001 T
127 RGTC1_SNORM NONE DXN1 SSSS R001 T
128 RGTC2_UNORM NONE DXN2 NNNN RG01 T
129 RGTC2_SNORM NONE DXN2 SSSS RG01 T
130 LATC1_UNORM NONE DXN1 NNNN RRR1 T
131 LATC1_SNORM NONE DXN1 SSSS RRR1 T
132 LATC2_UNORM NONE DXN2 NNNN RRRG T
133 LATC2_SNORM NONE DXN2 SSSS RRRG T
134 BPTC_RGBA_UNORM NONE BC7U NNNN RGBA T
135 BPTC_SRGBA NONE BC7U NNNN RGBA T
136 BPTC_RGB_FLOAT NONE BC6H_SF16 FFFF RGB1 T
137 BPTC_RGB_UFLOAT NONE BC6H_UF16 FFFF RGB1 T
138 ETC1_RGB8 NONE ETC2_RGB NNNN RGB1 T Maxwell
139 ETC2_RGB8 NONE ETC2_RGB NNNN RGB1 T Maxwell
140 ETC2_SRGB8 NONE ETC2_RGB NNNN RGB1 T Maxwell
141 ETC2_RGB8A1 NONE ETC2_RGB_PTA NNNN RGBA T Maxwell
142 ETC2_SRGB8A1 NONE ETC2_RGB_PTA NNNN RGBA T Maxwell
143 ETC2_RGBA8 NONE ETC2_RGBA NNNN RGBA T Maxwell
144 ETC2_SRGBA8 NONE ETC2_RGBA NNNN RGBA T Maxwell
145 ETC2_R11_UNORM NONE EAC NNNN R001 T Maxwell
146 ETC2_R11_SNORM NONE EAC SSSS R001 T Maxwell
147 ETC2_RG11_UNORM NONE EACX2 NNNN RG01 T Maxwell
148 ETC2_RG11_SNORM NONE EACX2 SSSS RG01 T Maxwell
149 ASTC_4x4 NONE ASTC_2D_4X4 NNNN RGBA T TK1
150 ASTC_5x4 NONE ASTC_2D_5X4 NNNN RGBA T TK1
151 ASTC_5x5 NONE ASTC_2D_5X5 NNNN RGBA T TK1
152 ASTC_6x5 NONE ASTC_2D_6X5 NNNN RGBA T TK1
153 ASTC_6x6 NONE ASTC_2D_6X6 NNNN RGBA T TK1
154 ASTC_8x5 NONE ASTC_2D_8X5 NNNN RGBA T TK1
155 ASTC_8x6 NONE ASTC_2D_8X6 NNNN RGBA T TK1
156 ASTC_8x8 NONE ASTC_2D_8X8 NNNN RGBA T TK1
157 ASTC_10x5 NONE ASTC_2D_10X5 NNNN RGBA T TK1
158 ASTC_10x6 NONE ASTC_2D_10X6 NNNN RGBA T TK1
159 ASTC_10x8 NONE ASTC_2D_10X8 NNNN RGBA T TK1
160 ASTC_10x10 NONE ASTC_2D_10X10 NNNN RGBA T TK1
161 ASTC_12x10 NONE ASTC_2D_12X10 NNNN RGBA T TK1
162 ASTC_12x12 NONE ASTC_2D_12X12 NNNN RGBA T TK1
163 ASTC_4x4_SRGB NONE ASTC_2D_4X4 NNNN RGBA T TK1
164 ASTC_5x4_SRGB NONE ASTC_2D_5X4 NNNN RGBA T TK1
165 ASTC_5x5_SRGB NONE ASTC_2D_5X5 NNNN RGBA T TK1
166 ASTC_6x5_SRGB NONE ASTC_2D_6X5 NNNN RGBA T TK1
167 ASTC_6x6_SRGB NONE ASTC_2D_6X6 NNNN RGBA T TK1
168 ASTC_8x5_SRGB NONE ASTC_2D_8X5 NNNN RGBA T TK1
169 ASTC_8x6_SRGB NONE ASTC_2D_8X6 NNNN RGBA T TK1
170 ASTC_8x8_SRGB NONE ASTC_2D_8X8 NNNN RGBA T TK1
171 ASTC_10x5_SRGB NONE ASTC_2D_10X5 NNNN RGBA T TK1
172 ASTC_10x6_SRGB NONE ASTC_2D_10X6 NNNN RGBA T TK1
173 ASTC_10x8_SRGB NONE ASTC_2D_10X8 NNNN RGBA T TK1
174 ASTC_10x10_SRGB NONE ASTC_2D_10X10 NNNN RGBA T TK1
175 ASTC_12x10_SRGB NONE ASTC_2D_12X10 NNNN RGBA T TK1
176 ASTC_12x12_SRGB NONE ASTC_2D_12X12 NNNN RGBA T TK1
177 R32G32B32A32_FLOAT RF32_GF32_BF32_AF32 R32_G32_B32_A32 FFFF RGBA CTBSA
178 R32G32B32A32_UNORM NONE R32_G32_B32_A32 NNNN RGBA T
179 R32G32B32A32_SNORM NONE R32_G32_B32_A32 SSSS RGBA T
180 R32G32B32A32_SINT RS32_GS32_BS32_AS32 R32_G32_B32_A32 IIII RGBA CTBS
181 R32G32B32A32_UINT RU32_GU32_BU32_AU32 R32_G32_B32_A32 UUUU RGBA CTBS
182 R32G32B32X32_FLOAT RF32_GF32_BF32_X32 R32_G32_B32_A32 FFFF RGB1 CTA
183 R32G32B32X32_SINT RS32_GS32_BS32_X32 R32_G32_B32_A32 IIII RGB1 CT
184 R32G32B32X32_UINT RU32_GU32_BU32_X32 R32_G32_B32_A32 UUUU RGB1 CT
185 R32G32B32_FLOAT NONE R32_G32_B32 FFFF RGB1 TB
186 R32G32B32_SINT NONE R32_G32_B32 IIII RGB1 TB
187 R32G32B32_UINT NONE R32_G32_B32 UUUU RGB1 TB
188 R32G32_FLOAT RF32_GF32 R32_G32 FFFF RG01 CTBSA
189 R32G32_UNORM NONE R32_G32 NNNN RG01 T
190 R32G32_SNORM NONE R32_G32 SSSS RG01 T
191 R32G32_SINT RS32_GS32 R32_G32 IIII RG01 CTBS
192 R32G32_UINT RU32_GU32 R32_G32 UUUU RG01 CTBS
193 R32_FLOAT RF32 R32 FFFF R001 CTBSA
194 R32_UNORM NONE R32 NNNN R001 T
195 R32_SNORM NONE R32 SSSS R001 T
196 R32_SINT RS32 R32 IIII R001 CTBS
197 R32_UINT RU32 R32 UUUU R001 CTBS
198 R64_SINT NONE R32_G32 IIII RG01 S
199 R64_UINT NONE R32_G32 UUUU RG01 S
200 R16G16B16A16_FLOAT RF16_GF16_BF16_AF16 R16_G16_B16_A16 FFFF RGBA CTBSA
201 R16G16B16A16_UNORM R16_G16_B16_A16 R16_G16_B16_A16 NNNN RGBA CTBSA
202 R16G16B16A16_SNORM RN16_GN16_BN16_AN16 R16_G16_B16_A16 SSSS RGBA CTBSA
203 R16G16B16A16_SINT RS16_GS16_BS16_AS16 R16_G16_B16_A16 IIII RGBA CTBS
204 R16G16B16A16_UINT RU16_GU16_BU16_AU16 R16_G16_B16_A16 UUUU RGBA CTBS
205 R16G16B16X16_FLOAT RF16_GF16_BF16_X16 R16_G16_B16_A16 FFFF RGB1 CTA
206 R16G16B16X16_UNORM R16_G16_B16_A16 R16_G16_B16_A16 NNNN RGB1 T
207 R16G16B16X16_SNORM RN16_GN16_BN16_AN16 R16_G16_B16_A16 SSSS RGB1 T
208 R16G16B16X16_SINT RS16_GS16_BS16_AS16 R16_G16_B16_A16 IIII RGB1 CT
209 R16G16B16X16_UINT RU16_GU16_BU16_AU16 R16_G16_B16_A16 UUUU RGB1 CT
210 R16G16_FLOAT RF16_GF16 R16_G16 FFFF RG01 CTBSA
211 R16G16_UNORM R16_G16 R16_G16 NNNN RG01 CTBSA
212 R16G16_SNORM RN16_GN16 R16_G16 SSSS RG01 CTBSA
213 R16G16_SINT RS16_GS16 R16_G16 IIII RG01 CTBS
214 R16G16_UINT RU16_GU16 R16_G16 UUUU RG01 CTBS
215 R16_FLOAT RF16 R16 FFFF R001 CTBSA
216 R16_UNORM R16 R16 NNNN R001 CTBSA
217 R16_SNORM RN16 R16 SSSS R001 CTBSA
218 R16_SINT RS16 R16 IIII R001 CTBS
219 R16_UINT RU16 R16 UUUU R001 CTBS
220 R8G8B8A8_SNORM AN8BN8GN8RN8 A8B8G8R8 SSSS RGBA CTBSA
221 R8G8B8A8_SINT AS8BS8GS8RS8 A8B8G8R8 IIII RGBA CTBS
222 R8G8B8A8_UINT AU8BU8GU8RU8 A8B8G8R8 UUUU RGBA CTBS
223 R8G8B8X8_SNORM AN8BN8GN8RN8 A8B8G8R8 SSSS RGB1 T
224 R8G8B8X8_SINT AS8BS8GS8RS8 A8B8G8R8 IIII RGB1 CT
225 R8G8B8X8_UINT AU8BU8GU8RU8 A8B8G8R8 UUUU RGB1 CT
226 R8G8_UNORM G8R8 G8R8 NNNN RG01 CTBSA
227 R8G8_SNORM GN8RN8 G8R8 SSSS RG01 CTBSA
228 R8G8_SINT GS8RS8 G8R8 IIII RG01 CTBS
229 R8G8_UINT GU8RU8 G8R8 UUUU RG01 CTBS
230 # On Fermi+ the green component doesn't get decoding?
231 # R8G8_SRGB NONE G8R8 NNNN RG01 T
232 R8_UNORM R8 R8 NNNN R001 CTBSA
233 R8_SNORM RN8 R8 SSSS R001 CTBSA
234 R8_SINT RS8 R8 IIII R001 CTBS
235 R8_UINT RU8 R8 UUUU R001 CTBS
236 R8_SRGB NONE R8 NNNN R001 T
237 R8G8_B8G8_UNORM NONE G8B8G8R8 NNNN RGB1 T
238 G8R8_B8R8_UNORM NONE G8B8G8R8 NNNN GRB1 T
239 G8R8_G8B8_UNORM NONE B8G8R8G8 NNNN RGB1 T
240 R8G8_R8B8_UNORM NONE B8G8R8G8 NNNN GRB1 T
241 G8B8_G8R8_UNORM NONE B8G8R8G8 NNNN BGR1 T
242 B8G8_R8G8_UNORM NONE G8B8G8R8 NNNN BGR1 T
243 R1_UNORM NONE R1 NNNN R001 T
244 R4A4_UNORM NONE G4R4 NNNN R00G T
245 R8A8_UNORM NONE G8R8 NNNN R00G T
246 A4R4_UNORM NONE G4R4 NNNN G00R T
247 A8R8_UNORM NONE G8R8 NNNN G00R T
248 R8SG8SB8UX8U_NORM NONE A8B8G8R8 SSNN RGB1 T
249 R5SG5SB6U_NORM NONE B6G5R5 SSNN RGB1 T