Common nn::gfx: Difference between revisions
(Correct enum class names and mark unofficial ones.) |
(Correction to GpuAccessFlags) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 89: | Line 89: | ||
|UniformBuffer | |UniformBuffer | ||
|0x10 (1 << 4) | |0x10 (1 << 4) | ||
|Uniform | |Uniform buffer | ||
|- | |- | ||
|Texture | |Texture | ||
| Line 95: | Line 95: | ||
|Texture | |Texture | ||
|- | |- | ||
| | |StorageBuffer | ||
|0x40 (1 << 6) | |0x40 (1 << 6) | ||
| | |Storage buffer | ||
|- | |- | ||
|RenderTargetColor | |RenderTargetColor | ||
| Line 1,212: | Line 1,212: | ||
| | | | ||
|- | |- | ||
| | |String | ||
|0x2 | |0x2 | ||
| | | | ||
| Line 1,230: | Line 1,230: | ||
|0x0 | |0x0 | ||
|0x8 | |0x8 | ||
| | |const char * | ||
|User data name | |User data name | ||
|- | |- | ||
Latest revision as of 23:31, 8 February 2025
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 buffer |
| Texture | 0x20 (1 << 5) | Texture |
| StorageBuffer | 0x40 (1 << 6) | Storage buffer |
| 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 |