Windows ディスプレイ ドライバー モデル (WDDM) 1.3 以降のドライバーは、Direct3D 9 ハードウェアでハードウェア コマンド バッファーとカウンターをより適切に使用し、システム メモリをサブリソースに効率的にコピーできるようにする、Microsoft Direct3D レンダリング パフォーマンスの向上をサポートできます。 これらの機能は、Direct3D バージョン 10 ハードウェアで使用できる機能の一部を反映したもので、Windows 8.1 以降の新機能です。
新しい Direct3D 11.1 リソースのトリミングとマップの既定のパフォーマンスの向上も利用できます。 マップの既定のシナリオの概要については、以下の「動作の変更」セクションを参照してください。
レンダリング パフォーマンス リファレンス
このリファレンス セクションでは、ユーザー モード デバイス ドライバー インターフェイス (DDI) について説明します。
ユーザー モード ドライバーによって実装される Direct3D レンダリング パフォーマンス関数
このセクションには、Windows ディスプレイ ドライバー モデル (WDDM) 1.3 以降のユーザー モード ディスプレイ ドライバーが Microsoft Direct3D レンダリングのパフォーマンス向上をサポートするために実装する関数が含まれています。
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 (WDDM 1.3 以降の Direct3D レベル 9 ドライバーは、CaptureBuffer フラグ値が設定されている場合、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 への次の入力パラメーターは制限されています。
| パラメーター | 説明 |
|---|---|
hDeviceの |
Direct3D ランタイムからの入力値は制限されていませんが、元の ResourceMap 呼び出しの hDevice 値と一致する値です。 |
hResource |
CreateResource(D3D11) の作成呼び出しで MapFlags の 0 以外の値が設定されている場合、ランタイムは D3D10DDIRESOURCE_BUFFER リソースのみを設定します。 |
サブリソース |
ランタイムは、値を 0 にのみ設定します。 |