本文へスキップ
PS5PCEM
一部グラフィックス

RDNA2 シェーダーから SPIR-V へ

PlayStation 5 のシェーダーは RDNA2 の機械語です。PS5PCEM は GFX10 の命令ファミリーをデコードし、制御フローグラフを構築し、対応する操作を Vulkan 用の SPIR-V 1.5 に変換します。

2026年10月10日 までのリポジトリノート

デコード

フロントエンドは、スカラーの SOP1、SOP2、SOPK、SOPC、SOPP、SMEM のエンコーディング、ベクトルの VOP1、VOP2、VOP3、VOP3P、VOPC、VINTRP のエンコーディング、MUBUF、MTBUF、FLAT、DS、MIMG、EXP を認識します。アーキテクチャ上の 1 ワードと 2 ワードの本体、省略可能なリテラル、MIMG の NSA のアドレスワードを保持するため、後に未対応のオペコードがあってもストリームの同期がずれることはありません。

既知のファミリーの中の認識できないオペコードは、そのファミリー、数値のオペコード、生のワード、理由を持ったまま、未対応の命令になります。SDWA と DPP の拡張ワードは、セレクター、修飾子、レーンマスクを保ちます。デコーダーは知らないオペコードに別の名前を付けることはしません。

制御フローと型付きの IR

直接の分岐先でプログラムをブロックに分割します。前方の合流、入れ子の領域、後方の辺は別々に記録します。実行中のトランスレーターはデコード済みの命令からコードを生成できます。PS5_GPU_SHADER_IR=1 を設定すると、正規化した型付きの IR を選びます。PS5_GPU_SSA=1 を設定すると、phi と定義・使用の状態、定数の畳み込み、反復的なデッドコード除去が加わります。

非巡回の選択は、合流点に phi 値を持つ構造化された SPIR-V の合流になります。自然なループはループの合流になります。既約でない制御フローは、VCC と EXEC の述語を保つブロックインデックスのディスパッチャーになるため、書き込みを飛ばすべきレーンは引き続き飛ばします。EXEC マスクは SPIR-V のブロック内では再利用し、ラベルごとに破棄します。分岐の一方の値は、もう一方を支配しないからです。

10 月 9 日のスイートが計測したこと

10 月 9 日のスカラー呼び出しのチェックポイントは、GPU 解析のテスト 259 件中 259 件と Vulkan のテスト 232 件中 232 件に合格しました。RDNA2 のスイートは、既存の同じ 10 件の失敗と報告された 1 件のリークを伴って、281 件中 271 件に合格しています。これらの命令のプローブは、ゲームの新しいフレームレートを示すものではありません。

複数テクセルのイメージ読み込み、水平方向のギャザー、NGG のフェッチシェーダー、範囲付きのスカラー呼び出しは、それぞれ独自の経路として実装し、専用のページで説明しています。計測した範囲になかったストアとディスクリプターの組み合わせは、未対応のままです。

実装済みのこと

  • リテラルと NSA のワードを含む、GFX10 のスカラー、ベクトル、メモリ、イメージ、エクスポートのファミリーのデコード。
  • 構造化された選択、自然なループ、レーンマスクを保つ既約でないフローのディスパッチャー。
  • 環境変数で選ぶ、オプションの型付き IR と SSA の整理。
  • 対応する ALU、メモリ、イメージ、補間、エクスポートの操作に対する SPIR-V 1.5。

まだ足りないこと

  • 既存の RDNA2 スイートの失敗 10 件と、報告されたリーク 1 件が残っています。
  • 未対応のオペコードはその変換を止めます。推測した操作で置き換えることはありません。
  • 命令のテストはフレームレートの結果ではありません。

関連するしくみ

これらのページについて

本文は PS5PCEM リポジトリのアーキテクチャノートと 2026 年 10 月のレポートに基づいています。個別のテストに合格したことは、新しいフレームレートや新しいクリアを意味しません。

すべての技術