D3D12_TEXTURE_LAYOUT
列挙型メンバー 4
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| D3D12_TEXTURE_LAYOUT_UNKNOWN | 0 | 0x0 | レイアウトが不明であり、アダプター依存である可能性が高いことを示します。 作成時、ドライバーは他のリソース プロパティ (特にリソースのサイズとフラグ) に基づいて、最も効率的なレイアウトを選択します。 他のテクスチャ レイアウト固有の機能が必要でない限り、この選択肢を優先してください。 UMA アーキテクチャ向けには、ゼロコピーのテクスチャ アップロード最適化が存在します。ID3D12Resource::WriteToSubresource を参照してください。 |
| D3D12_TEXTURE_LAYOUT_ROW_MAJOR | 1 | 0x1 | テクスチャのデータが行優先順 (row-major order、「ピッチリニア順」と呼ばれることもあります) で格納されていることを示します。 このテクスチャ レイアウトでは、1 つの行の連続するテクセルがメモリ上で連続して配置され、その後に次の行のテクセルが続きます。 同様に、特定の深度スライスまたは配列スライスの連続するテクセルはメモリ上で連続しており、その後に次の深度スライスまたは配列スライスのテクセルが続きます。 データのまとまりを整列させるために、行と行の間や、深度スライスまたは配列スライスの間にパディングが存在する場合があります。 ストライドとは、行、深度スライス、または配列スライスの間のメモリ上の距離であり、パディングも含まれます。 このテクスチャ レイアウトを使用すると、他のレイアウトが利用できない場合に、複数のアダプター間でテクスチャ データを共有できます。 このレイアウトは一般に多用するには効率的でないため、多くの制限があります。
|
| D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE | 2 | 0x2 | 64KB タイル内のレイアウトと末尾ミップ (tail mip) のパッキングがドライバーに委ねられることを示します。 標準のスウィズル パターンはありません。 このテクスチャ レイアウトは、タイルとも呼ばれる連続した 64KB の領域に配置され、各次元に沿ってほぼ等しい数の連続するテクセルを含みます。 タイルは行優先順に配置されます。 タイル間にパディングはありませんが、通常は各次元の最後のタイル内に未使用のテクセルが存在します。 タイル内のテクセルのレイアウトは未定義です。 各サブリソースは直前のサブリソースが終わる位置の直後に続き、サブリソースの順序はサブリソース序数と同じ並びに従います。 ただし、末尾ミップのパッキングはアダプター固有です。 詳細については、タイル リソース ティアと ID3D12Device::GetResourceTiling を参照してください。 このテクスチャ レイアウトは、仮想メモリのページ マッピング機能と組み合わせて使用することで、部分的に常駐する (スパースな) テクスチャのシナリオを可能にします。 このテクスチャ レイアウトは ID3D12Device::CreateReservedResource と併用しなければならず、それによって ID3D12CommandQueue::UpdateTileMappings を使用できるようになります。 このレイアウトのテクスチャには、いくつかの制限が適用されます。
|
| D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE | 3 | 0x3 | 既定のテクスチャが標準化されたスウィズル パターンを使用することを示します。 このテクスチャ レイアウトは、タイル内のテクセルのレイアウトが定義されている点を除き、D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE と同じ方法で配置されます。末尾ミップのパッキングはアダプター固有です。 このテクスチャ レイアウトを使用すると、複数のアダプター間、または CPU と GPU の間でデータをマーシャリングする際に最適化が可能になります。 複数のコンポーネントがテクスチャのメモリ レイアウトを把握している場合、コピーの量を削減できます。 このレイアウトは、隣接するテクセルの局所性が回転不変であるため、多用する場合は一般に行優先レイアウトよりも効率的です。 このレイアウトは通常、標準スウィズルをサポートするアダプターでのみ使用できますが、アダプター間で共有されるヒープには例外があります。 このレイアウトの制限として、次のものはサポートされません。
|
公式ドキュメント
テクスチャのレイアウト オプションを指定します。
解説(Remarks)
この列挙型は D3D12_RESOURCE_DESC 構造体で使用されます。
この列挙型は、既定のテクスチャのスウィズル パターンを制御し、既定のテクスチャでのマップのサポートを有効にします。 呼び出し元は、各オプションがサポートされていることを確認するために D3D12_FEATURE_DATA_D3D12_OPTIONS を照会しなければなりません。
標準スウィズル フォーマットはページ サイズのチャンクごとに適用され、ページどうしは互いに線形順に配置されます。 16 ビットのインターリーブ パターンが、スウィズル前のページ内位置からスウィズル後の位置への変換を定義します。
例として、上記の 2D 32bpp スウィズル フォーマットを考えます。 これは次のインターリーブ マスクで表されます (左側のビットが最上位です)。
UINT xBytesMask = 1010 1010 1000 1111
UINT yMask = 0101 0101 0111 0000
スウィズルされたアドレスを計算するには、次のようなコードを使用できます (_pdep_u32 組み込み命令がサポートされている場合)。
UINT swizzledOffset = resourceBaseOffset +
_pdep_u32(xOffset, xBytesMask) +
_pdep_u32(yOffset, yBytesMask);
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
列挙メンバーの定義。HSP タブは #define global(値は16進)。
typedef enum D3D12_TEXTURE_LAYOUT : int {
D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
} D3D12_TEXTURE_LAYOUT;public enum D3D12_TEXTURE_LAYOUT : int
{
D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
}Public Enum D3D12_TEXTURE_LAYOUT As Integer
D3D12_TEXTURE_LAYOUT_UNKNOWN = 0
D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
End Enumimport enum
class D3D12_TEXTURE_LAYOUT(enum.IntEnum):
D3D12_TEXTURE_LAYOUT_UNKNOWN = 0
D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3// D3D12_TEXTURE_LAYOUT
pub const D3D12_TEXTURE_LAYOUT_UNKNOWN: i32 = 0;
pub const D3D12_TEXTURE_LAYOUT_ROW_MAJOR: i32 = 1;
pub const D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE: i32 = 2;
pub const D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE: i32 = 3;// D3D12_TEXTURE_LAYOUT
const (
D3D12_TEXTURE_LAYOUT_UNKNOWN int32 = 0
D3D12_TEXTURE_LAYOUT_ROW_MAJOR int32 = 1
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE int32 = 2
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE int32 = 3
)const
D3D12_TEXTURE_LAYOUT_UNKNOWN = 0;
D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1;
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2;
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3;// D3D12_TEXTURE_LAYOUT
pub const D3D12_TEXTURE_LAYOUT_UNKNOWN: i32 = 0;
pub const D3D12_TEXTURE_LAYOUT_ROW_MAJOR: i32 = 1;
pub const D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE: i32 = 2;
pub const D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE: i32 = 3;const
D3D12_TEXTURE_LAYOUT_UNKNOWN* = 0
D3D12_TEXTURE_LAYOUT_ROW_MAJOR* = 1
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE* = 2
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE* = 3enum D3D12_TEXTURE_LAYOUT : int {
D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
}#define global D3D12_TEXTURE_LAYOUT_UNKNOWN 0x0
#define global D3D12_TEXTURE_LAYOUT_ROW_MAJOR 0x1
#define global D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE 0x2
#define global D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE 0x3