共用方式為


IddCx 1.10 版和更新版本的更新

本文說明IddCx 1.10版中所做的更新。 針對IddCx 1.10所建置的單一間接顯示驅動程式 (IDD) 二進位檔可以在Windows 10 1803版和更新版本上使用運行時間檢查來執行,以確認該系統上是否有IddCx 1.10中的 DDI 變更。 如需詳細資訊,請參閱 建置適用於多個 Windows 版本的 WDF 驅動程式。

IddCx 1.10 變更分為下列類別:

  • 更新IddCxGetVersion版本(主控台和遠端)。 如需IddCx相關版本資訊的完整清單,請參閱 IddCx版本
  • 將 HDR10 (高動態範圍) 和 SDR (標準動態範圍) 寬色 Gamut (WCG) 支援新增至間接顯示器。

已更新IddCxGetVersion版本

IddCxGetVersion回的值已更新,但視 OS 而有所不同:

  • Windows 11 版本 24H2 平臺版本會傳回 0x1A80 (IDDCX_VERSION_GERMANIUM)。
  • Windows 11 版本 22H2 9 月更新會傳回 0x1A00 (IDDCX_VERSION_SV3)。

對於 OS 的行為稍有差異的遠端驅動程式而言,此版本控制相當重要。

HDR 和 SDR 寬色域支援

如需 Windows 上色彩的一些簡介資訊,包括 SDR WCG,請參閱 HDR 和 SDR 顯示器上具有進階色彩的 DirectX。

驅動程式 DDI 和 OS 支援

可能的話,會擴充現有的 DIS,以允許驅動程式回報下列專案的支援:

  • HDR10
  • SDR WCG
  • 接收數據,描述傳送至IDD的任何 HDR 畫面

當無法擴充現有的 DIS 時,會新增現有 DIS 的較新變體。 在大部分情況下,這些變更同時適用於控制台和遠端驅動程式,但也會定義遠端驅動程式特定的一些詳細數據。

支援 HDR 的 1.10 版和更新版本的驅動程式必須使用較新的 DDI 變體。 不支援 HDR 的較舊驅動程式或驅動程式可以繼續使用現有的函式。 本節後面的各節會提供變更的概觀。

下表列出IddCx 1.10中新增的驅動程序實作 DIS,並在有前一個對等專案時命名。 如果驅動程式回報這些函式,OS 可能會呼叫這些函式,即使是未嘗試支援 HDR 的適配卡也一樣。

OS 呼叫 HDR 適配卡的驅動程式函式 上一個對等函式
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO N/A
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* N/A
EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2** EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION
EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES
EVT_IDD_CX_ADAPTER_COMMIT_MODES2 EVT_IDD_CX_ADAPTER_COMMIT_MODES

*:遠端驅動程式不會呼叫函式。

**:根據驅動程式所設定的 適配卡旗標 ,可能無法針對遠端驅動程式呼叫函式。

下表列出IddCx 1.10中新增的OS實作函式,並命名任何先前的對等專案。 1.10 版驅動程式在判斷驅動程式執行時,可以在操作系統中取得這些函式之後呼叫較新的變體。

驅動程式必須呼叫 HDR 適配卡的較新函式 上一個對等專案
IddCxSwapChainReleaseAndAcquireBuffer2 IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer
IddCxMonitorQueryHardwareCursor3 IddCxMonitorQueryHardwareCursor2IddCxMonitorQueryHardwareCursor
IddCxAdapterDisplayConfigUpdate2* IddCxAdapterDisplayConfigUpdate*
IddCxMonitorUpdateModes2 IddCxMonitorUpdateModes

*:僅供遠端驅動程式使用。

報告配接器 HDR 支援

1.10 版和更新版本的驅動程式應該設定新增至 IDDCX_ADAPTER_FLAGS IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 旗標,以報告 FP16 表面的支援。 FP16 表面可用於 HDR10 或只用於 SDR WCG。 設定此旗標表示驅動程式會執行啟用 HDR10 或 SDR WCG 所需的所有專案,包括:

報告目標 HDR 功能

如果驅動程式想要為適配卡啟用 HDR,它必須透過其 EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 函式提供每個目標連接器的其他資訊。 需要目標連接器特定資訊,因為只有一些可用的目標可能支援 HDR 的某些層面。

HDR 元數據

當驅動程式提供包含 HDR 元數據的監視器描述項時,OS 會呼叫 EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA ,以提供驅動程式的預設 HDR 元數據。 驅動程式必須保留此預設數據,並在將 HDR10 信息畫面 (SMPTE ST.2086) 傳送至監視器時使用它。 當驅動程式呼叫 IddCxSwapChainReleaseAndAcquireBuffer2 時,OS 也會提供 HDR 元數據資訊。 如果此元數據指出應該使用預設值,則會參考預存的預設數據。

設定 HDR 模式時,OS 會傳送具有每個畫面的 HDR 元數據狀態。 此元數據會告知驅動程式要透過引進 的 IDDCX_METADATA2 結構使用哪些 HDR 元數據。 元數據是新的元數據區塊,或表示驅動程序應該使用先前提供的OS預設元數據,或與上一個畫面格相同的元數據。

注意:遠端驅動程式無法使用 HDR 元數據,因為任何 HDR10 元數據都應該來自用戶端上的顯示子系統。

報告 HDR 模式

當顯示器連線到目標時,OS 會查詢驅動程式,以取得目前支援的監視和目標模式。 若要正確公告 HDR 功能,每個模式都需要額外的資訊,因此 HDR 驅動程式必須公開 v1.10 中引進的下列 DIS:

這些擴充模式表示可以使用的可能位深度和表面格式。 驅動程式也可以藉由呼叫 IddCxMonitorUpdateModes2來更新目標模式清單。

OS 會根據驅動程式 EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 回呼傳回的資訊,推斷 HDR 和 SDR WCG 模式的變化,再報告任何模式。

OS 會驗證模式,以嘗試偵測應結合並回報為單一模式的重複模式。 例如,在8位和每個通道10位中支援1080p的1080p的目標,應回報為單一模式。 不過,如果目標支持這些模式,但需要不同的頻寬量,則這些模式仍可以個別報告。

新增的 gamma 類型

已擴充現有的 EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP DDI,讓 OS 可以提供支援 HDR 顯示器給公告 HDR 支援的驅動程式所需的 3x4 矩陣轉換。

SDR 白色層級

滑鼠游標像素數據一律為 SDR。 在 HDR 模式中設定監視器時,SDR 白階必須套用至滑鼠游標。 IddCx v.10 會在兩個地方提供這項功能:

  • 呼叫IddCxSwapChainReleaseAndAcquireBuffer2,它已新增至驅動程式收到的每個畫面元數據。
  • 它也屬於引進 的IddCxMonitorQueryHardwareCursor3 函式的一部分,因此驅動程式可以在正確的白色層級轉譯數據指標更新,而不需要接收新的框架。 預設 SDR 白色層級為 80 nits。

表面色彩空間

即使驅動程式將色彩空間報告為模式資訊的一部分,OS 仍會報告所 引進IDDCX_METADATA2 結構中特定畫面所使用的實際色彩空間。

具有遠端驅動程式的 HDR

可能的話,遠端驅動程式的 OS 和驅動程式行為應該與控制台驅動程式相同。 例外狀況為:

  • HDR 元數據不會提供給遠端驅動程式。 用戶端系統預期會根據實際連接的顯示器提供此元數據。 使用伺服器所決定的元數據是毫無意義的。
  • 3x4 色彩矩陣轉換也不會傳送。 同樣地,遠端驅動程式應該使用來自客戶端系統的對等數據。
  • 遠端驅動程式可以提供伺服器上要使用的色度數據和SDR 白階。
  • 遠端驅動程式的監視模式也是選擇性的。 如果遠端驅動程式設定 IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE 適配卡旗標,OS 不會要求它進行監視模式,而只會使用目標模式。 這項功能可讓驅動程式指定不尋常的模式,而不需要報告對等的監視模式;例如,根據客戶端視窗大小,而不是監視器大小。

支援執行下層的 1.10 驅動程式

在舊版 Windows 上執行的 1.10 版驅動程式需要採取數個步驟,以確保相容性。 具體而言,驅動程序必須:

如何使用IDD_IS_FIELD_AVAILABLE的範例

    if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxParseMonitorDescription2))
    {
        IddCxClientConfig.EvtIddCxParseMonitorDescription2 = ParseMonitorDescription2;
    }

如需詳細資訊,請參閱 建置 IddCx 1.4 驅動程式