Coelacanth's Dream

VanGogh APU でも NGG/プリミティブシェーダーがデフォルトで有効に

オープンソースドライバーである RadeonSI (OpenGL)RADV (Vulkan) は、RDNA /GFX10 世代からの GPU に実装されている NGG (Next Generation Geometry)/プリミティブシェーダー をサポートし、一部を除いたほとんどはデフォルトで有効にされる。
RDNA 2 / GFX10.3 世代の GPU を持つ VanGogh APU はこれまでその一部に含まれ、専用 VRAM を持つかどうかの判定で弾かれてドライバー部分では無効化されていたが、1
その判定を取り払い、VanGogh APU でもデフォルトで NGG を有効にするパッチが投稿されている。この変更は RadeonSI (OpenGL)RADV (Vulkan) 両方に適用されている。
radv: enable NGG on GFX10.3 APUs by default (9f0133d9) · Commits · Mesa / mesa · GitLab radeonsi: tiny miscellaneous changes, NGG enabled on VanGogh, 1 optimization for dead PS outputs (!7721) · Merge Requests · Mesa / mesa · GitLab

NGG については以下。
ACOバックエンドでも NGG をサポートする動き | Coelacanth’s Dream RadeonSIドライバー + RDNA 2 では NGGカリング/プリミティブシェーダー がデフォルトで有効に | Coelacanth’s Dream 詳細はそれら記事に書いてあるが、NGG を有効にすることで、これまでのグラフィクスパイプラインは必要だった、ジオメトリシェーダーの結果を一度 VRAM に出力する手間を減らすことができる。
dGPU と比べてメモリ帯域がずっと狭い APU では、このことによる性能向上への効果がより期待できるのではないかと思う。
NGGカリング によってカリング処理の効率も大きく引き上げられる。

それと、それら記事を書いた時は NGGカリング == プリミティブシェーダー のように書いたが、
NGG == プリミティブシェーダーNGGカリング == プリミティブカリング という対応関係が正しいようだ。
NGG を他のシェーダーステージに合わせた呼び方が プリミティブシェーダー で、略称としては、Primitive Shader をそのまま PS としてしまうと Pixel Shader と被り、大変ややこしくなるため、NGG を略として用いる、ということと思われる。

      NGG, /* Primitive shader, used to implement VS, TES, GS. */

魅力の多い VanGogh APU

VanGogh は LPDDR4/xメモリよりも高速かつ省電力な LPDDR5メモリをサポートするとされている。VanGogh が LPDDR5-5500 128-bit をサポートすると 仮定 して、Renoir と比較すると、ピークメモリ帯域は約 1.3倍となる。(88.0 GB/s vs 68.3 GB/s)
Linux Kernel に AMD の次世代 APU “VanGogh” をサポートするパッチが投稿される | Coelacanth’s Dream また、VanGoghVega /GFX9 世代以降の GPU を搭載する Xbox Series X|S、PS5 のゲーム機向け APU を除けば 初の APU である。 APU は Raven からしばらく、GPU の世代は Vega /GFX9 から進まなかった。
RDNA 2 /GFX10.3 世代となることで、グラフィクス性能だけでなく、混合精度関連の命令サポートによるコンピュート性能の向上も期待できる。

そのため、メモリの高速化、GPU部に RDNA 2 /GFX10.3 世代の採用、NGG サポートによる GPU性能の向上、それと初の RDNA系アーキテクチャ 採用 APU としてその構成等、VanGogh には期待点、未知の部分が多く これらはそのまま魅力とも言い換えられる 、個人的に VanGogh は特に正式発表が待ち遠しい APU である。