次の方法で共有


既定のテクスチャ マッピング

既定のテクスチャ マッピングを使用すると、GPU と CPU の間でイメージ データを共有しながら、コピーとメモリ使用量が削減されます。 ただし、特定の状況でのみ使用する必要があります。 標準のスウィズル レイアウトでは、複数のレイアウトでデータをコピーまたはスウィズルすることを回避できます。

概要

既定のテクスチャのマッピングは、開発者にとって最初の選択肢ではありません。 開発者は、最初に個別の GPU フレンドリな方法でコーディングする必要があります (つまり、大部分のテクスチャに対する CPU アクセス権を持たず、 CopySubresourceRegion1 を使用してアップロードする必要があります)。 ただし、場合によっては、CPU と GPU が同じデータで頻繁に対話する場合があるため、既定のテクスチャのマッピングは、電力を節約したり、特定のアダプターやアーキテクチャで特定の設計を高速化したりするのに役立ちます。 アプリケーションでは、このような状況を検出して、最適化によって不要なコピーをなくす必要があります。

D3D11.3 では、D3D11_TEXTURE_LAYOUT_UNDEFINED ( D3D11_TEXTURE_LAYOUT 列挙型の 1 つのメンバー) を使用して作成されたテクスチャは、頻繁な GPU レンダリングとサンプリングに最も効率的です。 パフォーマンス テストでは、これらのテクスチャを CPU アクセスを使用したD3D11_TEXTURE_LAYOUT_UNDEFINEDと比較し、CPU アクセスを使用してD3D11_TEXTURE_LAYOUT_64K_STANDARD_SWIZZLEし、アダプター間のサポートをD3D11_TEXTURE_LAYOUT_ROW_MAJORする必要があります。

CPU アクセスでD3D11_TEXTURE_LAYOUT_UNDEFINEDを使用すると、 WriteToSubresourceReadFromSubresourceMap (ポインターへのアプリケーション アクセスを排除する)、および Unmap の各メソッドが有効になります。GPU アクセスの効率を犠牲にすることができます。 CPU アクセスでD3D11_TEXTURE_LAYOUT_64K_STANDARD_SWIZZLEを使用すると、 WriteToSubresourceReadFromSubresourceMap (アプリケーションへの有効なポインターを返します)、および マップ解除が有効になります。 また、CPU アクセスを使用してD3D11_TEXTURE_LAYOUT_UNDEFINEDよりも GPU アクセスの効率を犠牲にすることもできます。

一般に、アプリケーションでは、GPU 専用アクセス可能なテクスチャの大部分を作成し、D3D11_TEXTURE_LAYOUT_UNDEFINEDを使用する必要があります。

マッピングの既定のテクスチャ機能以前は、多次元データの標準化されたレイアウトは 1 つだけでした。"linear" ("行メジャー" とも呼ばれます)。 マップの既定値を使用できる場合は、アプリケーションでテクスチャのUSAGE_STAGINGとUSAGE_DYNAMICを回避する必要があります。 USAGE_STAGINGテクスチャとUSAGE_DYNAMICテクスチャでは、線形レイアウトが使用されます。

D3D11.3 (および D3D12) では、標準の多次元データ レイアウトが導入されています。 この目的は、複数の処理ユニットが同じデータの操作を行うときに、複数のレイアウト間でのデータのコピーやデータのスウィズルを不要にすることです。 レイアウトが標準化されていれば、ネットワーク効果による効率の向上が可能になると共に、特定のパターンを想定することによってアルゴリズムのショートカットが可能になります。

ただし、この標準スウィズルはハードウェアの機能の 1 つであるため、すべての GPU でサポートされるとはかぎりません。

D3D11.3 API

D3D12 とは異なり、D3D11.3 では既定でテクスチャ マッピングがサポートされていないため、 D3D11_FEATURE_DATA_D3D11_OPTIONS2クエリを実行する必要があります。 また、ID3D11Device::CheckFeatureSupport を呼び出し、D3D11_FEATURE_DATA_D3D11_OPTIONS2のフィールドをチェックして、Standard swizzle のクエリを実行するStandardSwizzle64KBSupported必要があります。

テクスチャ マッピングを参照する API は次のとおりです。

列挙型

構造体

  • D3D11_TEXTURE2D_DESC1 : 2D テクスチャについて説明します。 CD3D11_TEXTURE2D_DESC1 ヘルパー構造に注意してください。
  • D3D11_TEXTURE3D_DESC1 : 3D テクスチャについて説明します。 CD3D11_TEXTURE3D_DESC1 ヘルパー構造に注意してください。

メソッド

Direct3D 11.3 の機能