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 (Unofficial)
| 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::TextureAddressMode
| Name (Unofficial)
|
Value
|
Description
|
| Repeat
|
0x0
|
|
| MirrorRepeat
|
0x1
|
|
| ClampToEdge
|
0x2
|
|
| ClampToBorder
|
0x3
|
|
| MirrorClampToBorder
|
0x4
|
|
nn::gfx::ComparisonFunction
| Name (Unofficial)
|
Value
|
Description
|
| Never
|
0x0
|
|
| LessThan
|
0x1
|
|
| Equal
|
0x2
|
|
| LessThanEqual
|
0x3
|
|
| GreateThan
|
0x4
|
|
| NotEqual
|
0x5
|
|
| GreaterThanEqual
|
0x6
|
|
| Always
|
0x7
|
|
nn::gfx::BorderColor (Unofficial)
| Name (Unofficial)
|
Value
|
Description
|
| White
|
0x0
|
|
| TransparentBlack
|
0x1
|
|
| Black
|
0x2
|
|
nn::gfx::MipMapFilter (Unofficial)
| Name (Unofficial)
|
Value
|
Description
|
| None
|
0x0
|
|
| Nearest
|
0x1
|
|
| Linear
|
0x2
|
|
nn::gfx::MagFilter (Unofficial)
| Name (Unofficial)
|
Value
|
Description
|
| Invalid
|
0x0
|
|
| Nearest
|
0x1
|
|
| Linear
|
0x2
|
|
nn::gfx::MinFilter (Unofficial)
| Name (Unofficial)
|
Value
|
Description
|
| Invalid
|
0x0
|
|
| Nearest
|
0x1
|
|
| Linear
|
0x2
|
|
nn::gfx::ReductionFilter (Unofficial)
| 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::TextureAddressMode)
|
| 0x1
|
0x1
|
u8
|
Wrap Mode V (nn::gfx::TextureAddressMode)
|
| 0x2
|
0x1
|
u8
|
Wrap Mode W (nn::gfx::TextureAddressMode)
|
| 0x3
|
0x1
|
u8
|
CompareOp (nn::gfx::ComparisonFunction)
|
| 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
|
|
| String
|
0x2
|
|
| Byte
|
0x3
|
Used for arbitrary binary data (other files)
|
Gfx User Data
| Offset
|
Size
|
Type
|
Description
|
| 0x0
|
0x8
|
const 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
|