Share via


D3D11_CREATE_DEVICE_FLAG列挙 (d3d11.h)

デバイスの作成に使用されるパラメーターについて説明します。

構文

typedef enum D3D11_CREATE_DEVICE_FLAG {
  D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
  D3D11_CREATE_DEVICE_DEBUG = 0x2,
  D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
  D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
  D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
  D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
  D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
  D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
  D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800
} ;

定数

 
D3D11_CREATE_DEVICE_SINGLETHREADED
値: 0x1
アプリケーションが Direct3D 11 インターフェイスのメソッドのみを 1 つのスレッドから呼び出す場合は、このフラグを使用します。 既定では、 ID3D11Device オブジェクトは スレッド セーフです
このフラグを使用すると、パフォーマンスを向上させることができます。 ただし、このフラグを使用し、アプリケーションが複数のスレッドから Direct3D 11 インターフェイスのメソッドを呼び出すと、未定義の動作が発生する可能性があります。
D3D11_CREATE_DEVICE_DEBUG
値: 0x2
デバッグ レイヤーをサポートするデバイスを作成します。

このフラグを使用するには、D3D11*SDKLayers.dll がインストールされている必要があります。それ以外の場合、デバイスの作成は失敗します。 D3D11_1SDKLayers.dll を取得するには、Windows 8用 SDK をインストールします。
D3D11_CREATE_DEVICE_SWITCH_TO_REF
値: 0x4
メモ このフラグは、Direct3D 11 ではサポートされていません。

 
D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS
値: 0x8
複数のスレッドが作成されないようにします。 Windows Advanced Rasterization Platform (WARP) デバイスでこのフラグを使用すると、WARP によって追加のスレッドは作成されません
すべてのラスター化は呼び出し元のスレッドで行われます。 このフラグは、一般的な使用には推奨されません。 「解説」を参照してください。
D3D11_CREATE_DEVICE_BGRA_SUPPORT
値: 0x20
BGRA 形式 (DXGI_FORMAT_B8G8R8A8_UNORMDXGI_FORMAT_B8G8R8A8_UNORM_SRGB) をサポートするデバイスを作成します。 WDDM 1.1 以降のドライバーを備えた 10level9 以降のハードウェアはすべて、BGRA 形式をサポートしています。

メモ Direct3D リソースとの Direct2D 相互運用性に必要です。

 
D3D11_CREATE_DEVICE_DEBUGGABLE
値: 0x40
シェーダーのデバッグに使用できる情報をデバイスとドライバーに保持させます。 このフラグによる正確な影響は、ドライバーによって異なります。

このフラグを使用するには、D3D11_1SDKLayers.dll がインストールされている必要があります。それ以外の場合、デバイスの作成は失敗します。 作成されたデバイスでは 、デバッグ レイヤーがサポートされます。 D3D11_1SDKLayers.dll を取得するには、Windows 8用 SDK をインストールします。

このフラグを使用し、現在のドライバーがシェーダーのデバッグをサポートしていない場合、デバイスの作成は失敗します。 シェーダーのデバッグには、Windows 8用 WDDM (WDDM 1.2) に実装されているドライバーが必要です。

Direct3D 11: この値は、Direct3D 11.1 まではサポートされていません。
D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY
値: 0x80
Direct3D ランタイムが デバッグ レイヤーを有効にするレジストリ設定を無視します。 デバッグ レイヤーを有効にするには、DirectX SDK の一部として含まれていた DirectX コントロール パネルを使用します。 2010 年 6 月に DirectX SDK の最後のバージョンを出荷しました。 Microsoft ダウンロード センターからダウンロードできます。 このフラグは、エンド ユーザーが DirectX コントロール パネルを使用してアプリが Direct3D を使用する方法を監視できないようにするために、通常はリリース ビルドでのみアプリで設定できます。

メモまた、アプリでこのフラグを設定して、Visual Studio Ultimate 2012 などの Direct3D デバッグ ツールがアプリをフックしないようにすることもできます。

 

Windows 8.1: このフラグは、Windows 8.1 以降で実行Visual Studio 2013アプリをフックすることを防ぐことはできません。代わりに ID3D11DeviceContext2::IsAnnotationEnabled を使用します。 このフラグを設定しても、Windows 8 以前のバージョンで実行Visual Studio 2013以降はアプリをフックできなくなります。

Direct3D 11: この値は、Direct3D 11.1 まではサポートされていません。
D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT
値: 0x100
このフラグは、デバイスが完了するまでに 2 秒以上かかる GPU ワークロードを生成し、オペレーティング システムで正常に完了できるようにする場合に使用します。 このフラグが設定されていない場合、オペレーティング システムは、実行に 2 秒以上かかった GPU パケットを検出すると 、タイムアウトの検出と回復 を実行します。 このフラグが設定されている場合、オペレーティング システムでは、GPU をリセットせずに実行時間の長いパケットを実行できます。 オペレーティング システムが GPU タイムアウトを検出して復旧できるように、デバイスの応答性を高める必要がある場合は、このフラグを設定しないことをお勧めします。 このようなタスクを正常に完了させるために、デバイスでコンピューティング、画像認識、ビデオ エンコードなどの時間のかかるバックグラウンド タスクを実行する必要がある場合は、このフラグを設定することをお勧めします。

Direct3D 11: この値は、Direct3D 11.1 まではサポートされていません。
D3D11_CREATE_DEVICE_VIDEO_SUPPORT
値: 0x800
ディスプレイ ドライバーが WDDM for Windows 8 (WDDM 1.2) に実装されていない場合、Direct3D デバイスの作成が強制的に失敗します。 ディスプレイ ドライバーが WDDM 1.2 に実装されていない場合、 機能レベル 9.1、9.2、または 9.3 で作成された Direct3D デバイスのみがビデオをサポートします。したがって、このフラグが設定されている場合、ランタイムは機能レベル 9.1、9.2、または 9.3 に対してのみ Direct3D デバイスを作成します。 ビデオよりも Direct3D 機能を優先するアプリケーションには、このフラグを指定しないことをお勧めします。 機能レベル 10 以上が使用可能な場合、ランタイムはビデオのサポートに関係なく、その機能レベルを使用します。

このフラグが設定されている場合、BRD でビデオ デコードがサポートされていない場合でも、Basic Render Device (BRD) でのデバイスの作成は成功します。 これは、Media Foundation ビデオ スタックが BRD のソフトウェア モードで動作するためです。 このような状況では、ビデオ スタックで Direct3D デバイスを 2 回作成する (このフラグを使用してデバイスを 1 回作成し、次に BRD を検出し、フラグなしでデバイスを再度作成する) 場合、実際にはパフォーマンスが低下します。

ドライバーの種類が D3D_DRIVER_TYPE_NULLD3D_DRIVER_TYPE_REFERENCE、またはD3D_DRIVER_TYPE_SOFTWAREの Direct3D デバイスを作成しようとすると、関連付けられているドライバーのいずれもビデオ機能を提供しないため、デバイスの作成はどの機能レベルでも失敗します。 ドライバーの種類が D3D_DRIVER_TYPE_WARP Direct3D デバイスを作成しようとすると、デバイスの作成が成功し、ビデオのソフトウェア フォールバックが許可されます。

Direct3D 11: この値は、Direct3D 11.1 まではサポートされていません。

注釈

デバイス作成フラグは、 D3D11CreateDevice および D3D11CreateDeviceAndSwapChain によって使用されます。

アプリケーションは、特に複数の CPU コアを持つマシンでパフォーマンスを向上させるために、スレッドを動的に作成 (および破棄) する場合があります。 ただし、アプリケーションで余分なスレッドが作成されないようにする必要がある場合があります。 これは、デバッグを簡略化したり、コードをプロファイリングしたり、ツールを開発したりする場合に発生する可能性があります。 このような場合は、 D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS を使用して、ランタイムドライバーとビデオ ドライバーが、アプリケーションに干渉する可能性のある追加のスレッドを作成しないように要求します。

要件

要件
Header d3d11.h

こちらもご覧ください

コア列挙