D3DKMTCreateNativeFence 函式 (d3dkmthk.h)
Dxgkrnl 會呼叫 D3DKMTCreateNativeFence ,在特定裝置上建立原生 GPU 柵欄物件。
語法
NTSTATUS D3DKMTCreateNativeFence(
D3DKMT_CREATENATIVEFENCE *unnamedParam1
);
參數
unnamedParam1
[in/out]描述要建立之柵欄物件的 D3DKMT_CREATENATIVEFENCE 結構的指標。
傳回值
D3DKMTCreateNativeFence 會在成功建立時傳回STATUS_SUCCESS。 否則會傳回 NTSTATUS 錯誤碼,例如 STATUS_INVALID_PARAMETER。
備註
指定的 D3DDDI_NATIVEFENCE_TYPE 會指定作業系統所建立的原生柵欄類型。 這些柵欄在 CurrentValue 和 MonitoredValue 的功能、效能特性和記憶體需求上有所不同。 下表顯示這些差異,其中 CVal 代表 CurrentValue ,而 MVal 代表 MonitoredValue。
類型 | CurrentValue | MonitoredValue | 支援 CPU 上的跨進程共用 | 支援跨配接器共用 | UM CPUVA CVal | KM CPUVA CVal | GPU VA CVal | CMPVA CVal | UM MVal | KM MVal | GPU VA MVal | CMPVA MVal | 使用案例 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D3DDDI_NATIVEFENCE_TYPE_DEFAULT | Sysmem | Sysmem | Yes | Yes | 唯讀 | 讀取/寫入 | 讀取/寫入 | 讀取/寫入 | N/A | 寫入 | ReadOnly (或讀取/寫入) | 讀取/寫入 | 減少 CPU 中斷的應用程式柵欄。 GPU 等候程式已解除封鎖,而不會喚醒 CPU |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIZED) | Sysmem | VRAM | Yes | Yes | 唯讀 | 讀取/寫入 | 讀取/寫入 | 讀取/寫入 | N/A | 寫入 | ReadOnly (或讀取/寫入) | 讀取/寫入 | 與類型 0 相同,但已減少 PCI 總線流量,因為 MVal 讀取是 GPU 的本機。 GPU 訊號命令會更快完成,因為此延遲降低 (輸送量++) 。 |
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU | VRAM | VRAM | 是 | 否 | N/A | N/A | 讀取/寫入 | 讀取/寫入 | N/A | N/A | ReadOnly (或讀取/寫入) | 讀取/寫入 | 命令緩衝區層級 (無法在相同 GPU 內) 同步處理應用程式。 讀取/寫入至隔離值 (CVal) 為本機值,因此訊號/解除封鎖作業速度很快。 |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT
- Windows 11 24H2 版支援。
- 此柵欄類型支援來自 CPU/GPU 作業的所有現有 D3DKMT 同步處理物件 Wait/Signal。
- 此柵欄類型的 CurrentValue 和 MonitoredValue 記憶體都設定在系統記憶體區段中。
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (Optimized)
- 操作系統目前不支援此功能。
- 優化版本的 D3DDDI_NATIVEFENCE_TYPE_DEFAULT,您可以在 VRAM 中配置 MonitoredValue 記憶體,以加速從 GPU 引擎讀取 MonitoredValue 。
- 此優化不會向 UMD 公開。 相反 地,Dxgkrnl 和 KMD 會決定是否可以在 VRAM 中配置 MonitoredValue 記憶體來優化預設柵欄類型。
- 如果系統處於本機記憶體壓力,則 VRAM 中配置的 MonitoredValue 記憶體仍可能會降級為系統記憶體。
- 如果 OS 支援此柵欄類型,則會在 DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1功能介面數據表中將 SupportOptimizedDefaultFenceType 設定為 TRUE。 KMD 預期會在驅動程式初始化期間查詢功能介面數據表,以判斷此 OS 功能。
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- 操作系統目前不支援此功能。
- D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU柵欄不支援任何 CPU 作業;也就是說,OS 不允許使用者模式將等候佇列,併發出訊號給這個柵欄物件。
- 因此,此類型無法用於必須支援CPU等候和訊號語意的 DX 應用程式柵欄。 此類型主要用於 GPU 引擎之間同步處理的內部 UMD 柵欄。 將此類型建立為 D3DKMT 原生柵欄物件,可為 GpuView 和偵錯等工具提供這些柵欄的可見度。
- 此柵欄的支援區段必須是非 CPU 可見的本機記憶體區段。
- 如果系統處於本機記憶體壓力,則配置在本機記憶體中的記憶體中的記憶體仍可能會降級為系統記憶體。
- 如果 OS 支援此柵欄類型,則會在 DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1功能介面數據表中將 SupportIntraGpuFenceType 設定為 TRUE。 KMD 預期會在驅動程式初始化期間查詢功能介面數據表,以判斷此 OS 功能。
如需原生 GPU 柵欄的詳細資訊,請參閱 原生 GPU 柵欄物件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 11 版本 24H2 |
標頭 | d3dkmthk.h |
另請參閱
D3DKMTOpenNativeFenceFromNTHandle