複数テクセルのイメージ読み込み
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 の座標、重なり合うレジスターのペア。
まだ足りないこと
- これらの形のイメージのストアは実装していません。
- 計測した表の外の形式とディスクリプターのモードは拒否します。
- テストは、どのタイトルについても新しいフレーム毎秒の数値を示しません。
関連するしくみ
これらのページについて