nvk/nil: add texture header v2 support for hopper/blackwell
The texture header got redefined and some fields got reworked, deriving it from the old info doesn't seem trivial, so introduce a second column to handle the v2 header info. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35484>
This commit is contained in:
@@ -27,8 +27,9 @@ nv_classes = [
|
||||
'clc6c0',
|
||||
'clc797',
|
||||
'clc7c0',
|
||||
'clcd97',
|
||||
'clcb97',
|
||||
'clcbc0',
|
||||
'clcd97',
|
||||
'clcdc0',
|
||||
'clcec0',
|
||||
]
|
||||
|
||||
@@ -15,6 +15,8 @@ use nvidia_headers::classes::clb097::MAXWELL_A;
|
||||
use nvidia_headers::classes::clc097::tex as clc097;
|
||||
use nvidia_headers::classes::clc097::PASCAL_A;
|
||||
use nvidia_headers::classes::clc397::VOLTA_A;
|
||||
use nvidia_headers::classes::clcb97::tex as clcb97;
|
||||
use nvidia_headers::classes::clcb97::HOPPER_A;
|
||||
use paste::paste;
|
||||
use std::ops::Range;
|
||||
|
||||
@@ -146,6 +148,31 @@ fn nvb097_set_th_bl_0(
|
||||
th.set_field(clb097::TEXHEAD_BL_W_SOURCE, source[3]);
|
||||
}
|
||||
|
||||
fn nvcb97_set_th_bl_0<'a>(
|
||||
th: &mut THBitView<'a>,
|
||||
format: &Format,
|
||||
swizzle: [nil_rs_bindings::pipe_swizzle; 4],
|
||||
) {
|
||||
let fmt = &format.info().tic;
|
||||
let is_int = format.is_integer();
|
||||
let source = [
|
||||
nvb097_th_bl_source(fmt, swizzle[0], is_int),
|
||||
nvb097_th_bl_source(fmt, swizzle[1], is_int),
|
||||
nvb097_th_bl_source(fmt, swizzle[2], is_int),
|
||||
nvb097_th_bl_source(fmt, swizzle[3], is_int),
|
||||
];
|
||||
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_COMPONENTS, fmt.comp_sizes());
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_BL_DATA_TYPE,
|
||||
format.info().tic_v2_data_type(),
|
||||
);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_X_SOURCE, source[0]);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_Y_SOURCE, source[1]);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_Z_SOURCE, source[2]);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_W_SOURCE, source[3]);
|
||||
}
|
||||
|
||||
fn pipe_to_nv_texture_type(ty: ViewType) -> u32 {
|
||||
match ty {
|
||||
ViewType::_1D => clb097::TEXHEAD_BL_TEXTURE_TYPE_ONE_D,
|
||||
@@ -518,6 +545,191 @@ fn nvb097_fill_image_view_desc(
|
||||
th.set_ufixed(clb097::TEXHEAD_BL_MIN_LOD_CLAMP, min_lod_clamp);
|
||||
}
|
||||
|
||||
fn nvcb97_fill_image_view_desc(
|
||||
_dev: &nil_rs_bindings::nv_device_info,
|
||||
image: &Image,
|
||||
view: &View,
|
||||
base_address: u64,
|
||||
desc_out: &mut [u32; 8],
|
||||
) {
|
||||
assert!(image.format.el_size_B() == view.format.el_size_B());
|
||||
assert!(view.base_level + view.num_levels <= image.num_levels);
|
||||
|
||||
*desc_out = [0u32; 8];
|
||||
let mut th = BitMutView::new(desc_out);
|
||||
|
||||
nvcb97_set_th_bl_0(&mut th, &view.format, view.swizzle);
|
||||
let tiling = &image.levels[0].tiling;
|
||||
|
||||
// There's no base layer field in the texture header
|
||||
let mut layer_address = base_address;
|
||||
if view.view_type == ViewType::_3DSliced {
|
||||
assert!(view.num_levels == 1);
|
||||
assert!(
|
||||
view.base_array_layer + view.array_len <= image.extent_px.depth
|
||||
);
|
||||
|
||||
layer_address +=
|
||||
image.level_z_offset_B(view.base_level, view.base_array_layer);
|
||||
} else {
|
||||
assert!(
|
||||
view.base_array_layer + view.array_len <= image.extent_px.array_len
|
||||
);
|
||||
layer_address +=
|
||||
u64::from(view.base_array_layer) * u64::from(image.array_stride_B);
|
||||
}
|
||||
|
||||
if tiling.is_tiled() {
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_BL_HEADER_VERSION,
|
||||
SELECT_BLOCKLINEAR_V2
|
||||
);
|
||||
|
||||
let addr = BitView::new(&layer_address);
|
||||
assert!(addr.get_bit_range_u64(0..9) == 0);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_BL_ADDRESS_BITS31TO9,
|
||||
addr.get_bit_range_u64(9..32),
|
||||
);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_BL_ADDRESS_BITS56TO32,
|
||||
addr.get_bit_range_u64(32..57),
|
||||
);
|
||||
assert!(addr.get_bit_range_u64(57..64) == 0);
|
||||
|
||||
set_enum!(th, clcb97, TEXHEAD_V2_BL_GOBS_PER_BLOCK_WIDTH, ONE_GOB);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_BL_GOBS_PER_BLOCK_HEIGHT,
|
||||
tiling.y_log2,
|
||||
);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_GOBS_PER_BLOCK_DEPTH, tiling.z_log2);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_TILE_WIDTH_IN_GOBS, tiling.x_log2);
|
||||
|
||||
let nv_text_type = pipe_to_nv_texture_type(view.view_type);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_TEXTURE_TYPE, nv_text_type);
|
||||
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_LOD_ANISO_QUALITY2, true);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_BL_LOD_ANISO_QUALITY,
|
||||
LOD_QUALITY_HIGH
|
||||
);
|
||||
set_enum!(th, clcb97, TEXHEAD_V2_BL_LOD_ISO_QUALITY, LOD_QUALITY_HIGH);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_BL_ANISO_COARSE_SPREAD_MODIFIER,
|
||||
SPREAD_MODIFIER_NONE
|
||||
);
|
||||
} else {
|
||||
set_enum!(th, clcb97, TEXHEAD_V2_BL_HEADER_VERSION, SELECT_PITCH_V2);
|
||||
|
||||
let addr = BitView::new(&layer_address);
|
||||
assert!(addr.get_bit_range_u64(0..5) == 0);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_PITCH_ADDRESS_BITS31TO5,
|
||||
addr.get_bit_range_u64(5..32),
|
||||
);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_PITCH_ADDRESS_BITS56TO32,
|
||||
addr.get_bit_range_u64(32..57),
|
||||
);
|
||||
assert!(addr.get_bit_range_u64(57..64) == 0);
|
||||
|
||||
let pitch = image.levels[0].row_stride_B;
|
||||
let pitch = BitView::new(&pitch);
|
||||
assert!(pitch.get_bit_range_u64(0..5) == 0);
|
||||
assert!(pitch.get_bit_range_u64(22..32) == 0);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_PITCH_PITCH_BITS21TO5,
|
||||
pitch.get_bit_range_u64(5..22),
|
||||
);
|
||||
|
||||
assert!(
|
||||
view.view_type == ViewType::_2D
|
||||
|| view.view_type == ViewType::_2DArray
|
||||
);
|
||||
assert!(image.sample_layout == SampleLayout::_1x1);
|
||||
assert!(view.num_levels == 1);
|
||||
set_enum!(th, clcb97, TEXHEAD_V2_PITCH_TEXTURE_TYPE, TWO_D_NO_MIPMAP);
|
||||
|
||||
th.set_field(clcb97::TEXHEAD_V2_PITCH_LOD_ANISO_QUALITY2, true);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_PITCH_LOD_ANISO_QUALITY,
|
||||
LOD_QUALITY_HIGH
|
||||
);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_PITCH_LOD_ISO_QUALITY,
|
||||
LOD_QUALITY_HIGH
|
||||
);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_PITCH_ANISO_COARSE_SPREAD_MODIFIER,
|
||||
SPREAD_MODIFIER_NONE
|
||||
);
|
||||
}
|
||||
|
||||
let extent = normalize_extent(image, view);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_WIDTH_MINUS_ONE, extent.width - 1);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_HEIGHT_MINUS_ONE, extent.height - 1);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_DEPTH_MINUS_ONE, extent.depth - 1);
|
||||
|
||||
let max_mip_level = nil_rs_max_mip_level(image, view);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_MAX_MIP_LEVEL, max_mip_level);
|
||||
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_BL_S_R_G_B_CONVERSION,
|
||||
view.format.is_srgb(),
|
||||
);
|
||||
|
||||
set_enum!(th, clcb97, TEXHEAD_V2_BL_SECTOR_PROMOTION, PROMOTE_TO_2_V);
|
||||
set_enum!(th, clcb97, TEXHEAD_V2_BL_BORDER_SOURCE, BORDER_COLOR);
|
||||
|
||||
// In the sampler, the two options for FLOAT_COORD_NORMALIZATION are:
|
||||
//
|
||||
// - FORCE_UNNORMALIZED_COORDS
|
||||
// - USE_HEADER_SETTING
|
||||
//
|
||||
// So we set it to normalized in the header and let the sampler select that
|
||||
// or force non-normalized.
|
||||
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_NORMALIZED_COORDS, true);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_BL_ANISO_FINE_SPREAD_FUNC,
|
||||
SPREAD_FUNC_TWO
|
||||
);
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_BL_ANISO_COARSE_SPREAD_FUNC,
|
||||
SPREAD_FUNC_ONE
|
||||
);
|
||||
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_BL_RES_VIEW_MIN_MIP_LEVEL,
|
||||
view.base_level,
|
||||
);
|
||||
|
||||
let max_mip_level = view.num_levels + view.base_level - 1;
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_RES_VIEW_MAX_MIP_LEVEL, max_mip_level);
|
||||
|
||||
let msc = nil_rs_to_nvb097_multi_sample_count(image.sample_layout);
|
||||
th.set_field(clcb97::TEXHEAD_V2_BL_MULTI_SAMPLE_COUNT, msc);
|
||||
|
||||
let min_lod_clamp = view.min_lod_clamp - (view.base_level as f32);
|
||||
th.set_ufixed(clcb97::TEXHEAD_V2_BL_MIN_LOD_CLAMP, min_lod_clamp);
|
||||
}
|
||||
|
||||
pub const IDENTITY_SWIZZLE: [nil_rs_bindings::pipe_swizzle; 4] = [
|
||||
nil_rs_bindings::PIPE_SWIZZLE_X,
|
||||
nil_rs_bindings::PIPE_SWIZZLE_Y,
|
||||
@@ -580,6 +792,40 @@ fn nvb097_nil_fill_buffer_desc(
|
||||
set_enum!(th, clb097, TEXHEAD_1D_SECTOR_PROMOTION, PROMOTE_TO_2_V);
|
||||
}
|
||||
|
||||
fn nvcb97_nil_fill_buffer_desc(
|
||||
base_address: u64,
|
||||
format: Format,
|
||||
num_elements: u32,
|
||||
desc_out: &mut [u32; 8],
|
||||
) {
|
||||
*desc_out = [0u32; 8];
|
||||
let mut th = BitMutView::new(desc_out);
|
||||
|
||||
assert!(format.supports_buffer());
|
||||
nvcb97_set_th_bl_0(&mut th, &format, IDENTITY_SWIZZLE);
|
||||
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_1DRT_ADDRESS_BITS31TO0,
|
||||
base_address as u32,
|
||||
);
|
||||
th.set_field(
|
||||
clcb97::TEXHEAD_V2_1DRT_ADDRESS_BITS63TO32,
|
||||
base_address >> 32,
|
||||
);
|
||||
|
||||
set_enum!(
|
||||
th,
|
||||
clcb97,
|
||||
TEXHEAD_V2_1DRT_HEADER_VERSION,
|
||||
SELECT_ONE_D_RAW_TYPED
|
||||
);
|
||||
|
||||
th.set_field(clcb97::TEXHEAD_V2_1DRT_WIDTH_MINUS_ONE, num_elements - 1);
|
||||
|
||||
// TODO: Do we need this?
|
||||
set_enum!(th, clcb97, TEXHEAD_1D_SECTOR_PROMOTION, PROMOTE_TO_2_V);
|
||||
}
|
||||
|
||||
pub const ZERO_SWIZZLE: [nil_rs_bindings::pipe_swizzle; 4] = [
|
||||
nil_rs_bindings::PIPE_SWIZZLE_0,
|
||||
nil_rs_bindings::PIPE_SWIZZLE_0,
|
||||
@@ -658,7 +904,15 @@ impl Descriptor {
|
||||
) -> Self {
|
||||
let mut desc = Descriptor { bits: [0_u32; 8] };
|
||||
|
||||
if dev.cls_eng3d >= MAXWELL_A {
|
||||
if dev.cls_eng3d >= HOPPER_A {
|
||||
nvcb97_fill_image_view_desc(
|
||||
dev,
|
||||
image,
|
||||
view,
|
||||
base_address,
|
||||
&mut desc.bits,
|
||||
);
|
||||
} else if dev.cls_eng3d >= MAXWELL_A {
|
||||
nvb097_fill_image_view_desc(
|
||||
dev,
|
||||
image,
|
||||
@@ -688,7 +942,14 @@ impl Descriptor {
|
||||
) -> Self {
|
||||
let mut desc = Descriptor { bits: [0_u32; 8] };
|
||||
|
||||
if dev.cls_eng3d >= MAXWELL_A {
|
||||
if dev.cls_eng3d >= HOPPER_A {
|
||||
nvcb97_nil_fill_buffer_desc(
|
||||
base_address,
|
||||
format,
|
||||
num_elements,
|
||||
&mut desc.bits,
|
||||
)
|
||||
} else if dev.cls_eng3d >= MAXWELL_A {
|
||||
nvb097_nil_fill_buffer_desc(
|
||||
base_address,
|
||||
format,
|
||||
|
||||
@@ -43,7 +43,8 @@ struct nil_tic_format {
|
||||
|
||||
struct nil_format_info {
|
||||
unsigned czt:8;
|
||||
unsigned support:24;
|
||||
unsigned support:20;
|
||||
unsigned tic_v2_data_type:4;
|
||||
struct nil_tic_format tic;
|
||||
};
|
||||
|
||||
@@ -67,12 +68,15 @@ TEMPLATE_C = template.Template(text="""\
|
||||
#include "clb097tex.h"
|
||||
#include "clb197.h"
|
||||
#include "clb197tex.h"
|
||||
#include "clcb97.h"
|
||||
#include "clcb97tex.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_v2_data_type = ${f.v2_data_type()},
|
||||
.tic = {
|
||||
.comp_sizes = ${f.tcs()},
|
||||
.type_r = ${f.type(0)},
|
||||
@@ -107,6 +111,7 @@ TCS_PREFIX = {
|
||||
'maxwella' : 'NVB097_TEXHEAD_BL_COMPONENTS_SIZES_',
|
||||
'maxwellb' : 'NVB197_TEXHEAD_BL_COMPONENTS_SIZES_',
|
||||
'tk1' : 'NVB097_TEXHEAD_BL_COMPONENTS_SIZES_',
|
||||
'hopper' : 'NVCB97_TEXHEAD_V2_BL_COMPONENTS_SIZES_',
|
||||
}
|
||||
|
||||
DATA_TYPES = {
|
||||
@@ -117,6 +122,19 @@ DATA_TYPES = {
|
||||
'F' : 'NV9097_TEXHEADV2_0_R_DATA_TYPE_NUM_FLOAT',
|
||||
}
|
||||
|
||||
V2_DATA_TYPES = {
|
||||
'N' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_UNORM',
|
||||
'S' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_SNORM',
|
||||
'F' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_FLOAT',
|
||||
'SGNRGB' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_SGNRGB',
|
||||
'SGNA' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_SGNA',
|
||||
'U' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_UINT',
|
||||
'I' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_SINT',
|
||||
'ZS' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_ZS',
|
||||
'SZ' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_SZ',
|
||||
'ZFS' : 'NVCB97_TEXHEAD_V2_BL_DATA_TYPE_TEX_DATA_TYPE_ZFS',
|
||||
}
|
||||
|
||||
SOURCES = {
|
||||
'0' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_ZERO',
|
||||
'R' : 'NV9097_TEXHEADV2_0_Z_SOURCE_IN_R',
|
||||
@@ -142,10 +160,11 @@ class Format(object):
|
||||
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()
|
||||
self._data_type = line[4].strip()
|
||||
self._srcs = list(line[5].strip())
|
||||
self._support = list(line[6].strip())
|
||||
if len(line) > 7:
|
||||
self.hw = line[7].strip().lower()
|
||||
else:
|
||||
self.hw = None
|
||||
|
||||
@@ -169,6 +188,9 @@ class Format(object):
|
||||
else:
|
||||
return DATA_TYPES[self._types[0]]
|
||||
|
||||
def v2_data_type(self):
|
||||
return V2_DATA_TYPES[self._data_type]
|
||||
|
||||
def src(self, comp):
|
||||
if self._srcs[comp] == '1':
|
||||
# Find any component which isn't a 0/1 and look at that
|
||||
|
||||
+232
-223
@@ -11,6 +11,15 @@
|
||||
# I: SINT
|
||||
# U: UINT
|
||||
# F: FLOAT
|
||||
# v2type: Data type:
|
||||
# S: SNORM
|
||||
# N: UNORM
|
||||
# I: SINT
|
||||
# U: UINT
|
||||
# F: FLOAT
|
||||
# ZS: depth/stencil
|
||||
# SZ: stencil/depth
|
||||
# ZFS: depth float/stencil
|
||||
# src: Swizzle of the form RGBAX01
|
||||
# caps: Format capabilities:
|
||||
# C: Color target
|
||||
@@ -22,276 +31,276 @@
|
||||
# D: Scanout
|
||||
# hw: First hardware generation on which the format
|
||||
|
||||
# name czt tcs type src support hw
|
||||
# name czt tcs type v2type src support hw
|
||||
|
||||
R1_UNORM , NONE , R1 , N , R001 , T
|
||||
R1_UNORM , NONE , R1 , N , N , R001 , T
|
||||
|
||||
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
|
||||
A4B4G4R4_UNORM , NONE , A4B4G4R4 , NNNN , N , ABGR , T
|
||||
A4R4G4B4_UNORM , NONE , A4B4G4R4 , NNNN , N , GBAR , T
|
||||
B4G4R4A4_UNORM , NONE , A4B4G4R4 , NNNN , N , BGRA , T
|
||||
B4G4R4X4_UNORM , NONE , A4B4G4R4 , NNNN , N , BGR1 , T
|
||||
R4G4B4A4_UNORM , NONE , A4B4G4R4 , NNNN , N , RGBA , T
|
||||
R4G4B4X4_UNORM , NONE , A4B4G4R4 , NNNN , N , RGB1 , T
|
||||
|
||||
B5G6R5_UNORM , R5G6B5 , B5G6R5 , NNN , BGR1 , CTAD
|
||||
R5G6B5_UNORM , NONE , B5G6R5 , NNN , RGB1 , T
|
||||
R5G5B5A1_UNORM , NONE , A1B5G5R5 , NNNN , RGBA , T
|
||||
B5G5R5A1_UNORM , A1R5G5B5 , A1B5G5R5 , NNNN , BGRA , CTAD
|
||||
B5G5R5X1_UNORM , X1R5G5B5 , A1B5G5R5 , NNNN , BGR1 , CTAD
|
||||
B5G6R5_UNORM , R5G6B5 , B5G6R5 , NNN , N , BGR1 , CTAD
|
||||
R5G6B5_UNORM , NONE , B5G6R5 , NNN , N , RGB1 , T
|
||||
R5G5B5A1_UNORM , NONE , A1B5G5R5 , NNNN , N , RGBA , T
|
||||
B5G5R5A1_UNORM , A1R5G5B5 , A1B5G5R5 , NNNN , N , BGRA , CTAD
|
||||
B5G5R5X1_UNORM , X1R5G5B5 , A1B5G5R5 , NNNN , N , BGR1 , CTAD
|
||||
|
||||
R8_UNORM , R8 , R8 , N , R001 , CTBSA
|
||||
R8_SNORM , RN8 , R8 , S , R001 , CTBSA
|
||||
R8_SINT , RS8 , R8 , I , R001 , CTBS
|
||||
R8_UINT , RU8 , R8 , U , R001 , CTBS
|
||||
R8_SRGB , NONE , R8 , N , R001 , T
|
||||
R8_UNORM , R8 , R8 , N , N , R001 , CTBSA
|
||||
R8_SNORM , RN8 , R8 , S , S , R001 , CTBSA
|
||||
R8_SINT , RS8 , R8 , I , I , R001 , CTBS
|
||||
R8_UINT , RU8 , R8 , U , U , R001 , CTBS
|
||||
R8_SRGB , NONE , R8 , N , N , R001 , T
|
||||
|
||||
R8G8_UNORM , G8R8 , G8R8 , NN , RG01 , CTBSA
|
||||
R8G8_SNORM , GN8RN8 , G8R8 , SS , RG01 , CTBSA
|
||||
R8G8_SINT , GS8RS8 , G8R8 , II , RG01 , CTBS
|
||||
R8G8_UINT , GU8RU8 , G8R8 , UU , RG01 , CTBS
|
||||
R8G8_UNORM , G8R8 , G8R8 , NN , N , RG01 , CTBSA
|
||||
R8G8_SNORM , GN8RN8 , G8R8 , SS , S , RG01 , CTBSA
|
||||
R8G8_SINT , GS8RS8 , G8R8 , II , I , RG01 , CTBS
|
||||
R8G8_UINT , GU8RU8 , G8R8 , UU , U , RG01 , CTBS
|
||||
# On Fermi+, the green component doesn't get decoding?
|
||||
# R8G8_SRGB , NONE , G8R8 , NN , RG01 , T
|
||||
# R8G8_SRGB , NONE , G8R8 , NN , N , RG01 , T
|
||||
|
||||
# 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
|
||||
B8G8R8A8_UNORM , A8R8G8B8 , A8B8G8R8 , NNNN , N , BGRA , CTBASD
|
||||
B8G8R8X8_UNORM , X8R8G8B8 , A8B8G8R8 , NNNN , N , BGR1 , CTAD
|
||||
B8G8R8A8_SRGB , A8RL8GL8BL8 , A8B8G8R8 , NNNN , N , BGRA , CTAD
|
||||
B8G8R8X8_SRGB , X8RL8GL8BL8 , A8B8G8R8 , NNNN , N , BGR1 , CTAD
|
||||
R8G8B8A8_UNORM , A8B8G8R8 , A8B8G8R8 , NNNN , N , RGBA , CTBSA
|
||||
R8G8B8X8_UNORM , X8B8G8R8 , A8B8G8R8 , NNNN , N , RGB1 , CTA
|
||||
R8G8B8A8_SRGB , A8BL8GL8RL8 , A8B8G8R8 , NNNN , N , RGBA , CTA
|
||||
R8G8B8X8_SRGB , X8BL8GL8RL8 , A8B8G8R8 , NNNN , N , RGB1 , CTA
|
||||
|
||||
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
|
||||
R8G8B8A8_SNORM , AN8BN8GN8RN8 , A8B8G8R8 , SSSS , S , RGBA , CTBSA
|
||||
R8G8B8A8_SINT , AS8BS8GS8RS8 , A8B8G8R8 , IIII , I , RGBA , CTBS
|
||||
R8G8B8A8_UINT , AU8BU8GU8RU8 , A8B8G8R8 , UUUU , U , RGBA , CTBS
|
||||
R8G8B8X8_SNORM , AN8BN8GN8RN8 , A8B8G8R8 , SSSS , S , RGB1 , T
|
||||
R8G8B8X8_SINT , AS8BS8GS8RS8 , A8B8G8R8 , IIII , I , RGB1 , CT
|
||||
R8G8B8X8_UINT , AU8BU8GU8RU8 , A8B8G8R8 , UUUU , U , RGB1 , CT
|
||||
|
||||
R9G9B9E5_FLOAT , NONE , E5B9G9R9_SHAREDEXP, FFFF , RGB1 , T
|
||||
R9G9B9E5_FLOAT , NONE , E5B9G9R9_SHAREDEXP, FFFF , F , RGB1 , T
|
||||
|
||||
R10G10B10A2_UNORM , A2B10G10R10 , A2B10G10R10 , NNNN , RGBA , TCBASD
|
||||
R10G10B10X2_UNORM , A2B10G10R10 , A2B10G10R10 , NNN , RGB1 , T
|
||||
B10G10R10A2_UNORM , A2R10G10B10 , A2B10G10R10 , NNNN , BGRA , CTA
|
||||
B10G10R10X2_UNORM , A2R10G10B10 , A2B10G10R10 , NNN , BGR1 , T
|
||||
R10G10B10A2_UINT , AU2BU10GU10RU10 , A2B10G10R10 , UUUU , RGBA , CTBS
|
||||
B10G10R10A2_UINT , NONE , A2B10G10R10 , UUUU , BGRA , TB
|
||||
R10G10B10A2_UNORM , A2B10G10R10 , A2B10G10R10 , NNNN , N , RGBA , TCBASD
|
||||
R10G10B10X2_UNORM , A2B10G10R10 , A2B10G10R10 , NNN , N , RGB1 , T
|
||||
B10G10R10A2_UNORM , A2R10G10B10 , A2B10G10R10 , NNNN , N , BGRA , CTA
|
||||
B10G10R10X2_UNORM , A2R10G10B10 , A2B10G10R10 , NNN , N , BGR1 , T
|
||||
R10G10B10A2_UINT , AU2BU10GU10RU10 , A2B10G10R10 , UUUU , U , RGBA , CTBS
|
||||
B10G10R10A2_UINT , NONE , A2B10G10R10 , UUUU , U , BGRA , TB
|
||||
|
||||
# These formats are disabled because the image/texture hardware doesn't clamp
|
||||
# the 2-bit SNORM alpha to [-1, 1] so you can end up with a = -2 which is out
|
||||
# of spec for both GL and Vulkan.
|
||||
# R10G10B10A2_SNORM , NONE , A2B10G10R10 , SSSS , RGBA , T
|
||||
# B10G10R10A2_SNORM , NONE , A2B10G10R10 , SSSS , BGRA , T
|
||||
# R10G10B10A2_SNORM , NONE , A2B10G10R10 , SSSS , S , RGBA , T
|
||||
# B10G10R10A2_SNORM , NONE , A2B10G10R10 , SSSS , S , BGRA , T
|
||||
|
||||
R11G11B10_FLOAT , BF10GF11RF11 , BF10GF11RF11 , FFF , RGB1 , CTBSA
|
||||
R11G11B10_FLOAT , BF10GF11RF11 , BF10GF11RF11 , FFF , F , RGB1 , CTBSA
|
||||
|
||||
R16_FLOAT , RF16 , R16 , F , R001 , CTBSA
|
||||
R16_UNORM , R16 , R16 , N , R001 , CTBSA
|
||||
R16_SNORM , RN16 , R16 , S , R001 , CTBSA
|
||||
R16_SINT , RS16 , R16 , I , R001 , CTBS
|
||||
R16_UINT , RU16 , R16 , U , R001 , CTBS
|
||||
R16_FLOAT , RF16 , R16 , F , F , R001 , CTBSA
|
||||
R16_UNORM , R16 , R16 , N , N , R001 , CTBSA
|
||||
R16_SNORM , RN16 , R16 , S , S , R001 , CTBSA
|
||||
R16_SINT , RS16 , R16 , I , I , R001 , CTBS
|
||||
R16_UINT , RU16 , R16 , U , U , R001 , CTBS
|
||||
|
||||
R16G16_FLOAT , RF16_GF16 , R16_G16 , FF , RG01 , CTBSA
|
||||
R16G16_UNORM , R16_G16 , R16_G16 , NN , RG01 , CTBSA
|
||||
R16G16_SNORM , RN16_GN16 , R16_G16 , SS , RG01 , CTBSA
|
||||
R16G16_SINT , RS16_GS16 , R16_G16 , II , RG01 , CTBS
|
||||
R16G16_UINT , RU16_GU16 , R16_G16 , UU , RG01 , CTBS
|
||||
R16G16_FLOAT , RF16_GF16 , R16_G16 , FF , F , RG01 , CTBSA
|
||||
R16G16_UNORM , R16_G16 , R16_G16 , NN , N , RG01 , CTBSA
|
||||
R16G16_SNORM , RN16_GN16 , R16_G16 , SS , S , RG01 , CTBSA
|
||||
R16G16_SINT , RS16_GS16 , R16_G16 , II , I , RG01 , CTBS
|
||||
R16G16_UINT , RU16_GU16 , R16_G16 , UU , U , RG01 , CTBS
|
||||
|
||||
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
|
||||
R16G16B16A16_FLOAT , RF16_GF16_BF16_AF16 , R16_G16_B16_A16 , FFFF , F , RGBA , CTBSA
|
||||
R16G16B16A16_UNORM , R16_G16_B16_A16 , R16_G16_B16_A16 , NNNN , N , RGBA , CTBSA
|
||||
R16G16B16A16_SNORM , RN16_GN16_BN16_AN16 , R16_G16_B16_A16 , SSSS , S , RGBA , CTBSA
|
||||
R16G16B16A16_SINT , RS16_GS16_BS16_AS16 , R16_G16_B16_A16 , IIII , I , RGBA , CTBS
|
||||
R16G16B16A16_UINT , RU16_GU16_BU16_AU16 , R16_G16_B16_A16 , UUUU , U , RGBA , CTBS
|
||||
R16G16B16X16_FLOAT , RF16_GF16_BF16_X16 , R16_G16_B16_A16 , FFFF , F , RGB1 , CTA
|
||||
R16G16B16X16_UNORM , R16_G16_B16_A16 , R16_G16_B16_A16 , NNNN , N , RGB1 , T
|
||||
R16G16B16X16_SNORM , RN16_GN16_BN16_AN16 , R16_G16_B16_A16 , SSSS , S , RGB1 , T
|
||||
R16G16B16X16_SINT , RS16_GS16_BS16_AS16 , R16_G16_B16_A16 , IIII , I , RGB1 , CT
|
||||
R16G16B16X16_UINT , RU16_GU16_BU16_AU16 , R16_G16_B16_A16 , UUUU , U , RGB1 , CT
|
||||
|
||||
R32_FLOAT , RF32 , R32 , F , R001 , CTBSA
|
||||
R32_UNORM , NONE , R32 , N , R001 , T
|
||||
R32_SNORM , NONE , R32 , S , R001 , T
|
||||
R32_SINT , RS32 , R32 , I , R001 , CTBS
|
||||
R32_UINT , RU32 , R32 , U , R001 , CTBS
|
||||
R32_FLOAT , RF32 , R32 , F , F , R001 , CTBSA
|
||||
R32_UNORM , NONE , R32 , N , N , R001 , T
|
||||
R32_SNORM , NONE , R32 , S , S , R001 , T
|
||||
R32_SINT , RS32 , R32 , I , I , R001 , CTBS
|
||||
R32_UINT , RU32 , R32 , U , U , R001 , CTBS
|
||||
|
||||
R32G32_FLOAT , RF32_GF32 , R32_G32 , FF , RG01 , CTBSA
|
||||
R32G32_UNORM , NONE , R32_G32 , NN , RG01 , T
|
||||
R32G32_SNORM , NONE , R32_G32 , SS , RG01 , T
|
||||
R32G32_SINT , RS32_GS32 , R32_G32 , II , RG01 , CTBS
|
||||
R32G32_UINT , RU32_GU32 , R32_G32 , UU , RG01 , CTBS
|
||||
R32G32_FLOAT , RF32_GF32 , R32_G32 , FF , F , RG01 , CTBSA
|
||||
R32G32_UNORM , NONE , R32_G32 , NN , N , RG01 , T
|
||||
R32G32_SNORM , NONE , R32_G32 , SS , S , RG01 , T
|
||||
R32G32_SINT , RS32_GS32 , R32_G32 , II , I , RG01 , CTBS
|
||||
R32G32_UINT , RU32_GU32 , R32_G32 , UU , U , RG01 , CTBS
|
||||
|
||||
R32G32B32_FLOAT , NONE , R32_G32_B32 , FFF , RGB1 , TB
|
||||
R32G32B32_SINT , NONE , R32_G32_B32 , III , RGB1 , TB
|
||||
R32G32B32_UINT , NONE , R32_G32_B32 , UUU , RGB1 , TB
|
||||
R32G32B32_FLOAT , NONE , R32_G32_B32 , FFF , F , RGB1 , TB
|
||||
R32G32B32_SINT , NONE , R32_G32_B32 , III , I , RGB1 , TB
|
||||
R32G32B32_UINT , NONE , R32_G32_B32 , UUU , U , RGB1 , TB
|
||||
|
||||
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
|
||||
R32G32B32A32_FLOAT , RF32_GF32_BF32_AF32 , R32_G32_B32_A32 , FFFF , F , RGBA , CTBSA
|
||||
R32G32B32A32_UNORM , NONE , R32_G32_B32_A32 , NNNN , N , RGBA , T
|
||||
R32G32B32A32_SNORM , NONE , R32_G32_B32_A32 , SSSS , S , RGBA , T
|
||||
R32G32B32A32_SINT , RS32_GS32_BS32_AS32 , R32_G32_B32_A32 , IIII , I , RGBA , CTBS
|
||||
R32G32B32A32_UINT , RU32_GU32_BU32_AU32 , R32_G32_B32_A32 , UUUU , U , RGBA , CTBS
|
||||
R32G32B32X32_FLOAT , RF32_GF32_BF32_X32 , R32_G32_B32_A32 , FFFF , F , RGB1 , CTA
|
||||
R32G32B32X32_SINT , RS32_GS32_BS32_X32 , R32_G32_B32_A32 , IIII , I , RGB1 , CT
|
||||
R32G32B32X32_UINT , RU32_GU32_BU32_X32 , R32_G32_B32_A32 , UUUU , U , RGB1 , CT
|
||||
|
||||
R64_SINT , NONE , R32_G32 , II , RG01 , S
|
||||
R64_UINT , NONE , R32_G32 , UU , RG01 , S
|
||||
R64_SINT , NONE , R32_G32 , II , I , RG01 , S
|
||||
R64_UINT , NONE , R32_G32 , UU , U , RG01 , S
|
||||
|
||||
# Depth/stencil formats
|
||||
Z16_UNORM , Z16 , Z16 , N , R001 , TZ , MaxwellA
|
||||
Z32_FLOAT , ZF32 , ZF32 , F , R001 , TZ
|
||||
Z24X8_UNORM , X8Z24 , X8Z24 , NU , R001 , TZ
|
||||
X8Z24_UNORM , Z24S8 , Z24S8 , UN , G001 , TZ
|
||||
Z24_UNORM_S8_UINT , S8Z24 , S8Z24 , NU , R001 , TZ
|
||||
S8_UINT_Z24_UNORM , Z24S8 , Z24S8 , UN , G001 , TZ
|
||||
Z32_FLOAT_S8X24_UINT , ZF32_X24S8 , ZF32_X24S8 , FU , R001 , TZ
|
||||
Z16_UNORM , Z16 , Z16 , N , N , R001 , TZ , MaxwellA
|
||||
Z32_FLOAT , ZF32 , ZF32 , F , F , R001 , TZ
|
||||
Z24X8_UNORM , X8Z24 , X8Z24 , NU , ZS , R001 , TZ
|
||||
X8Z24_UNORM , Z24S8 , Z24S8 , UN , SZ , G001 , TZ
|
||||
Z24_UNORM_S8_UINT , S8Z24 , S8Z24 , NU , ZS , R001 , TZ
|
||||
S8_UINT_Z24_UNORM , Z24S8 , Z24S8 , UN , SZ , G001 , TZ
|
||||
Z32_FLOAT_S8X24_UINT , ZF32_X24S8 , ZF32_X24S8 , FU , ZFS , R001 , TZ
|
||||
|
||||
# Stencil-only formats
|
||||
S8_UINT , S8 , R8 , U , R001 , TZ , MaxwellB
|
||||
X24S8_UINT , NONE , G8R24 , UU , G001 , T
|
||||
S8X24_UINT , NONE , G24R8 , UU , R001 , T
|
||||
X32_S8X24_UINT , NONE , R32_B24G8 , UU , G001 , T
|
||||
S8_UINT , S8 , R8 , U , U , R001 , TZ , MaxwellB
|
||||
X24S8_UINT , NONE , G8R24 , UU , ZS , G001 , T
|
||||
S8X24_UINT , NONE , G24R8 , UU , SZ , R001 , T
|
||||
X32_S8X24_UINT , NONE , R32_B24G8 , UU , ZFS , G001 , T
|
||||
|
||||
# Luminance formats
|
||||
L8_UNORM , R8 , R8 , N , RRR1 , CTA
|
||||
L8_SRGB , NONE , R8 , N , RRR1 , T
|
||||
L8_SNORM , RN8 , R8 , S , RRR1 , CTA
|
||||
L8_SINT , RS8 , R8 , I , RRR1 , CT
|
||||
L8_UINT , RU8 , R8 , U , RRR1 , CT
|
||||
L16_UNORM , R16 , R16 , N , RRR1 , CTA
|
||||
L16_SNORM , RN16 , R16 , S , RRR1 , CTA
|
||||
L16_FLOAT , RF16 , R16 , F , RRR1 , CTA
|
||||
L16_SINT , RS16 , R16 , I , RRR1 , CT
|
||||
L16_UINT , RU16 , R16 , U , RRR1 , CT
|
||||
L32_FLOAT , RF32 , R32 , F , RRR1 , CTA
|
||||
L32_SINT , RS32 , R32 , I , RRR1 , CT
|
||||
L32_UINT , RU32 , R32 , U , RRR1 , CT
|
||||
L8_UNORM , R8 , R8 , N , N , RRR1 , CTA
|
||||
L8_SRGB , NONE , R8 , N , N , RRR1 , T
|
||||
L8_SNORM , RN8 , R8 , S , S , RRR1 , CTA
|
||||
L8_SINT , RS8 , R8 , I , I , RRR1 , CT
|
||||
L8_UINT , RU8 , R8 , U , U , RRR1 , CT
|
||||
L16_UNORM , R16 , R16 , N , N , RRR1 , CTA
|
||||
L16_SNORM , RN16 , R16 , S , S , RRR1 , CTA
|
||||
L16_FLOAT , RF16 , R16 , F , F , RRR1 , CTA
|
||||
L16_SINT , RS16 , R16 , I , I , RRR1 , CT
|
||||
L16_UINT , RU16 , R16 , U , U , RRR1 , CT
|
||||
L32_FLOAT , RF32 , R32 , F , F , RRR1 , CTA
|
||||
L32_SINT , RS32 , R32 , I , I , RRR1 , CT
|
||||
L32_UINT , RU32 , R32 , U , U , RRR1 , CT
|
||||
|
||||
# Intensity formats
|
||||
I8_UNORM , R8 , R8 , N , RRRR , CT
|
||||
I8_SNORM , RN8 , R8 , S , RRRR , CT
|
||||
I8_SINT , RS8 , R8 , I , RRRR , CT
|
||||
I8_UINT , RU8 , R8 , U , RRRR , CT
|
||||
I16_UNORM , R16 , R16 , N , RRRR , CT
|
||||
I16_SNORM , RN16 , R16 , S , RRRR , CT
|
||||
I16_FLOAT , RF16 , R16 , F , RRRR , CT
|
||||
I16_SINT , RS16 , R16 , I , RRRR , CT
|
||||
I16_UINT , RU16 , R16 , U , RRRR , CT
|
||||
I32_FLOAT , RF32 , R32 , F , RRRR , CT
|
||||
I32_SINT , RS32 , R32 , I , RRRR , CT
|
||||
I32_UINT , RU32 , R32 , U , RRRR , CT
|
||||
I8_UNORM , R8 , R8 , N , N , RRRR , CT
|
||||
I8_SNORM , RN8 , R8 , S , S , RRRR , CT
|
||||
I8_SINT , RS8 , R8 , I , I , RRRR , CT
|
||||
I8_UINT , RU8 , R8 , U , U , RRRR , CT
|
||||
I16_UNORM , R16 , R16 , N , N , RRRR , CT
|
||||
I16_SNORM , RN16 , R16 , S , S , RRRR , CT
|
||||
I16_FLOAT , RF16 , R16 , F , F , RRRR , CT
|
||||
I16_SINT , RS16 , R16 , I , I , RRRR , CT
|
||||
I16_UINT , RU16 , R16 , U , U , RRRR , CT
|
||||
I32_FLOAT , RF32 , R32 , F , F , RRRR , CT
|
||||
I32_SINT , RS32 , R32 , I , I , RRRR , CT
|
||||
I32_UINT , RU32 , R32 , U , U , RRRR , CT
|
||||
|
||||
# Alpha formats
|
||||
A8_UNORM , A8 , R8 , N , 000R , CTBSA
|
||||
A8_SNORM , NONE , R8 , S , 000R , T
|
||||
A8_SINT , NONE , R8 , I , 000R , T
|
||||
A8_UINT , NONE , R8 , U , 000R , T
|
||||
A16_UNORM , NONE , R16 , N , 000R , T
|
||||
A16_SNORM , NONE , R16 , S , 000R , T
|
||||
A16_FLOAT , AF16 , R16 , F , 000R , T
|
||||
A16_SINT , NONE , R16 , I , 000R , T
|
||||
A16_UINT , NONE , R16 , U , 000R , T
|
||||
A32_FLOAT , AF32 , R32 , F , 000R , T
|
||||
A32_SINT , NONE , R32 , I , 000R , T
|
||||
A32_UINT , NONE , R32 , U , 000R , T
|
||||
A8_UNORM , A8 , R8 , N , N , 000R , CTBSA
|
||||
A8_SNORM , NONE , R8 , S , S , 000R , T
|
||||
A8_SINT , NONE , R8 , I , I , 000R , T
|
||||
A8_UINT , NONE , R8 , U , U , 000R , T
|
||||
A16_UNORM , NONE , R16 , N , N , 000R , T
|
||||
A16_SNORM , NONE , R16 , S , S , 000R , T
|
||||
A16_FLOAT , AF16 , R16 , F , F , 000R , T
|
||||
A16_SINT , NONE , R16 , I , I , 000R , T
|
||||
A16_UINT , NONE , R16 , U , U , 000R , T
|
||||
A32_FLOAT , AF32 , R32 , F , F , 000R , T
|
||||
A32_SINT , NONE , R32 , I , I , 000R , T
|
||||
A32_UINT , NONE , R32 , U , U , 000R , T
|
||||
|
||||
# Luminance/alpha formats
|
||||
L4A4_UNORM , NONE , G4R4 , NN , RRRG , T
|
||||
L8A8_UNORM , NONE , G8R8 , NN , RRRG , T
|
||||
L8A8_SNORM , NONE , G8R8 , SS , RRRG , T
|
||||
L8A8_SRGB , NONE , G8R8 , NN , RRRG , T
|
||||
L8A8_SINT , NONE , G8R8 , II , RRRG , T
|
||||
L8A8_UINT , NONE , G8R8 , UU , RRRG , T
|
||||
L16A16_UNORM , NONE , R16_G16 , NN , RRRG , T
|
||||
L16A16_SNORM , NONE , R16_G16 , SS , RRRG , T
|
||||
L16A16_FLOAT , NONE , R16_G16 , FF , RRRG , T
|
||||
L16A16_SINT , NONE , R16_G16 , II , RRRG , T
|
||||
L16A16_UINT , NONE , R16_G16 , UU , RRRG , T
|
||||
L32A32_FLOAT , NONE , R32_G32 , FF , RRRG , T
|
||||
L32A32_SINT , NONE , R32_G32 , II , RRRG , T
|
||||
L32A32_UINT , NONE , R32_G32 , UU , RRRG , T
|
||||
L4A4_UNORM , NONE , G4R4 , NN , N , RRRG , T
|
||||
L8A8_UNORM , NONE , G8R8 , NN , N , RRRG , T
|
||||
L8A8_SNORM , NONE , G8R8 , SS , S , RRRG , T
|
||||
L8A8_SRGB , NONE , G8R8 , NN , N , RRRG , T
|
||||
L8A8_SINT , NONE , G8R8 , II , I , RRRG , T
|
||||
L8A8_UINT , NONE , G8R8 , UU , U , RRRG , T
|
||||
L16A16_UNORM , NONE , R16_G16 , NN , N , RRRG , T
|
||||
L16A16_SNORM , NONE , R16_G16 , SS , S , RRRG , T
|
||||
L16A16_FLOAT , NONE , R16_G16 , FF , F , RRRG , T
|
||||
L16A16_SINT , NONE , R16_G16 , II , I , RRRG , T
|
||||
L16A16_UINT , NONE , R16_G16 , UU , U , RRRG , T
|
||||
L32A32_FLOAT , NONE , R32_G32 , FF , F , RRRG , T
|
||||
L32A32_SINT , NONE , R32_G32 , II , I , RRRG , T
|
||||
L32A32_UINT , NONE , R32_G32 , UU , U , RRRG , T
|
||||
|
||||
# Red/alpha formats
|
||||
R4A4_UNORM , NONE , G4R4 , NN , R00G , T
|
||||
R8A8_UNORM , NONE , G8R8 , NN , R00G , T
|
||||
A4R4_UNORM , NONE , G4R4 , NN , G00R , T
|
||||
A8R8_UNORM , NONE , G8R8 , NN , G00R , T
|
||||
R4A4_UNORM , NONE , G4R4 , NN , N , R00G , T
|
||||
R8A8_UNORM , NONE , G8R8 , NN , N , R00G , T
|
||||
A4R4_UNORM , NONE , G4R4 , NN , N , G00R , T
|
||||
A8R8_UNORM , NONE , G8R8 , NN , N , G00R , T
|
||||
|
||||
# YCbCr formats
|
||||
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
|
||||
R8G8_B8G8_UNORM , NONE , G8B8G8R8 , NNNN , N , RGB1 , T
|
||||
G8R8_B8R8_UNORM , NONE , G8B8G8R8 , NNNN , N , GRB1 , T
|
||||
G8R8_G8B8_UNORM , NONE , B8G8R8G8 , NNNN , N , RGB1 , T
|
||||
R8G8_R8B8_UNORM , NONE , B8G8R8G8 , NNNN , N , GRB1 , T
|
||||
G8B8_G8R8_UNORM , NONE , B8G8R8G8 , NNNN , N , BGR1 , T
|
||||
B8G8_R8G8_UNORM , NONE , G8B8G8R8 , NNNN , N , BGR1 , T
|
||||
|
||||
# Weird D3D9 formats
|
||||
R8SG8SB8UX8U_NORM , NONE , A8B8G8R8 , SSNN , RGB1 , T
|
||||
R5SG5SB6U_NORM , NONE , B6G5R5 , SSNN , RGB1 , T
|
||||
R8SG8SB8UX8U_NORM , NONE , A8B8G8R8 , SSNN , S , RGB1 , T
|
||||
R5SG5SB6U_NORM , NONE , B6G5R5 , SSNN , S , RGB1 , T
|
||||
|
||||
# DXT compressed formats
|
||||
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
|
||||
DXT1_RGB , NONE , DXT1 , NNNN , N , RGB1 , T
|
||||
DXT1_SRGB , NONE , DXT1 , NNNN , N , RGB1 , T
|
||||
DXT1_RGBA , NONE , DXT1 , NNNN , N , RGBA , T
|
||||
DXT1_SRGBA , NONE , DXT1 , NNNN , N , RGBA , T
|
||||
DXT3_RGBA , NONE , DXT23 , NNNN , N , RGBA , T
|
||||
DXT3_SRGBA , NONE , DXT23 , NNNN , N , RGBA , T
|
||||
DXT5_RGBA , NONE , DXT45 , NNNN , N , RGBA , T
|
||||
DXT5_SRGBA , NONE , DXT45 , NNNN , N , 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
|
||||
RGTC1_UNORM , NONE , DXN1 , NNNN , N , R001 , T
|
||||
RGTC1_SNORM , NONE , DXN1 , SSSS , S , R001 , T
|
||||
RGTC2_UNORM , NONE , DXN2 , NNNN , N , RG01 , T
|
||||
RGTC2_SNORM , NONE , DXN2 , SSSS , S , RG01 , T
|
||||
LATC1_UNORM , NONE , DXN1 , NNNN , N , RRR1 , T
|
||||
LATC1_SNORM , NONE , DXN1 , SSSS , S , RRR1 , T
|
||||
LATC2_UNORM , NONE , DXN2 , NNNN , N , RRRG , T
|
||||
LATC2_SNORM , NONE , DXN2 , SSSS , S , 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
|
||||
BPTC_RGBA_UNORM , NONE , BC7U , NNNN , N , RGBA , T
|
||||
BPTC_SRGBA , NONE , BC7U , NNNN , N , RGBA , T
|
||||
BPTC_RGB_FLOAT , NONE , BC6H_SF16 , FFFF , F , RGB1 , T
|
||||
BPTC_RGB_UFLOAT , NONE , BC6H_UF16 , FFFF , F , RGB1 , T
|
||||
|
||||
ETC1_RGB8 , NONE , ETC2_RGB , NNNN , RGB1 , T , MaxwellA
|
||||
ETC2_RGB8 , NONE , ETC2_RGB , NNNN , RGB1 , T , MaxwellA
|
||||
ETC2_SRGB8 , NONE , ETC2_RGB , NNNN , RGB1 , T , MaxwellA
|
||||
ETC2_RGB8A1 , NONE , ETC2_RGB_PTA , NNNN , RGBA , T , MaxwellA
|
||||
ETC2_SRGB8A1 , NONE , ETC2_RGB_PTA , NNNN , RGBA , T , MaxwellA
|
||||
ETC2_RGBA8 , NONE , ETC2_RGBA , NNNN , RGBA , T , MaxwellA
|
||||
ETC2_SRGBA8 , NONE , ETC2_RGBA , NNNN , RGBA , T , MaxwellA
|
||||
ETC2_R11_UNORM , NONE , EAC , NNNN , R001 , T , MaxwellA
|
||||
ETC2_R11_SNORM , NONE , EAC , SSSS , R001 , T , MaxwellA
|
||||
ETC2_RG11_UNORM , NONE , EACX2 , NNNN , RG01 , T , MaxwellA
|
||||
ETC2_RG11_SNORM , NONE , EACX2 , SSSS , RG01 , T , MaxwellA
|
||||
ETC1_RGB8 , NONE , ETC2_RGB , NNNN , N , RGB1 , T , MaxwellA
|
||||
ETC2_RGB8 , NONE , ETC2_RGB , NNNN , N , RGB1 , T , MaxwellA
|
||||
ETC2_SRGB8 , NONE , ETC2_RGB , NNNN , N , RGB1 , T , MaxwellA
|
||||
ETC2_RGB8A1 , NONE , ETC2_RGB_PTA , NNNN , N , RGBA , T , MaxwellA
|
||||
ETC2_SRGB8A1 , NONE , ETC2_RGB_PTA , NNNN , N , RGBA , T , MaxwellA
|
||||
ETC2_RGBA8 , NONE , ETC2_RGBA , NNNN , N , RGBA , T , MaxwellA
|
||||
ETC2_SRGBA8 , NONE , ETC2_RGBA , NNNN , N , RGBA , T , MaxwellA
|
||||
ETC2_R11_UNORM , NONE , EAC , NNNN , N , R001 , T , MaxwellA
|
||||
ETC2_R11_SNORM , NONE , EAC , SSSS , S , R001 , T , MaxwellA
|
||||
ETC2_RG11_UNORM , NONE , EACX2 , NNNN , N , RG01 , T , MaxwellA
|
||||
ETC2_RG11_SNORM , NONE , EACX2 , SSSS , S , RG01 , T , MaxwellA
|
||||
|
||||
# ASTC compressed formats
|
||||
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 , NONE , ASTC_2D_4X4 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_5x4 , NONE , ASTC_2D_5X4 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_5x5 , NONE , ASTC_2D_5X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_6x5 , NONE , ASTC_2D_6X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_6x6 , NONE , ASTC_2D_6X6 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_8x5 , NONE , ASTC_2D_8X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_8x6 , NONE , ASTC_2D_8X6 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_8x8 , NONE , ASTC_2D_8X8 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x5 , NONE , ASTC_2D_10X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x6 , NONE , ASTC_2D_10X6 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x8 , NONE , ASTC_2D_10X8 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x10 , NONE , ASTC_2D_10X10 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_12x10 , NONE , ASTC_2D_12X10 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_12x12 , NONE , ASTC_2D_12X12 , NNNN , N , 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
|
||||
ASTC_4x4_SRGB , NONE , ASTC_2D_4X4 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_5x4_SRGB , NONE , ASTC_2D_5X4 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_5x5_SRGB , NONE , ASTC_2D_5X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_6x5_SRGB , NONE , ASTC_2D_6X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_6x6_SRGB , NONE , ASTC_2D_6X6 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_8x5_SRGB , NONE , ASTC_2D_8X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_8x6_SRGB , NONE , ASTC_2D_8X6 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_8x8_SRGB , NONE , ASTC_2D_8X8 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x5_SRGB , NONE , ASTC_2D_10X5 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x6_SRGB , NONE , ASTC_2D_10X6 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x8_SRGB , NONE , ASTC_2D_10X8 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_10x10_SRGB , NONE , ASTC_2D_10X10 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_12x10_SRGB , NONE , ASTC_2D_12X10 , NNNN , N , RGBA , T , TK1
|
||||
ASTC_12x12_SRGB , NONE , ASTC_2D_12X12 , NNNN , N , RGBA , T , TK1
|
||||
|
||||
|
Reference in New Issue
Block a user