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

UINT 值,指定驅動程式是否支援透過 DxgkDdiCreateContextDxgkDdiDestroyContext) 函式 (建立和解構裝置 (內容,以及透過 DxgkDdiPresentDxgkDdiRender 函式) 使用裝置內容。 如果驅動程式不支持內容建立,對於將句柄傳遞至內容的每個驅動程式呼叫,Microsoft DirectX 圖形核心子系統會將內容的句柄取代為裝置的句柄。

VSyncPowerSaveAware

UINT 值,指定驅動程式是否支援垂直同步電源節省功能。

如果 VSyncPowerSaveAware 設定為 1 (TRUE) ,OS 可以藉由停用和啟用從某些應用程式使用而發生的垂直同步中斷來節省電源。 如果 VSyncPowerSaveAware 設定為零 (FALSE) ,則 OS 永遠不會停用可能導致垂直同步中斷發生之應用程式的垂直同步中斷。 從 Windows Server 2008 和 Windows Vista SP1 開始支援。

PreemptionAware

UINT 值,指定驅動程式是否支援 Windows 8 和更新版本的 Windows GPU 先佔原則。 使用此原則時,OS 一律會在起始 **逾時偵測和復原 (TDR) 程式之前,先對 GPU 發出先佔要求。 從 Windows 8 開始支援。

如果 PreemptionAware 設定為 1 (TRUE) ,驅動程式支援 Windows 8 和更新版本的 Windows 的先佔原則。 請注意,如果 PreemptionAware 設定為 1,MultiEngineAware 成員也必須設定為 1 的值。 如果 PreemptionAware 設定為 1,但 MultiEngineAware 設定為零,OS 將會停止驅動程式初始化程式並傳回失敗碼。

如果 PreemptionAware 設定為零 (FALSE) ,驅動程式支援 Windows 7 的先佔原則。 使用此原則時,OS 可能不會發出先佔要求,而可能在 GPU 上執行長時間執行的作業。 因此,在起始 TDR 程式之前,不會先佔這些 GPU 要求。 這可能會導致 TDR 程式重複重設 GPU,這可能會導致系統停止錯誤。

NoDmaPatching

UINT 值,指定驅動程式是否停用分割成多個元件的 DMA 緩衝區洩漏偵測。 在呼叫驅動程式的 DxgkDdiPatch 函式,將實體位址指派或 修補給 DMA 緩衝區的每個部分之後,就會執行此偵測。 從 Windows 8 開始支援。

顯示支援虛擬位址的裝置可以將虛擬位址重新編譯至新的視訊記憶體位置,而不需要修補 DMA 緩衝區位址的值。 針對這些類型的顯示裝置,驅動程式應該將 NoDmaPatching 設定為 1。

如果 NoDmaPatching 設定為 1 (TRUE) ,驅動程式會停用洩漏偵測,而 DMA 緩衝區分割的行為與 Windows 7 的行為相同。 請注意,當 NoDmaPatching 設定為 1 時, PreemptionAwareMultiEngineAware 成員也必須設定為 1。 如果 NoDmaPatching 設定為 1,但 PreemptionAwareMultiEngineAware 設定為零,OS 將會停止驅動程式初始化程式並傳回失敗碼。

如果 NoDmaPatching 設定為 0 (FALSE) ,驅動程式會啟用修補 DMA 緩衝區位址的流失偵測。 OS 會在呼叫驅動程式的 DxgkDdiPatch 函式之前執行洩漏偵測。

CancelCommandAware

UINT 值,指定驅動程式是否支援在從硬體佇列中移除命令之後,透過 DxgkDdiCancelCommand) 函式 (清除內部資源。 從 Windows 8 開始支援。

如果 CancelCommandAware 設定為 1 (TRUE) ,驅動程式支援清除與取消的 DMA 封包相關聯的資源。 請注意,當 CancelCommandAware 設定為 1 時, MultiEngineAware 成員也必須設定為 1。 如果 CancelCommandAware 設定為 1,但 MultiEngineAware 設定為零,OS 會傳回失敗碼。

如果 CancelCommandAware 設定為零 (FALSE) ,則驅動程式不支援清除資源。

No64BitAtomics

如果 No64BitAtomics 設定為 1 (TRUE) ,驅動程式表示 GPU 只能以不可部分完成方式更新 32 位值。 在此情況下,OS 會自動處理柵欄換行案例,不過它會限制未處理的等候和訊號柵欄值不能超過最後一個訊號柵欄值以外的UINT_MAX/2。 從Windows 10 開始支援。

如果 No64BitAtomics 設定為零 (FALSE) ,驅動程式會指出 GPU 能夠以不可部分完成的方式更新 64 位值,如 CPU 所見。

LowIrqlPreemptCommand

HwQueuePacketCap

允許佇列至節點的 DMA 封包數目上限。

NativeGpuFence

如果操作系統已啟用 DXGK_FEATURE_NATIVE_FENCE 功能,驅動程式可以在適配卡初始化期間宣告原生 GPU 柵欄功能的支援,方法是將 NativeGpuFence 位設定為 1。 這項功能會透過對應的 D3DKMT_WDDM_3_1_CAPS::NativeGpuFenceSupported 位向使用者模式公開。 如需詳細資訊,請參閱 原生 GPU 柵欄物件。 從 Windows 11 版本 22H2 (WDDM 3.1) 開始提供。

OptimizedNativeFenceSignaledInterrupt

如果 GPU 可以在發出訊號的中斷時,在 DXGKARGCB_NOTIFY_INTERRUPT_DATA::NativeFenceSignaled 中指定此 TRUE,則只能指定執行中 HWQueue 的 KMD 句柄。 如需詳細資訊,請參閱 原生 GPU 柵欄物件。 從 Windows 11 版本 22H2 (WDDM 3.1) 開始提供。

Reserved

這個成員是保留的,而且應該設定為零。

Value

存取等位欄位旗標的替代方式。

規格需求

需求
最低支援的用戶端 Windows Vista
標頭 d3dkmddi.h (包含 D3dkmddi.h)

另請參閱

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender