Structures and enums from nn::gfx appearing across nn::gfx file formats and nn::g3d file formats. Notably the nn::gfx formats Bnsh and Bntx, as well as nn::g3d Bfres.
nn::gfx::MemoryPoolFlags
Flags denoting how a memory pool can be accessed.
Name (Unofficial)
|
Value
|
Description
|
CpuNoAccess
|
0x1 (1 << 0)
|
Memory is unable to be mapped to CPU
|
CpuUncached
|
0x2 (1 << 1)
|
Memory is coherent on CPU
|
CpuCached
|
0x4 (1 << 2)
|
Memory is cached on CPU
|
GpuNoAccess
|
0x8 (1 << 3)
|
Memory is unable to be read by the GPU
|
GpuUncached
|
0x10 (1 << 4)
|
Memory is coherent on GPU
|
GpuCached
|
0x20 (1 << 5)
|
Memory is cached on GPU
|
ShaderCode
|
0x40 (1 << 6)
|
Memory is shader code for the GPU
|
Compressible
|
0x80 (1 << 7)
|
???
|
Physical
|
0x100 (1 << 8)
|
???
|
Virtual
|
0x200 (1 << 9)
|
???
|
nn::gfx::MemoryPoolInfo
Offset
|
Size
|
Type
|
Description
|
0x0
|
0x4
|
u32 (nn::gfx::MemoryPoolFlags)
|
MemoryPool flags
|
0x4
|
0x4
|
u32
|
Memory size
|
0x8
|
0x8
|
void *
|
Memory pointer (must be 0x1000 aka page aligned)
|
nn::gfx::GpuAccessFlags
Flags denoting how a buffer or texture will be accessed.
Name (Unofficial)
|
Value
|
Description
|
VertexBuffer
|
0x4 (1 << 2)
|
Vertex buffer
|
IndexBuffer
|
0x8 (1 << 3)
|
Index buffer
|
UniformBuffer
|
0x10 (1 << 4)
|
Uniform/Storage buffer
|
Texture
|
0x20 (1 << 5)
|
Texture
|
TransferDestination
|
0x40 (1 << 6)
|
Transfer destination
|
RenderTargetColor
|
0x80 (1 << 7)
|
For render target colors
|
RenderTargetDepth
|
0x100 (1 << 8)
|
For render target depths
|
IndirectDraw
|
0x200 (1 << 9)
|
For indirect draw commands
|
DisplayTexture
|
0x400 (1 << 10)
|
For present
|
Counter
|
0x800 (1 << 11)
|
???
|
nn::gfx::BufferInfo
Offset
|
Size
|
Type
|
Description
|
0x0
|
0x4
|
u32
|
Buffer size
|
0x4
|
0x4
|
u32 (nn::gfx::GpuAccessFlags)
|
GPU access flags
|
0x8
|
0x4
|
u32
|
Reserved
|
0xc
|
0x4
|
u32
|
Reserved
|
nn::gfx:::ImageStorageDimension
Name (Unofficial)
|
Value
|
Description
|
Type1D
|
0x1
|
|
Type2D
|
0x2
|
|
Type3D
|
0x3
|
|
nn::gfx::TileMode
Name (Unofficial)
|
Value
|
Description
|
Optimal
|
0x0
|
|
Linear
|
0x1
|
|
nn::gfx::ChannelFormat
Name (Unofficial)
|
Value
|
Description
|
None
|
0x1
|
|
R8
|
0x2
|
|
R4G4B4A4
|
0x3
|
|
R5G5B5A1
|
0x5
|
|
A1B5G5R5
|
0x6
|
|
R5G6B5
|
0x7
|
|
B5G6R5
|
0x8
|
|
R8G8
|
0x9
|
|
R16
|
0xa
|
|
R8G8B8A8
|
0xb
|
|
B8G8R8A8
|
0xc
|
|
R9G9B9E5F
|
0xd
|
|
R10G10B10A2
|
0xe
|
|
R11G11B10F
|
0xf
|
|
R16G16
|
0x12
|
|
D24S8
|
0x13
|
|
R32
|
0x14
|
|
R16G16B16A16
|
0x15
|
|
D32FS8
|
0x16
|
|
R32G32
|
0x17
|
|
R32G32B32
|
0x18
|
|
R32G32B32A32
|
0x19
|
|
BC1
|
0x1a
|
|
BC2
|
0x1b
|
|
BC3
|
0x1c
|
|
BC4
|
0x1d
|
|
BC5
|
0x1e
|
|
BC6H
|
0x1f
|
|
BC7U
|
0x20
|
|
ASTC_4x4
|
0x2d
|
|
ASTC_5x4
|
0x2e
|
|
ASTC_5x5
|
0x2f
|
|
ASTC_6x5
|
0x30
|
|
ASTC_6x6
|
0x31
|
|
ASTC_8x5
|
0x32
|
|
ASTC_8x6
|
0x33
|
|
ASTC_8x8
|
0x34
|
|
ASTC_10x5
|
0x35
|
|
ASTC_10x6
|
0x26
|
|
ASTC_10x8
|
0x37
|
|
ASTC_10x10
|
0x38
|
|
ASTC_12x10
|
0x39
|
|
ASTC_12x12
|
0x3a
|
|
B5G5R5A1
|
0x3b
|
|
nn::gfx::TypeFormat
Name (Unofficial)
|
Value
|
Description
|
Unorm
|
0x1
|
|
Snorm
|
0x2
|
|
UInt
|
0x3
|
|
SInt
|
0x4
|
|
Float
|
0x5
|
|
SRGB
|
0x6
|
|
Depth
|
0x7
|
|
UScaled
|
0x8
|
|
SScaled
|
0x9
|
|
UFloat
|
0xa
|
|
nn::gfx::ImageFormat
Image formats are formed by a ChannelFormat and a TypeFormat. ImageFormat = (ChannelFormat << 8) | TypeFormat
Name (Unofficial)
|
Value
|
Description
|
R8_Unorm
|
|
|
R8_Snorm
|
|
|
R8_UInt
|
|
|
R8_SInt
|
|
|
R4G4B4A4_Unorm
|
|
|
R5G5B5A1_Unorm
|
|
|
A1B5G5R5_Unorm
|
|
|
R5G6B5_Unorm
|
|
|
B5G6R5_Unorm
|
|
|
R8G8_Unorm
|
|
|
R8G8_Snorm
|
|
|
R8G8_UInt
|
|
|
R8G8_SInt
|
|
|
R16_Unorm
|
|
|
R16_Snorm
|
|
|
R16_UInt
|
|
|
R16_SInt
|
|
|
R16_Float
|
|
|
Z16_Depth
|
|
|
R8G8B8A8_Unorm
|
|
|
R8G8B8A8_Snorm
|
|
|
R8G8B8A8_UInt
|
|
|
R8G8B8A8_SInt
|
|
|
R8G8B8A8_SRGB
|
|
|
B8G8R8A8_Unorm
|
|
|
B8G8R8A8_SRGB
|
|
|
R9G9B9E5F_SharedFloat
|
|
|
R10G10B10A2_Unorm
|
|
|
R10G10B10A2_UInt
|
|
|
R11G11B10F_Float
|
|
|
R16G16_Unorm
|
|
|
R16G16_Snorm
|
|
|
R16G16_UInt
|
|
|
R16G16_SInt
|
|
|
R16G16_Float
|
|
|
D24S8_Depth
|
|
|
R32_UInt
|
|
|
R32_SInt
|
|
|
R32_Float
|
|
|
D32F_Depth
|
|
|
R16G16B16A16_Unorm
|
|
|
R16G16B16A16_Snorm
|
|
|
R16G16B16A16_UInt
|
|
|
R16G16B16A16_SInt
|
|
|
R16G16B16A16_Float
|
|
|
D32FS8_Depth
|
|
|
R32G32_UInt
|
|
|
R32G32_SInt
|
|
|
R32G32_Float
|
|
|
R32G32B32_UInt
|
|
|
R32G32B32_SInt
|
|
|
R32G32B32_Float
|
|
|
R32G32B32A32_UInt
|
|
|
R32G32B32A32_SInt
|
|
|
R32G32B32A32_Float
|
|
|
BC1_Unorm
|
|
|
BC1_SRGB
|
|
|
BC2_Unorm
|
|
|
BC2_SRGB
|
|
|
BC3_Unorm
|
|
|
BC3_SRGB
|
|
|
BC4_Unorm
|
|
|
BC4_Snorm
|
|
|
BC5_Unorm
|
|
|
BC5_Snorm
|
|
|
BC6H_SF16
|
|
|
BC6H_UF16
|
|
|
BC7U_Unorm
|
|
|
BC7U_SRGB
|
|
|
ASTC_4X4_Unorm
|
|
|
ASTC_4X4_SRGB
|
|
|
ASTC_5X4_Unorm
|
|
|
ASTC_5X4_SRGB
|
|
|
ASTC_5X5_Unorm
|
|
|
ASTC_5X5_SRGB
|
|
|
ASTC_6X5_Unorm
|
|
|
ASTC_6X5_SRGB
|
|
|
ASTC_6X6_Unorm
|
|
|
ASTC_6X6_SRGB
|
|
|
ASTC_8X5_Unorm
|
|
|
ASTC_8X5_SRGB
|
|
|
ASTC_8X6_Unorm
|
|
|
ASTC_8X6_SRGB
|
|
|
ASTC_8X8_Unorm
|
|
|
ASTC_8X8_SRGB
|
|
|
ASTC_10X5_Unorm
|
|
|
ASTC_10X5_SRGB
|
|
|
ASTC_10X6_Unorm
|
|
|
ASTC_10X6_SRGB
|
|
|
ASTC_10X8_Unorm
|
|
|
ASTC_10X8_SRGB
|
|
|
ASTC_10X10_Unorm
|
|
|
ASTC_10X10_SRGB
|
|
|
ASTC_12X10_Unorm
|
|
|
ASTC_12X10_SRGB
|
|
|
ASTC_12X12_Unorm
|
|
|
ASTC_12X12_SRGB
|
|
|
B5G5R5A1_Unorm
|
|
|
nn::gfx::TextureInfo
Offset
|
Size
|
Type
|
Description
|
0x0:0
|
1 bit
|
u8
|
Is Packaged Texture
|
0x0:1
|
1 bit
|
u8
|
Is Sparse Binding
|
0x0:2
|
1 bit
|
u8
|
Is Sparse
|
0x0:3
|
1 bit
|
u8
|
Is ResTexture
|
0x0:4
|
4 bit
|
u8
|
Reserved
|
0x1
|
0x1
|
u8
|
Storage dimension (nn::gfx::ImageStorageDimension)
|
0x2
|
0x2
|
u16
|
Tile mode (nn::gfx::TileMode)
|
0x4
|
0x2
|
u16
|
Swizzle (???)
|
0x6
|
0x2
|
u16
|
Mip levels
|
0x8
|
0x2
|
u16
|
Sample count
|
0xa
|
0x2
|
u16
|
Reserved
|
0xc
|
0x4
|
u32
|
Image format (nn::gfx::ImageFormat)
|
0x10
|
0x4
|
u32
|
Gpu access flags (nn::gfx::GpuAccessFlags)
|
0x14
|
0x4
|
u32
|
Width
|
0x18
|
0x4
|
u32
|
Height
|
0x1c
|
0x4
|
u32
|
Depth
|
0x20
|
0x4
|
u32
|
Array layers
|
0x24
|
0x4
|
u32
|
Packaged texture layout (???)
|
nn::gfx::WrapMode
Name (Unofficial)
|
Value
|
Description
|
Repeat
|
0x0
|
|
MirrorRepeat
|
0x1
|
|
ClampToEdge
|
0x2
|
|
ClampToBorder
|
0x3
|
|
MirrorClampToBorder
|
0x4
|
|
nn::gfx::CompareOp
Name (Unofficial)
|
Value
|
Description
|
Never
|
0x0
|
|
LessThan
|
0x1
|
|
Equal
|
0x2
|
|
LessThanEqual
|
0x3
|
|
GreateThan
|
0x4
|
|
NotEqual
|
0x5
|
|
GreaterThanEqual
|
0x6
|
|
Always
|
0x7
|
|
nn::gfx::BorderColor
Name (Unofficial)
|
Value
|
Description
|
White
|
0x0
|
|
TransparentBlack
|
0x1
|
|
Black
|
0x2
|
|
nn::gfx::MipMapFilter
Name (Unofficial)
|
Value
|
Description
|
None
|
0x0
|
|
Nearest
|
0x1
|
|
Linear
|
0x2
|
|
nn::gfx::MagFilter
Name (Unofficial)
|
Value
|
Description
|
Invalid
|
0x0
|
|
Nearest
|
0x1
|
|
Linear
|
0x2
|
|
nn::gfx::MinFilter
Name (Unofficial)
|
Value
|
Description
|
Invalid
|
0x0
|
|
Nearest
|
0x1
|
|
Linear
|
0x2
|
|
nn::gfx::ReductionFilter
Name (Unofficial)
|
Value
|
Description
|
Average
|
0x0
|
|
Min
|
0x1
|
|
Max
|
0x2
|
|
nn::gfx::SamplerInfo
Offset
|
Size
|
Type
|
Description
|
0x0
|
0x1
|
u8
|
Wrap Mode U (nn::gfx::WrapMode)
|
0x1
|
0x1
|
u8
|
Wrap Mode V (nn::gfx::WrapMode)
|
0x2
|
0x1
|
u8
|
Wrap Mode W (nn::gfx::WrapMode)
|
0x3
|
0x1
|
u8
|
CompareOp (nn::gfx::CompareOp)
|
0x4
|
0x1
|
u8
|
Border color (nn::gfx::BorderColor)
|
0x5
|
0x1
|
u8
|
Max anisotropy
|
0x6:0
|
2 bit
|
u16
|
MipMap filter (nn::gfx::MipMapFilter)
|
0x6:2
|
2 bit
|
u16
|
Mag filter (nn::gfx::MagFilter)
|
0x6:4
|
2 bit
|
u16
|
Min filter (nn::gfx::MinFilter)
|
0x6:6
|
1 bit
|
u16
|
Enable anisotropy
|
0x6:7
|
1 bit
|
u16
|
Enable CompareOp
|
0x6:8
|
2 bit
|
u16
|
Reduction filter (nn::gfx::ReductionFilter)
|
0x6:a
|
6 bit
|
u16
|
Reserved
|
0x8
|
0x4
|
Float
|
Lod clamp min
|
0xc
|
0x4
|
Float
|
Lod clamp max
|
0x10
|
0x4
|
Float
|
Lod bias
|
0x14
|
0x4
|
u32
|
Reserved
|
0x18
|
0x4
|
u32
|
Reserved
|
0x1c
|
0x4
|
u32
|
Reserved
|
Gfx Embed File
Offset
|
Size
|
Type
|
Description
|
0x0
|
0x8
|
void *
|
Offset to file
|
0x8
|
0x4
|
u32
|
Size of file
|
0xc
|
0x4
|
u32
|
???
|
Gfx User Data Type
Name (Unofficial)
|
Value
|
Description
|
S32
|
0x0
|
|
Float
|
0x1
|
|
Strin
|
0x2
|
|
Byte
|
0x3
|
Used for arbitrary binary data (other files)
|
Gfx User Data
Offset
|
Size
|
Type
|
Description
|
0x0
|
0x8
|
cosnt char *
|
User data name
|
0x8
|
0x8
|
void *
|
User data (can be nullptr)
|
0x10
|
0x4
|
s32
|
User data entries
|
0x14
|
0x1
|
u8
|
User Data Type
|
0x15
|
0x2b
|
u8[0x2b]
|
Reserved
|