使用外觀比例和自訂縮放模式
若要支援從 Windows 7 (開始,DXGKDDI_INTERFACE_VERSION=DXGKDDI_INTERFACE_VERSION_WIN7>) ,下列功能會新增至顯示迷你埠驅動程式所使用的 VidPN 呈現路徑資料:
D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT 結構:
AspectRatioCenteredMax 和 自訂 成員
D3DKMDT_VIDPN_PRESENT_PATH_SCALING 列舉:
D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX 和 D3DKMDT_VPPS_CUSTOM 值
指定縮放模式
使用這些縮放模式在監視器上桌面的行為和外觀,如 調整桌面映射中所述。 當顯示模式管理員 (DMM) 呼叫 DxgkDdiEnumVidPnCofuncModality 函式時,驅動程式必須根據 VidPN 目前路徑支援的縮放類型來設定 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT 成員,如下所示:
身分識別調整
如果路徑可以顯示沒有轉換的內容,請將D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT的Identity成員設定為非零值。 呼叫DxgkDdiEnumVidPnCofuncModality時,請將D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION結構的Scaling成員設定為D3DKMDT_VPPS_IDENTITY。
置中調整
如果路徑可以顯示未調整並置中目標的內容,請設定 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT。置中。 呼叫 DxgkDdiEnumVidPnCofuncModality 時,請設定 D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION。調整 為 D3DKMDT_VPPS_CENTERED。
延展縮放比例
如果路徑可以顯示調整為符合目標的內容,但不保留來源的外觀比例,請設定 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT。延展。 呼叫 DxgkDdiEnumVidPnCofuncModality 時,請設定 D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION。調整 為 D3DKMDT_VPPS_STRETCHED。
外觀比例保留延展縮放比例
如果路徑可以調整來源內容以符合目標,同時保留來源的外觀比例,請設定 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT。AspectRatioCenteredMax。 呼叫 DxgkDdiEnumVidPnCofuncModality 時,請設定 D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION。調整 為 D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX。
自訂調整
如果路徑可以顯示其他 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT 結構成員未描述的一或多個縮放模式,請設定 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT。自訂。 呼叫 DxgkDdiEnumVidPnCofuncModality 時,請設定 D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION。調整 為 D3DKMDT_VPPS_CUSTOM。 獨立硬體廠商 (IHV) 可以使用私用逸出值來通知驅動程式如何解譯指定目標上的自訂調整。
如果目前釘選的目標和來源模式具有相同的外觀比例,但大小不同,則顯示迷你埠驅動程式應該只設定 Stretched 和 Centered 成員。 在此情況下,DMM 會清除 AspectRatioCenteredMax 成員的任何非零值。
API 至 DDI 調整
下表顯示使用者模式 API 縮放值與顯示迷你埠驅動程式 DDI 縮放值的對應 D3DKMDT_VIDPN_PRESENT_PATH_SCALING 列舉。
SetDisplayConfig API 調整值 | DDI 縮放值 |
---|---|
DC_IDENTITY |
D3DKMDT_VPPS_IDENTITY |
DC_CENTERED |
D3DKMDT_VPPS_CENTERED |
DC_STRETCHED |
D3DKMDT_VPPS_STRETCHED |
DC_ASPRATIOMAX |
D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX |
DC_CUSTOM |
D3DKMDT_VPPS_CUSTOM |
DC_PREFERRED |
D3DKMDT_VPPS_PREFERRED |
此對應可與 調整桌面影像 中的資料表搭配使用,以瞭解如何將使用者模式縮放類型轉譯成傳送至顯示迷你埠驅動程式的 DDI 縮放類型。
調整和驅動程式版本
下表顯示在不同作業系統版本上執行之不同顯示迷你埠驅動程式版本的行為。
驅動程式版本作業系統版本
< DXGKDDI_INTERFACE_VERSIONDXGKDDI_INTERFACE_VERSION_WIN7
及
>= DXGKDDI_INTERFACE_VERSION_VISTA
> DXGKDDI_INTERFACE_VERSION= DXGKDDI_INTERFACE_VERSION_WIN7
Windows Vista
驅動程式具有 Windows Vista 行為。
驅動程式必須在初始化期間檢查作業系統版本,而且絕不會公開或使用 D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT的AspectRatioCenteredMax和Custom成員。 如果驅動程式違反這項需求,DMM 將會忽略 AspectRatioCenteredMax 和 Custom ,而且只會辨識 Identity、 Centered或 Stretched 成員。 如果驅動程式嘗試在任何 VidPN 路徑上釘選 D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX 縮放模式,DMM 會傳回狀態碼 STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION ,並將此縮放模式視為全螢幕延展模式。
Windows 7
作業系統會清除 AspectRatioCenteredMax 和 Custom 成員的值,並假設驅動程式不支援外觀比例保留延展縮放和自訂縮放模式。 DMM 只會設定 縮放模式D3DKMDT_VPPS_IDENTITY、 D3DKMDT_VPPS_STRETCHED或 D3DKMDT_VPPS_CENTERED。 驅動程式在 Windows Vista 上的行為就像一樣。
驅動程式應該支援AspectRatioCenteredMax成員,而且作業系統會從主控台應用程式使用它。 驅動程式可以藉由設定 Custom 成員,選擇性地實作自訂功能。
DMM 一律會在嘗試檢查並使用D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT 的 AspectRatioCenteredMax或Custom成員之前,先確認驅動程式介面 > = DXGKDDI_INTERFACE_VERSION_WIN7。
重要 支援 D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX 或 D3DKMDT_VPPS_CUSTOM 值的顯示迷你埠驅動程式不應該設定 D3DKMDT_VPPS_NOTSPECIFIED的值。
使用多個配接器進行調整
Windows 7 所導入的縮放類型 D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX 和 D3DKMDT_VPPS_CUSTOM 值會儲存在與圖形處理單位相關聯的 CCD 線上資料庫中, (GPU) 。 如果使用者使用支援這些縮放成員的驅動程式,將監視器從一個 GPU 移至另一個 GPU,則原始驅動程式可能不支援第二個 GPU。 在此情況下,作業系統會將這些縮放類型對應至系統預設調整。
如果兩個 GPU 都支援縮放類型 D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX 和 D3DKMDT_VPPS_CUSTOM,而第一個 GPU 的驅動程式會實作 D3DKMDT_VPPS_CUSTOM 自訂調整要求,則如果使用者將監視器切換至第二個 GPU,則第二個 GPU 的驅動程式可能不知道如何解譯自訂調整要求。 在此情況下,第二個驅動程式應該無法呼叫 DxgkDdiCommitVidPn 函式,而且應該傳回 STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED 狀態碼;作業系統會將此縮放類型對應至系統預設調整。