テクスチャのデタイル
PS5 のテクスチャは線形の行ではなく GFX10 のスウィズルのパターンで格納されています。PS5PCEM はアドレス式を CPU で、そして条件を満たす大きな 4、8、16 バイトのサーフェスについては GPU で適用します。
2026年10月10日 までのリポジトリノート
アドレス式
タイル化されたテクスチャは、隣り合うピクセルが別のメモリチャンネルに入るように、ピクセルの座標をパイプ、バンク、サンプルのビットと XOR します。PS5PCEM は、線形レイアウト、標準の 256 バイト、4 KiB、64 KiB のタイル、部分常駐の 64 KiB のタイル、深度の Z_X、レンダーターゲットの R_X について、GFX10 の式を実装しています。同じ取り決めがミップのテールと厚い 3D のブロックもカバーします。
最大 16 のミップレベルを、小さいものから順に配置します。小さなレベルは、正確な 4 KiB と 64 KiB のミップのテールの位置を共有します。3 次元のリソースは厚いブロックと深度方向のブロックスライスを使います。すべてのサブリソースが、確認済みのソースのバイトオフセットをひとつ公開します。バッファ、イメージ、ブロック圧縮、カラーターゲット、深度ターゲットのアダプターは何も割り当てず、オーバーフローや短い範囲を拒否します。
GPU でのデタイルと CPU へのフォールバック
大きな 4 バイトの標準の 256 バイト、4 KiB、64 KiB のサーフェスと、大きな線形のサーフェスの初回のアップロードは、GPU でデタイルします。コンピュートのカーネルは、ポインターを含まないキーと 84 バイトのパラメーターブロックを受け取ります。ブロックサイズ、テール、ピッチ、スライス、サンプル数、64 ビットのバッファオフセットを、安定したすべて 32 ビットのレイアウトで渡します。8 バイトと 16 バイトの 2D と 3D の標準および PRT のサーフェスも同じ GPU のファミリーです。
RB+ と MSAA を含むほかのファミリーは CPU に残ります。それらの Oberon の式はサンプルビットを含み、CPU の経路がそれを使います。フォールバックは帯域のコストであって、別のピクセル形式ではありません。実際の描画での診断は、ファミリー、3D のブロックの寸法、サンプル数、ミップのテールの境界、ゲストの割り当てサイズを報告します。
デタイルがフレーム時間に現れる理由
毎フレーム再アップロードされるテクスチャは、毎フレームデタイルのコストを払います。ページトラッカーを有効にすると、変化のないページが常駐したままになるため、デタイルを省けます。GPU 自身が書き直したテクスチャは、それでも無効化しなければなりません。デタイルがこの一貫性の規則に取って代わることはありません。
サンプルのビューは、ゼロでないベースレベルを含め、ディスクリプターが指定するミップの範囲をデタイルします。その場合、Vulkan のイメージのミップ 0 はビューのベースレベルです。ビューの経路でまだ欠けている成分のスウィズルは、アドレス式とは別の制限です。
実装済みのこと
- ミップのテールと 3D のブロックを含む、GFX10 の線形、標準、PRT、深度、レンダーターゲットのアドレス式。
- 大きな 4、8、16 バイトの 2D と 3D の標準および PRT のサーフェスに対する GPU のコンピュートによるデタイル。
- MSAA と RB+ のサンプルビットを含む、残りのファミリーの CPU デタイル。
- 短い範囲とオーバーフローを拒否する、確認済みのサブリソースのオフセット。
まだ足りないこと
- MSAA と RB+ のデタイルは CPU で動きます。
- 一部の成分のスウィズルとレイヤービューはまだ不完全です。
- アップロード後に CPU が書き込んだサーフェスは、再びサンプルする前に無効化する必要があります。
関連するしくみ
これらのページについて