AMD が公式に提供しているオープンソース Vulkanドライバー、AMDVLK、それを構成する LLPC (LLVM-Based Pipeline Compiler)、PAL (Platform Abstraction Library)、XGL (Vulkan API Layer) が、Radeon RX 6700 XT のベースとなる Navi22/Navy Flounder に対応した。
Navi22/Navy Flounder 内部構成
Navi22/Navy Flounder の内部構成は以下から読み取れ、全体の SE (ShaderEngine) 数は 2基、SE あたりの SH (ShaderArray) は 2基、SH あたりの WGP (CU) 数は 5 (10) 基となっている。RB (RenderBackend) は SE あたり 4基。
SE 1基分の規模は、Radeon RX 6700 XT よりも上位の Radeon RX 6800/6900シリーズ のベースとなる Navi21/Sienna Cichlid と同じ。
GPU 全体的には、SE数を Navi21/Sienna Cichlid からざっくり半分にしたのが Navi22/Navy Flounder となる。
ただメモリバス幅は半分ではなく 3/4 の 192-bit で、L2キャッシュブロックもそれに合わせて 12基 (16-bit x 12ch分) 搭載している。
else if (AMDGPU_IS_NAVI22(pInfo->familyId, pInfo->eRevId)) { pInfo->gpuType = GpuType::Discrete; pInfo->revision = AsicRevision::Navi22; pInfo->gfxStepping = Abi::GfxIpSteppingNavi22; pInfo->gfx9.numShaderEngines = 2; pInfo->gfx9.rbPlus = 1; pInfo->gfx9.numSdpInterfaces = 16; pInfo->gfx9.maxNumCuPerSh = 10; pInfo->gfx9.maxNumRbPerSe = 4; pInfo->gfx9.numWavesPerSimd = 16; pInfo->gfx9.supportFp16Dot2 = 1; pInfo->gfx9.gfx10.numGl2a = 2; pInfo->gfx9.gfx10.numGl2c = 12; pInfo->gfx9.gfx10.numWgpAboveSpi = 5; // GPU__GC__NUM_WGP0_PER_SA pInfo->gfx9.gfx10.numWgpBelowSpi = 0; // GPU__GC__NUM_WGP1_PER_SA }
## Navi22/Navy Flounder Diagram
+- ShaderEngine(00) -----------------+ +- ShaderEngine(01) -----------------+
| +- ShaderArray(00) --------------+ | | +- ShaderArray(00) --------------+ |
| | ==== ==== WGP(00) ==== ==== | | | | ==== ==== WGP(00) ==== ==== | |
| | ==== ==== WGP(01) ==== ==== | | | | ==== ==== WGP(01) ==== ==== | |
| | ==== ==== WGP(02) ==== ==== | | | | ==== ==== WGP(02) ==== ==== | |
| | ==== ==== WGP(03) ==== ==== | | | | ==== ==== WGP(03) ==== ==== | |
| | ==== ==== WGP(04) ==== ==== | | | | ==== ==== WGP(04) ==== ==== | |
| | [ RB+ ][ RB+ ] | | | | [ RB+ ][ RB+ ] | |
| | [- L1$ 128KB -] | | | | [- L1$ 128KB -] | |
| | [ Rasterizer/Primitive Unit ] | | | | [ Rasterizer/Primitive Unit ] | |
| +--------------------------------+ | | +--------------------------------+ |
| +- ShaderArray(01) --------------+ | | +- ShaderArray(01) --------------+ |
| | ==== ==== WGP(00) ==== ==== | | | | ==== ==== WGP(00) ==== ==== | |
| | ==== ==== WGP(01) ==== ==== | | | | ==== ==== WGP(01) ==== ==== | |
| | ==== ==== WGP(02) ==== ==== | | | | ==== ==== WGP(02) ==== ==== | |
| | ==== ==== WGP(03) ==== ==== | | | | ==== ==== WGP(03) ==== ==== | |
| | ==== ==== WGP(04) ==== ==== | | | | ==== ==== WGP(04) ==== ==== | |
| | [ RB+ ][ RB+ ] | | | | [ RB+ ][ RB+ ] | |
| | [- L1$ 128KB -] | | | | [- L1$ 128KB -] | |
| | [ Rasterizer/Primitive Unit ] | | | | [ Rasterizer/Primitive Unit ] | |
| +--------------------------------+ | | +--------------------------------+ |
| [- Geometry Processor -] | | [- Geometry Processor -] |
+------------------------------------+ +------------------------------------+
[L2$ 256K] [L2$ 256K] [L2$ 256K] [L2$ 256K]
[L2$ 256K] [L2$ 256K] [L2$ 256K] [L2$ 256K]
[L2$ 256K] [L2$ 256K] [L2$ 256K] [L2$ 256K]
また、ワークアラウンド (一時的な回避策) の設定から、Navi21/Sienna Cichlid に存在した一部のハードウェア的な問題が修正されていると思われる。
(waDisableFmaskNofetchOpOnFmaskCompressionDisable
, waVgtFlushNggToLegacy
) 1