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

複数テクセルのイメージ読み込み

IMAGE_LOAD_BY2、BY4、PCK2、PCK4 は、明示的なミップの形も含め、計測したネイティブの 2D 形式で実行されます。BY の読み込みは連続するテクセルを返し、PCK の読み込みはその生のビットをひとつのレジスターに詰めます。

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

BY と PCK

BY の読み込みは、連続するテクセルを別々の VGPR に書き込み、チャンネルは各テクセルの中で並びます。PCK の読み込みは、生の成分ビットをひとつの 32 ビットの VGPR に詰め、最初のテクセルが最下位ビットに入ります。符号付きの成分は格納幅に切り詰めます。UNORM の成分は偶数丸めの変換で再構成します。

最初のテクセルは X 方向に 2 または 4 のグループに切り下げてアラインします。範囲のテストは元のアラインされていない座標を使います。アラインの前にグループ全体が収まり、Y が範囲内で、要求したミップが存在しなければなりません。無効なグループはすべての結果レジスターをゼロにし、関係のない書き込み先には触れません。無効な座標は、Vulkan に渡る前に安全なフェッチのオペランドに置き換えます。

対応する形式

DMASK 0x3 の BY2 は、UNORM、SNORM、UINT、SINT の R8 と R16、そして R16 FLOAT をカバーします。DMASK 0xF の BY2 は、RG8 の UNORM、SNORM、UINT、SINT をカバーします。DMASK 0xF の BY4 は、この 4 つの数値型の R8 をカバーします。DMASK 0x1 の PCK2 は、R8、R16、RG8 の UNORM、UINT、SINT をカバーします。DMASK 0x1 の PCK4 は、R8 の UNORM、UINT、SINT をカバーします。これらの読み込みの明示的なミップの変種も、同じ形式の一覧を使います。

バックエンドは変換に正確なネイティブの形式を渡します。UINT と SINT の別々のサンプルイメージのバンクによって、浮動小数点や比較のバンクと並んで、整数の結果が正しい型のまま保たれます。NSA の座標、重なり合うアドレスと書き込み先のレジスター、通常の EXEC マスクは保たれます。

この変更が意味しないこと

10 月 9 日のレポートは、共通のシェーダーとバックエンドの対応です。ゲームの識別子やシェーダーのハッシュには依存しません。これらの読み込みだけから、ゲームの互換性の結果やフレームレートの変化を主張することはありません。

ストア、そして計測した範囲になかった形式やディスクリプターの組み合わせは、未対応のままです。水平方向のギャザーは隣の命令ファミリーで、専用のページがあります。

実装済みのこと

  • 明示的なミップの有無にかかわらず、計測した 2D の BY2、BY4、PCK2、PCK4 の読み込み。
  • グループのアラインメント、確認済みの範囲、無効なグループでのゼロの結果。
  • UINT と SINT が型を保つための、整数用の別のサンプルイメージのバンク。
  • 保たれる EXEC マスク、NSA の座標、重なり合うレジスターのペア。

まだ足りないこと

  • これらの形のイメージのストアは実装していません。
  • 計測した表の外の形式とディスクリプターのモードは拒否します。
  • テストは、どのタイトルについても新しいフレーム毎秒の数値を示しません。

関連するしくみ

これらのページについて

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

すべての技術