Windows 10 顯示和圖形驅動程式的新功能
此頁面說明適用於 Windows 10 版本 2004 (WDDM 2.7) 的顯示和圖形驅動程式新功能。 若要查看舊版 WDDM 2.X 中新增的功能,請參閱 舊版 WDDM 2.X 的新功能。
網格著色器
網格著色器是使用點陣化時,增加 Direct3D 12 圖形管線的彈性和效能的方法。 它們會作為輸入組合器的新取代,特別是頂點和幾何著色器階段,以彈性函式行為取代部分輸入組合器的固定函式行為。 透過網格著色器,應用程式可以比輸入組合器更有效率地套用擷取。 基本類型可以進行擷取,而不需要 GPU 處理其索引數據,這十分有幫助,因為我們看到隨著時間而增加和更高 3D 應用程式的基本計數。
在附加圖元著色器的情況下,網格著色器的基本類型輸出會直接饋送至圖元著色器階段。
網格著色器功能引進網格著色器階段以及新的階段:放大著色器。 放大著色器會取代 GPU 鑲嵌階段。 應用程式會設定其放大著色器,視需要叫用網格著色器一些次數。 放大著色器是選擇性步驟,可讓應用程式動態控制幾何詳細數據的層級。
網格著色器功能牽涉到新的底紋語言建構,以及UMD變更。 針對網格著色器的報告裝置功能,有一個名為 MeshShaderTier 的欄位透過 D3D12DDI_D3D12_OPTIONS_DATA_0073回報。 此外,由於這引進了兩個新的著色器階段, 所以D3D12DDIARG_CREATE_PIPELINE_STATE_0075、 hMeshShader 和 hAmplificationShader 中有兩個新的字段。 若要開始進行作業,有命令清單 DDI PFND3D12DDI_DISPATCH_MESH_0074 ,也會 D3D12DDI_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH 進行間接分派。
DirectX Raytracing (DXR) 1.1
WDDM 2.7 提供一些新功能和改進功能,以 Direct3D 12 中的 DXR 初始版本為基礎。
內嵌光線追蹤是一種替代形式的光線追蹤,不會使用任何個別的動態著色器或著色器數據表。 在使用 DXR 1.0 樣式的著色器進行著色器時,它會提供開發人員彈性和一些便利性,將它們稱為「動態著色器型」光線追蹤,並不適用。 內嵌光線追蹤可在任何著色器階段使用,包括計算著色器、圖元著色器等等。 這裡提及的是 WDDM 2.7 可用的項目,雖然它未對應至 DDI 變更。
應用程式可以透過 ExecuteIndirect 呼叫 DispatchRays,允許在 GPU 上設定光線追蹤工作。 這適用於搜尋 cull、排序或調整光線追蹤工作的應用程式,並使用著色器來執行此動作。 接下來,現在有一個D3D12DDI_INDIRECT_ARGUMENT_TYPE列舉值。 使用間接光線追蹤分派時,執行間接緩衝區的每個元素都是類型 D3D12DDIARG_DISPATCH_RAYS_0054。
建立管線狀態以考慮不同著色器組合的額外負荷,是 3D 計算機圖形中的其中一個困難問題。 DXR 1.1 包含可協助的內容:add-to-state-object。 AddToStateObject () 在 API 中公開時,可讓應用程式將著色器新增至現有的狀態物件,且 CPU 額外負荷隻與新增專案成正比。 接下來,有兩個裝置 DDI 函式: PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 和 PFND3D12DDI_CALC_PRIVATE_ADD_TO_STATE_OBJECT_SIZE_0072。
針對一般功能報告,新的列舉值 D3D12DDI_RAYTRACING_TIER_1_1 用於報告層 1.1。
取樣器意見反應
取樣器意見反應是 Direct3D 12 功能,可用來擷取和錄製紋理取樣資訊和位置。 若沒有取樣器意見反應,這些詳細數據會不透明給開發人員。 這項功能可讓應用程式不只知道取樣的 mip,還能夠知道這些 Mip 的位置。 應用程式可能有興趣取樣資訊,例如:
- 精確地知道紋理串流系統中下一個要載入的內容,或
- 精確地知道紋理空間底紋轉譯系統中需要著色的內容。
範例作業的意見反應會寫入「意見反應對應」,做為一種不透明資源,必須轉碼才能取得應用程式可檢查的資訊。就撰寫意見反應本身而言,著色器模型 6_5 中有 HLSL 建構。 語意與 Texture2D 的 Sample 及其變體的語意非常類似。
雖然取樣器意見反應會善用新的底紋語言建構,但它也牽涉到 UMD 變更。 針對裝置功能檢查,有一個名為 SamplerFeedbackTier 的上限會透過 D3D12DDI_D3D12_OPTIONS_DATA_0073 回報。 已修改資源建立,以採用類型 為D3D12DDI_MIP_REGION_0075的新字段取樣器意見反應 mip 區域。 接下來,還有新的描述元建立方法 ,PFND3D12DDI_CREATE_SAMPLER_FEEDBACK_UNORDERED_ACCESS_VIEW_0075。
內容保護
WDDM 2.7 中的 Direct3D 12 視訊作業已新增選擇性受保護的資源支援。 針對背景,受保護的資源存在於WDDM 2.7之前,但僅適用於跨 API 共用和圖形或計算,而非視訊。
驅動程式不會將受保護資源的支援回報為全域專案;它是以每個作業為基礎。 如果驅動程式報告支援特定作業的受保護資源,這表示作業可以讀取和寫入受保護的資源,並在資源類型允許時支援跨 API 共用。 另一件事值得一提的是,如果驅動程式宣告特定格式的受保護資源支援,它也必須支援該格式做為非受保護的資源。
使用 WDDM 2.7 時,系統會修改資源建立方法,以採用選擇性D3D12DDI_HPROTECTEDRESOURCESESSION實例。 驅動程式會在物件建立時提供此參數,以通知設定和配置。 此外,會修訂記憶體預算檢查,以指出作業是否會使用受保護的資源。 當 protected-resource-session 參數為非 NULL 時,這表示作業會寫入受保護的資源。 若要寫入未受保護的資源,必須重新建立作業物件。
當輸出是受保護的資源時,譯碼器和動作估計參考必須受到保護的資源。 當寫入受保護的資源時,視訊處理可能會從受保護和未受保護的資源的組合讀取。
錄製寫入受保護資源的一或多個作業之前,必須先使用非 NULL 保護的資源會話呼叫 PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 。 在錄製寫入到非受保護資源的一或多個作業之前,必須先呼叫具有NULL 的PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 。
若要深入瞭解上述引導式導覽,瞭解 WDDM 2.7 中內容保護的 DDI 變更,請參閱 D3D12DDI_VIDEO_DECODE_PROTECTED_RESOURCES_DATA_0072 作為起點。
改善工具的歷程記錄緩衝區報告
WDDM 2.7 引進 DDI 變更,可讓 GPU 偵錯工具使用歷程記錄緩衝區。 透過這項變更,單一命令緩衝區提交可以包含對應至多個命令清單的工作,而不是一次只包含單一命令清單。 這項變更可讓 GPU 偵錯工具更精確地報告應用程式的效能特性。
這項功能會透過D3D12DDICAPS_TYPE_0073_SUPPORT_BATCHED_MARKERS回報。 列舉值D3DDDIMLT_BATCHED有新的 D3DDDI_MARKERLOGTYPE ,對應至 D3DDDI_BATCHEDMARKERDATA。 ETW 事件數據結構已撤銷,使其在類型為 D3DDDIMLT_BATCHED 時包含一些 D3DDDI_BATCHEDMARKERDATA 元素。
DisplayPort (DP) AUX/I2C
DP 輔助 (AUX) 通道可讓您存取 DP 組態數據 (DPCD) ,這是用於讀取 DP 裝置功能、鏈接訓練、拓撲探索、I2C 總線存取等的個別裝置快存器檔案。 請參閱 DXGK_DP_INTERFACE 作為起點。