列舉 Cofunctional VidPN 來源和目標模式
本主題描述影片呈現網路 (VidPN) 管理員和顯示迷你埠驅動程式如何共同作業,以列舉影片簡報來源和目標上可用的模式。 閱讀此資料之前,您應該先熟悉下列主題中的內容:
VidPN 管理員會隨時要求顯示迷你埠驅動程式列舉顯示介面卡的視訊顯示來源和目標上可用的模式。 一般而言,要求具有下列模式:
VidPN 管理員會建立或取得 VidPN,其模式已釘選到其來源和目標,但並非全部。
VidPN 管理員會呼叫 DxgkDdiIsSupportedVidPn 來判斷 VidPN 是否可以擴充,以形成顯示配接器上支援的功能性 VidPN。 也就是說,它會詢問是否可以將模式釘選在剩餘的來源和目標上,而不需要變更現有的固定模式。
VidPN 管理員會呼叫 DxgkDdiEnumVidPnCofuncModality ,以取得尚未釘選模式的來源和目標上可用的模式。
傳遞至 DxgkDdiEnumVidPnCofuncModality 的其中一個引數是稱為限制 VidPN 之 VidPN 物件的控制碼。
DxgkDdiEnumVidPnCofuncModality 必須執行下列動作:
檢查限制 VidPN。
對於沒有釘選模式的每個來源和目標,請調整模式集,使其是與條件約束共同運作的最大可能模式集。
對於沒有固定縮放轉換的每個路徑,請調整縮放支援旗標,使其與條件約束共同運作。
對於沒有固定旋轉轉換的每個路徑,請調整旋轉支援旗標,使其與條件約束共同運作。
針對具有釘選模式的每個來源,報告該來源可用的多重取樣方法。
下列段落提供有關如何執行上一個項目符號清單中每個工作的詳細資料。
檢查限制 VidPN
限制 VidPN 的下列屬性是 DxgkDdiEnumVidPnCofuncModality必須接受的條件約束。
拓撲 (來源與目標之間的關聯集)
釘選模式
每個路徑的縮放、縮放支援、旋轉和旋轉支援
每個路徑的目標色彩基礎
每個路徑的目標色彩係數動態範圍
每個路徑的內容類型 (圖形或視訊)
每個路徑的 Gamma 坡形
若要從限制 VidPN 擷取條件約束,請執行下列步驟:
首先呼叫 pfnGetTopology 函式,以取得 代表限制 VidPN 拓撲拓撲的 VidPN 拓撲介面 指標。
呼叫 pfnAcquireFirstPathInfo 和 pfnAcquireNextPathInfo 函式,以取得限制 VidPN 拓撲中每個路徑的相關資訊。 來源識別碼、目標識別碼、縮放轉換、旋轉轉換、目標色彩基礎 ) 等特定 (路徑的相關資訊會包含在 D3DKMDT_VIDPN_PRESENT_PATH 結構中。
針對每個路徑,將路徑的來源識別碼傳遞至 pfnAcquireSourceModeSet 函式,以取得路徑的來源。
呼叫 pfnAcquirePinnedModeInfo 函式,以判斷來源模式集中是否有任何) 釘選 (模式。 如果來源的模式集有固定模式,可能就不需要檢查集合中的其餘模式。 如果模式集沒有固定模式,請呼叫 pfnAcquireFirstModeInfo 和 pfnAcquireNextModeInfo檢查集合中的其餘模式。
使用類似的程式來檢查目標模式集,並判斷哪些目標模式集合具有固定模式。
調整模式集
當您檢查與限制 VidPN 拓撲中的來源和目標相關聯的模式集時,請記下哪些模式集合已釘選模式。 如果模式集沒有固定模式,請判斷是否需要調整。 如果模式集包含未與條件約束共同運作的模式,或缺少與條件約束共同運作的可用模式,則必須調整模式集。
對於具有已連線監視器的視訊簡報目標,您也必須考慮監視所支援的模式集。 即使顯示器介面卡上的視訊存在目標支援特定模式, (指定條件約束) ,您也應該在連線的監視器也支援模式時,在目標模式中列出該模式。 若要判斷連線監視器支援的模式,請執行下列步驟:
-
呼叫 pfnAcquireMonitorSourceModeSet。 如果模式集不需要調整,您可以將它單獨保留。 如果需要調整模式集,您必須建立新的模式集,並將現有的模式集取代為新的模式集。
-
若要建立並填入新的來源模式集,請呼叫 pfnCreateNewSourceModeSet。
_DXGK_VIDPNSOURCEMODESET_INTERFACE
然後呼叫 pfnCreateNewModeInfo 和 pfnAddMode。
-
最後呼叫 pfnAssignSourceModeSet ,以新的來源模式來取代現有的來源模式集。
調整縮放支援旗標
針對限制 VidPN 拓撲中的每個路徑,判斷路徑是否有釘選的縮放轉換。 若要進行該判斷,請檢查 vpnPath。ContentTransformation.Scaling,其中 vpnPath 是代表路徑 D3DKMDT_VIDPN_PRESENT_PATH 結構。 如果 為 vpnPath。ContentTransformation.Scaling 會設定為 D3DKMDT_VPPS_IDENTITY、 D3DKMDT_VPPS_CENTERED或 D3DKMDT_VPPS_STRETCHED,然後釘選路徑的縮放轉換。 否則,不會釘選縮放轉換。
如果路徑沒有固定縮放轉換,請判斷路徑的縮放支援旗標是否需要調整。 如果支援旗標顯示對非條件約束共同運作的縮放類型支援,或無法顯示與條件約束共同運作的縮放類型支援,則必須調整支援旗標。 若要改變縮放支援旗標,請設定保存旗標 之D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT 結構的成員。
調整旋轉支援旗標
調整路徑的旋轉支援旗標類似于調整路徑的縮放支援旗標。 假設 vpnPath 是D3DKMDT_VIDPN_PRESENT_PATH結構。 如果 為 vpnPath。ContentTransformation.Rotation 設定為 D3DKMDT_VPPR_IDENTITY、 D3DKMDT_VPPR_ROTATE90、 D3DKMDT_VPPR_ROTATE180或 D3DKMDT_VPPR_ROTATE270,然後釘選路徑的旋轉轉換。 否則,不會釘選旋轉轉換。 旋轉支援旗標位於 vpnPath中。ContentTransformation.RotationSupport。
報告多重取樣方法
如果顯示器介面卡有一或多個可透過多重取樣進行反鋸齒的視訊輸出編解碼器,則您必須針對具有釘選模式的每個來源報告可用的多重取樣方法, (提供條件約束) 。 若要報告可用的多重取樣方法,請執行下列步驟:
- 建立 D3DDDI_MULTISAMPLINGMETHOD 結構的陣列
- 將陣列傳遞至VidPN 介面的pfnAssignMultisamplingMethodSet函式。
D3DDDI_MULTISAMPLINGMETHOD結構有兩個成員,您必須設定此成員,以描述多重取樣方法的特性。 NumSamples成員會指出取樣的子圖元數目。 NumQualityLevels成員指出方法可以運作的品質等級數目。 您可以指定任意數目的品質等級,只要每個增加層級都會明顯改善所呈現影像的品質。
列舉樞紐
如先前所述, DxgkDdiEnumVidPnCofuncModality 必須建立與 在其 hConstrainingVidPn 參數中傳遞之 VidPN 共通的模式集。 在某些情況下,DxgkDdiEnumVidPnCofuncModality必須根據其他資訊來擴增其行為 (列舉樞紐) 傳入EnumPivotType 和 EnumPivot參數。
列舉樞紐可以是下列其中一項:
特定視訊簡報來源的模式集
特定影片簡報目標的模式集
特定 VidPN 存在路徑的縮放轉換
特定 VidPN 存在路徑的旋轉轉換
如果列舉樞紐是模式集, 則 DxgkDdkEnumVidPnCofuncModality 必須讓該模式保持不變。 如果列舉樞紐是路徑的縮放 (旋轉) 轉換, 則 DxgkDdiEnumVidPnCofuncModality 不得變更該路徑的縮放 (旋轉) 支援旗標。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應