Direct3D レンダリング パフォーマンスの向上
Windows Display Driver Model (WDDM) 1.3 以降のドライバーは、Microsoft Direct3D レンダリング パフォーマンスの向上をサポートできるため、Direct3D 9 ハードウェアでハードウェア コマンド バッファーとカウンターをより適切に使用し、システム メモリをサブリソースに効率的にコピーできます。 これらの機能は、Direct3D バージョン 10 ハードウェアで使用できる機能の一部をミラーリングした、Windows 8.1 以降の新機能です。
新しい Direct3D 11.1 リソースのトリミングとマップについても、既定のパフォーマンスの向上が得られます。 マップの既定のシナリオの概要については、以下の「動作の変更」セクションを参照してください。
レンダリング パフォーマンス リファレンス
このリファレンス セクションでは、ユーザー モード デバイス ドライバー インターフェイス (DDI) について説明します。
ユーザー モード ドライバーによって実装される Direct3D レンダリング パフォーマンス関数
このセクションには、 Microsoft Direct3D レンダリング パフォーマンスの向上をサポートするために、Windows Display Driver Model (WDDM) 1.3 以降のユーザー モード ディスプレイ ドライバーで実装されている関数を記載しています。
PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO
PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP
Direct3D レンダリング パフォーマンスの構造体と列挙体
これらのユーザー モードの構造体と列挙体は、レンダリング パフォーマンスの向上をサポートしており、Windows 8.1 で新機能または更新された機能として提供されています。 D3D11_1_DDI_FLUSH_FLAGS を除き、すべて Direct3D レベル 9 のドライバーに適用されます。
- D3DDDI_FLUSH_FLAGS (新規)
- D3DDDIARG_COPYFLAGS (新規)
- D3DDDIARG_COUNTER_INFO (新規)
- D3DDDIARG_UPDATESUBRESOURCEUP (新規)
- D3DDDICAPS_SIMPLE_INSTANCING_SUPPORT (新規)
- CreateResource2 (CaptureBuffer フラグ値が設定されている場合、WDDM 1.3 以降の Direct3D レベル 9 のドライバーは E_INVALIDARG エラー コードを返す必要があります)
- D3D11_1_DDI_FLUSH_FLAGS (D3DWDDM1_3DDI_TRIM_MEMORY 定数の追加)
- D3DDDI_DEVICEFUNCS (pfnFlush1、pfnCheckCounterInfo、pfnCheckCounter、pfnUpdateSubresourceUP メンバーの追加)
- D3DDDI_POOL (D3DDDIPOOL_STAGINGMEM 定数の追加)
- D3DDDICAPS_TYPE (D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT 定数の追加)
- GetCaps (備考に新規の情報)
WDDM 1.3 以降での DDI 実装の要件
WDDM 1.3 以降では、ユーザー モード ドライバーを実装する際に、以下の関数が必須または省略可能です。
関数グループ | 説明 |
---|---|
WDDM 1.3 より前では、Direct3D 9 の関数は省略可能です。 必須: |
|
WDDM 1.3 以降で使用できる Direct3D 9 の関数。 ドライバーは、これらの関数をすべて実装するか、すべて実装しない必要があります。 |
|
直前で説明した WDDM 1.3 以降の省略可能な関数が実装されている場合、これらの関数には動作の変更が関連付けられています。 |
これらのシナリオは、GetCaps が呼び出されたときに適用されます。
|
これらの Direct3D 11 の関数には、動作の変更が関連付けられています。 |
|
リソース作成、マップ、およびマップ解除の関数の呼び出しの動作の変更
WDDM 1.3 以降のドライバーで実装されるこれらの関数では、Direct3D ランタイムは、マップの既定のシナリオ向けに、制限された入力値のセットを提供します。 これらの制限付きの値は、機能レベル 11.1 以降をサポートするドライバーにのみ適用されます。
これらの入力 D3D11DDIARG_CREATERESOURCE 構造体メンバーは制限されています。
メンバー | 説明 |
---|---|
ResourceDimension と Usage |
これらの動作の変更は、Direct3D ランタイムが ResourceDimension に D3D10DDIRESOURCE_BUFFER 型を提供し、Usage に D3D10_DDI_USAGE_DEFAULT 型を提供する場合にのみ適用されます。 |
BindFlags |
Direct3D ランタイムは、D3D10_DDI_BIND_SHADER_RESOURCE 値と D3D11_DDI_BIND_UNORDERED_ACCESS 値のみを設定します。 |
MapFlags |
ここに記載されている他のすべてのメンバーの要件が満たされている場合、ランタイムは、D3D10_DDI_MAP_READ、D3D10_DDI_MAP_WRITE、および D3D10_DDI_MAP_READWRITE の値を設定できます。 ドライバーは、これらの値をサポートする必要があります。 D3D10_DDI_MAP_WRITE_DISCARD と D3D10_DDI_MAP_WRITE_NOOVERWRITE の値は無効です。 |
MiscFlags |
ランタイムは、D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS と D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED の値のみを設定します。 |
形式 |
ランタイムは、DXGI_FORMAT_UNKNOWN 値のみを設定します。 |
SampleDesc |
ランタイムは、DXGI_SAMPLE_DESC.Count メンバーを 1 に、Quality メンバーを 0 に設定します。 |
MipLevels |
ランタイムは、この値を 1 に設定します。 |
ArraySize |
ランタイムは、この値を 1 に設定します。 |
pPrimaryDesc |
ランタイムは、この値を NULL に設定します。 |
ResourceMap 関数 -
ResourceMap の以下の入力パラメーターは制限されています。
パラメーター | 説明 |
---|---|
hResource |
CreateResource(D3D11) の作成呼び出しで MapFlags に 0 以外の値が設定されている場合、Direct3D ランタイムは D3D10DDIRESOURCE_BUFFER リソースのみを設定します。 |
ランタイムは、DXGI_FORMAT_UNKNOWN 値のみを設定します。 |
|
サブリソース |
ランタイムは、この値を 0 に設定するのみです。 |
DDIMap |
ここに記載されている他のすべてのメンバー要件が満たされている場合、ランタイムは CreateResource(D3D11) の作成呼び出しで設定された MapFlags 値と一致する、D3D10_DDI_MAP_READ、D3D10_DDI_MAP_WRITE、または D3D10_DDI_MAP_READWRITE 値を設定できます。 |
フラグ |
ランタイムからの入力値は制限されていませんが、ドライバーは D3D10_DDI_MAP_FLAG_DONOTWAIT 値をサポートできる必要があります。 |
pMappedSubResource |
ランタイムからの入力値は制限されていませんが、ドライバーは、有効な CPU キャッシュ可能なポインターを D3D10DDI_MAPPED_SUBRESOURCE.pData メンバーに割り当て、pData で提供されるバッファーとデータのサイズに一致するように RowPitch と DepthPitch を設定する必要があります。 |
ResourceUnmap 関数 -
ResourceUnmap の以下の入力パラメーターは制限されています。
パラメーター | 説明 |
---|---|
hDevice |
Direct3D ランタイムからの入力値は制限されていませんが、元の ResourceMap 呼び出しの hDevice 値と一致する値です。 |
hResource |
CreateResource(D3D11) の作成呼び出しで MapFlags に 0 以外の値が設定されている場合、ランタイムは D3D10DDIRESOURCE_BUFFER リソースのみを設定します。 |
サブリソース |
ランタイムは、この値を 0 に設定するのみです。 |