DXGK_VIDSCHCAPS 構造体 (d3dkmddi.h)

DXGK_VIDSCHCAPS構造体には、カーネル モードディスプレイ ミニポート ドライバー (KMD) でサポートできる GPU のスケジューリング機能を識別するビット フィールド フラグがあります。

構文

typedef struct _DXGK_VIDSCHCAPS {
  union {
    struct {
      UINT MultiEngineAware : 1;
      UINT VSyncPowerSaveAware : 1;
      UINT PreemptionAware : 1;
      UINT NoDmaPatching : 1;
      UINT CancelCommandAware : 1;
      UINT No64BitAtomics : 1;
      UINT LowIrqlPreemptCommand : 1;
      UINT HwQueuePacketCap : 4;
      UINT NativeGpuFence : 1;
      UINT OptimizedNativeFenceSignaledInterrupt : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

メンバー

MultiEngineAware

ドライバーがデバイス コンテキストの作成と破棄 ( DxgkDdiCreateContext 関数と DxgkDdiDestroyContext 関数を使用) とデバイス コンテキストの使用 ( DxgkDdiPresent 関数と DxgkDdiRender 関数を通じて) をサポートするかどうかを指定する UINT 値。 ドライバーがコンテキストの作成をサポートしていない場合、コンテキストにハンドルを渡すドライバーの呼び出しごとに、Microsoft DirectX グラフィックス カーネル サブシステムは、コンテキストへのハンドルをデバイスへのハンドルに置き換えます。

VSyncPowerSaveAware

ドライバーが垂直同期の省電力機能をサポートするかどうかを指定する UINT 値。

VSyncPowerSaveAware が 1 (TRUE) に設定されている場合、OS は、一部のアプリケーションの使用によって発生する垂直同期割り込みを無効にして有効にすることで、電力を節約できます。 VSyncPowerSaveAware が 0 (FALSE) に設定されている場合、垂直同期割り込みが発生する可能性があるアプリケーションの垂直同期割り込みが OS によって無効になることはありません。 Windows Server 2008 および Windows Vista SP1 以降でサポートされます。

PreemptionAware

ドライバーが、Windows 8以降のバージョンの Windows の GPU プリエンプション ポリシーをサポートするかどうかを指定する UINT 値。 このポリシーでは、OS は 常に、**タイムアウト検出と回復 (TDR) プロセスを開始する前に、GPU にプリエンプション要求を発行します。 Windows 8 以降でサポートされています。

PreemptionAware が 1 (TRUE) に設定されている場合、ドライバーは、Windows 8 以降のバージョンの Windows のプリエンプション ポリシーをサポートします。 PreemptionAware が 1 に設定されている場合は、MultiEngineAware メンバーも値 1 に設定する必要があることに注意してください。 PreemptionAware が 1 に設定されているが、MultiEngineAware が 0 に設定されている場合、OS はドライバーの初期化プロセスを停止し、エラー コードを返します。

PreemptionAware が 0 (FALSE) に設定されている場合、ドライバーは Windows 7 のプリエンプション ポリシーをサポートします。 このポリシーを使用すると、GPU で実行時間の長い操作が実行されている可能性がある間、OS はプリエンプション要求を発行しない可能性があります。 その結果、TDR プロセスが開始される前に、これらの GPU 要求は割り込まれません。 これにより、TDR プロセスによって GPU が繰り返しリセットされ、システム停止エラーが発生する可能性があります。

NoDmaPatching

ドライバーが複数の部分に分割されている DMA バッファーのリーク検出を無効にするかどうかを指定する UINT 値。 この検出は、DMA バッファーの各部分に物理アドレスを割り当てる (パッチを適用する) ドライバーの DxgkDdiPatch 関数が呼び出された後に実行されます。 Windows 8 以降でサポートされています。

仮想アドレスをサポートするディスプレイ デバイスは、DMA バッファー アドレスの値にパッチを適用しなくても、仮想アドレスを新しいビデオ メモリの場所に再プログラミングできます。 これらの種類のディスプレイ デバイスの場合、ドライバーは NoDmaPatching を 1 に設定する必要があります。

NoDmaPatching が 1 (TRUE) に設定されている場合、ドライバーはリーク検出を無効にし、DMA バッファー分割の動作は Windows 7 と同じです。 NoDmaPatching が 1 に設定されている場合は、PreemptionAware メンバーと MultiEngineAware メンバーも 1 に設定する必要があることに注意してください。 NoDmaPatching が 1 に設定されているが、PreemptionAware または MultiEngineAware が 0 に設定されている場合、OS はドライバーの初期化プロセスを停止し、エラー コードを返します。

NoDmaPatching が 0 (FALSE) に設定されている場合、ドライバーは、修正プログラムが適用された DMA バッファー アドレスのリーク検出を有効にします。 OS は、ドライバーの DxgkDdiPatch 関数を呼び出す前にリーク検出を実行します。

CancelCommandAware

コマンドがハードウェア キューから削除された後に、ドライバーが内部リソースのクリーンアップ ( DxgkDdiCancelCommand 関数を使用) をサポートするかどうかを指定する UINT 値。 Windows 8 以降でサポートされています。

CancelCommandAware が 1 (TRUE) に設定されている場合、ドライバーは、取り消された DMA パケットに関連付けられているリソースのクリーンアップをサポートします。 CancelCommandAware が 1 に設定されている場合は、MultiEngineAware メンバーも 1 に設定する必要があることに注意してください。 CancelCommandAware が 1 に設定されているのに MultiEngineAware が 0 に設定されている場合、OS はエラー コードを返します。

CancelCommandAware が 0 (FALSE) に設定されている場合、ドライバーはリソースのクリーンアップをサポートしていません。

No64BitAtomics

No64BitAtomics が 1 (TRUE) に設定されている場合、ドライバーは GPU が 32 ビット値のみをアトミックに更新できることを示します。 この場合、OS はフェンスのラップアラウンド ケースを自動的に処理しますが、未処理の待機とシグナル フェンスの値は、最後のシグナルフェンス値とは別にUINT_MAX/2 を超えることはできません。 Windows 10 以降でサポートされています。

No64BitAtomics が 0 (FALSE) に設定されている場合、ドライバーは、GPU が CPU で表示される 64 ビット値をアトミックに更新できることを示します。

LowIrqlPreemptCommand

HwQueuePacketCap

ノードにキューに登録できる DMA パケットの最大数。

NativeGpuFence

OS で DXGK_FEATURE_NATIVE_FENCE 機能が有効になっている場合、ドライバーは、 NativeGpuFence ビットを 1 に設定することで、アダプターの初期化中にネイティブ GPU フェンス機能のサポートを宣言できます。 この機能は、対応する D3DKMT_WDDM_3_1_CAPS::NativeGpuFenceSupported ビットを介してユーザー モードに公開されます。 詳細については、「 ネイティブ GPU フェンス オブジェクト」を参照してください。 Windows 11 バージョン 22H2 (WDDM 3.1) 以降で使用できます。

OptimizedNativeFenceSignaledInterrupt

ドライバーは、シグナル割り込みで、GPU が実行されていた HWQueue の KMD ハンドルのみを DXGKARGCB_NOTIFY_INTERRUPT_DATA::NativeFenceSignaled で指定できる場合、この TRUE を設定します。 詳細については、「 ネイティブ GPU フェンス オブジェクト」を参照してください。 Windows 11 バージョン 22H2 (WDDM 3.1) 以降で使用できます。

Reserved

このメンバーは予約されており、0 に設定する必要があります。

Value

共用体のビット フィールド フラグにアクセスする別の方法。

要件

要件
サポートされている最小のクライアント Windows Vista
Header d3dkmddi.h (D3dkmddi.h を含む)

こちらもご覧ください

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender