Linux Kernel における AMDGPUドライバーに向けて、新たな RDNA 2 APU の各種 IPブロックのサポートを追加するパッチが投稿されている。
各種 IPブロックはほとんどが、直接 IPバージョンを指定する形でサポートが追加されており、従来のように DeviceID から GPU ASIC を検出する形は採っていない。
こうしたサポート形式は最近になって採られるようになり、VBIOS、ファームウェアから各種 IPバージョンを取得できる GFX9 (Vega) とそれ以降の世代では IPバージョンベースのコードに置き換えられている。
IPバージョンベースのサポートに移行する AMDGPUドライバー | Coelacanth’s Dream
GC: 13.0.7, DCN: 3.1.6, VCN: 3.1.1, NBIO: 7.5.1, SMU: 13.0.9, PSP: 13.0.8, SDMA 5.2.7、これら IPブロックをサポートするパッチが近いタイミングで投稿されている。
ただ、一部 IPブロックは関連付けられているが、また一部はそうでない。そのため、厳密に言えば今回取り上げるパッチは 1つの AMD APU ではなく、また別の APU か複数の APU を想定している可能性がある。
パッチでは、従来の DeviceIDベースのサポートと異なり、コードネームにまったく触れていない。
APU/GPU、SoC として何らかのコードネームはあるかもしれないが、AMDGPUドライバーでそれを基に開発する必要性が薄くなった。
DeviceID を追加することなく、 IPブロックを持つ AMD APU/GPU ASIC をサポートできることが IPバージョンベースの利点であり、今後はこの形式がデフォルトになると考えられる。
- [PATCH] drm/amdgpu: update vcn/jpeg PG flags for VCN 3.1.1
- [PATCH] drm/amdgpu/discovery: add nbio sw func for 7.5.1 nbio
- [PATCH] drm/amdgpu/discovery: Add 13.0.9 SMUIO block
- [PATCH] drm/amd/pm: Add support for MP1 13.0.8
- [PATCH] drm/amdgpu: set new revision id for 10.3.7 GC
- [PATCH] drm/amdgpu/sdma5.2: add support for SDMA 5.2.7
- [PATCH] drm/amdgpu/gfx10: Add GC 10.3.7 Support
- [PATCH 0/6] Update DCN 3.1 support for 3.1.6
補足として、IPバージョンは {major}.{minor}.{revision}
のフォーマットで記述される。GC (Graphics and Compute) IP は GPUID と近いバージョン、フォーマットとなるが ({major}.{minor}.{stepping}
) 、完全に一致はしない。
また、IPブロックは略称が主に使われ、正式名称はドキュメントに記載されている。
Index
GC (Graphics and Compute)
コンピュートユニットやグラフィクス専用の固定機能ブロックを含む GFXコア部、GC (Graphics and Compute) のバージョンは 10.3.7。
ドキュメントでは、GC は GPU内で最大の IPブロックとしており、その関係かコードネームの代わりとして GC_10_3_7 が使われている。
IPバージョンベースのサポートでは今後コードネームらしいものは使わない方針となるのだろうか?
GC_10_3_7 は、IPバージョンが Major: 10, Minor: 3 となっていることから、RDNA 2 アーキテクチャ を採用していると思われ、コードも既存の RDNA 2 APU/GPU とほとんど共通している。
GPU部のキャッシュ構成を示すコード部も IPバージョンベースに移行しているが1、GC_10_3_7 の情報を追加するパッチはまだ投稿、公開されていない。
+#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
+#define AMDGPU_FAMILY_GC_10_3_7 151 +#define GC_10_3_7_A0 0x01 +#define GC_10_3_7_UNKNOWN 0xFF + +#define ASICREV_IS_GC_10_3_7(eChipRev) ((eChipRev >= GC_10_3_7_A0) && (eChipRev < GC_10_3_7_UNKNOWN))
GC_10_3_7 は VCN 3.1.1 と DCN 3.1.6 に関連付けられている。
VCN 3.1.1 は Yellow Carp/Rembrandt APU にも採用されている。
DCN 3.1.6 については、Yellow Carp/Rembrandt の DCN IPバージョンは DCN 3.1.{1, 2} であるため、そこからわずかにアップデートされている。
+ case AMDGPU_FAMILY_GC_10_3_7: + if (ASICREV_IS_GC_10_3_7(asic_id.hw_internal_rev)) + dc_version = DCN_VERSION_3_16; + break;
DCN 3.1.6
DCN 3.1.6 をサポートするパッチは 6個あるとしているが、内 2つはレジスタヘッダであり、パッチサイズが巨大なためメーリングリストには投稿されていない。
- [PATCH 0/6] Update DCN 3.1 support for 3.1.6
- [PATCH 3/6] drm/amd/display: configure dc hw resource for DCN 3.1.6
- [PATCH 4/6] drm/amd/display: Add DMUB support for DCN316
- [PATCH 5/6] drm/amd/display: Add DCN316 resource and SMU clock manager
- [PATCH 6/6] drm/amdgpu/discovery: Add sw DM function for 3.1.6 DCE
コードには APU であることを示すフラグがあり、ここから DCN 3.1.6 を採用する GC_10_3_7 は APU だと考えられる。
+ dc->caps.edp_dsc_support = true; + dc->caps.extended_aux_timeout_support = true; + dc->caps.dmcub_support = true; + dc->caps.is_apu = true;
Watermark (WM) table は DDR4、LPDDR5 メモリに向けたものが用意されている。この点は VanGogh/Aerith APU と一致する。2
Yellow Carp/Rembrandt は DDR5、LPDDR5 分の WM table のみが用意されているため、DCN 3.1.x ながら GC_10_3_7 はそれと異なるメモリに対応すると読める。だが、メモリタイプが LPDDR5 でない場合に DDR4 の WM table が使われるようになっており、LPDDR5メモリはまず対応していると思われるが、DDR4 については仮のデータである可能性がある。
最大画面出力数といった規模は基本 Yellow Carp/Rembrandt APU と同じであり、最大 4画面出力に対応しているものと思われる。
+static const struct resource_caps res_cap_dcn31 = { + .num_timing_generator = 4, + .num_opp = 4, + .num_video_plane = 4, + .num_audio = 5, + .num_stream_encoder = 5, + .num_dig_link_enc = 5, + .num_hpo_dp_stream_encoder = 4, + .num_hpo_dp_link_encoder = 2, + .num_pll = 5, + .num_dwb = 1, + .num_ddc = 5, + .num_vmid = 16, + .num_mpc_3dlut = 2, + .num_dsc = 3, +};
LPDDR5メモリに対応する AMD APU には、最近になって AMD Sabrina APU/SoC が Coreboot へのパッチで出てきている。
しかし、今の所 GC_10_3_7 と AMD Sabrina で結び付けられるのは LPDDR5メモリに対応する点だけであるため、断定はできない。
+ if (ctx->dc_bios->integrated_info->memory_type == LpDdr5MemType) { + dcn316_bw_params.wm_table = lpddr5_wm_table; + } else { + dcn316_bw_params.wm_table = ddr4_wm_table; + }