共用方式為


D3DKMTCreateNativeFence 函式 (d3dkmthk.h)

D3D 運行時間會呼叫 D3DKMTCreateNativeFence,以在特定裝置上建立原生 GPU 柵欄物件。

語法

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

參數

unnamedParam1

[in/out]描述要建立之柵欄物件的 D3DKMT_CREATENATIVEFENCE 結構的指標。

傳回值

D3DKMTCreateNativeFence 會在成功建立時傳回STATUS_SUCCESS。 否則會傳回 NTSTATUS 錯誤碼,例如STATUS_INVALID_PARAMETER。

言論

指定的 D3DDDI_NATIVEFENCE_TYPE 會指定 OS 所建立的原生柵欄類型。 這些柵欄的功能、效能特性和記憶體需求 CurrentValueMonitoredValue不同。 下表顯示這些差異,其中 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 是的 是的 ReadOnly 讀取/寫入 讀取/寫入 讀取/寫入 N/A ReadOnly (或讀取/寫入) 讀取/寫入 減少 CPU 中斷的應用程式柵欄。 GPU 等候程式已解除封鎖,而不會喚醒 CPU
D3DDDI_NATIVEFENCE_TYPE_DEFAULTOPTIMIZED Sysmem VRAM 是的 是的 ReadOnly 讀取/寫入 讀取/寫入 讀取/寫入 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 支援。
    • 此柵欄類型支援所有現有的 D3DKMT 同步物件 Wait/Signal from CPU/GPU 作業。
    • CurrentValueMonitoredValue 記憶體都會配置在系統記憶體區段中。
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT優化

    • 操作系統目前不支援此功能。
    • D3DDDI_NATIVEFENCE_TYPE_DEFAULT的優化版本,您可以在 VRAM 中配置 MonitoredValue 記憶體,以加速從 GPU 引擎讀取 MonitoredValue
    • 此優化不會公開給UMD。 相反地,Dxgkrnl 和 KMD 將決定是否可以在 VRAM 中配置 MonitoredValue 記憶體來優化預設柵欄類型。
    • MonitoredValue VRAM 中配置的記憶體,如果系統處於本機記憶體壓力下,仍可能會降級為系統記憶體。
    • 如果 OS 支援此柵欄類型,則會在 DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 功能介面數據表中,將 SupportOptimizedDefaultFenceType 設為 TRUE。 KMD 預期會在驅動程式初始化期間查詢功能介面數據表,以判斷此 OS 功能。
  • D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU

    • 操作系統目前不支援此功能。
    • D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU 柵欄不支援任何 CPU 作業;也就是說,OS 不允許使用者模式將等候佇列,併發出訊號給這個柵欄物件。
    • 因此,此類型不能用於必須支援CPU等候和訊號語意的 DX 應用程式柵欄。 此類型主要用於內部 UMD 柵欄,以在 GPU 引擎之間進行同步處理。 將此類型建立為 D3DKMT 原生柵欄物件,可讓這類工具看見這些柵欄,例如 GpuView 和偵錯。
    • 此柵欄支援的區段必須是非 CPU 可見的本機記憶體區段。
    • 如果系統處於本機記憶體壓力之下,在本機記憶體中配置的記憶體仍可能會降級為系統記憶體。
    • 如果 OS 支援此柵欄類型,它會在 DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 功能介面數據表中將 supportIntraGpuFenceType 設定為 TRUE。 KMD 預期會在驅動程式初始化期間查詢功能介面數據表,以判斷此 OS 功能。

如需原生 GPU 柵欄的詳細資訊,請參閱 原生 GPU 柵欄物件

要求

要求 價值
最低支援的用戶端 Windows 11 版本 24H2
標頭 d3dkmthk.h

另請參閱

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence