共用方式為


IddCx 1.5、1.6 和更新版本的更新

IddCx 1.5 和 1.6 版中的下列更新同時適用於控制台和遠端間接顯示驅動程式(IDD)。

已更新IddCxGetVersion版本

IddCxGetVersion回的 IddCx 版本已更新為 1.5 版的0x1500,1.6 版的0x1600。 如需IddCx相關版本資訊的完整清單,請參閱 IddCx 版本。

公用IddCx符號中的WPP資訊

從IddCx 1.5版開始,公用IddCx符號檔包含所有Windows軟體追蹤處理器 (WPP) 資訊。 這項變更表示 !wmitrace.logdump 調試程式命令會譯碼,並在核心調試程式中顯示 WPP 訊息。

能夠存取系統記憶體中配置的緩衝區

在某些情況下,交換鏈緩衝區會常駐於系統記憶體中;例如,當WARP (Windows 進階點陣化平臺,系統提供的軟體轉譯器)是所使用的轉譯配接器。 IddCx 1.5 新增下列 OS 回呼,讓驅動程式存取系統記憶體中的緩衝區,以避免子資源複製:

  • IddCxSwapChainInSystemMemory 允許IDD檢查交換鏈的緩衝區是否位於系統記憶體中。 此回呼的結果在交換鏈的存留期內維持不變。 驅動程式應該在其 EvtIddCxMonitorAssignSwapChain 回呼中檢查此回呼的值,並設定狀態以釋放和取得緩衝區。

  • IddCxSwapChainReleaseAndAcquireSystemBuffer 可讓 IDD 釋放和取得緩衝區,以及取得存取緩衝區的資訊(例如系統記憶體指標、緩衝區的間距/步距,以及表面格式和維度)。 傳回的緩衝區有效,直到下一次成功呼叫此函式為止。

    在指派新的交換鏈時,驅動程式必須決定IddCxSwapChainReleaseAndAcquireBuffer /IddCxSwapChainReleaseAndAcquireSystemBuffer 即將呼叫特定交換鏈結,而且必須在該交換鏈的剩餘存留期內繼續使用該變體。 若要決定,驅動程式應考慮其特定需求,以及呼叫 IddCxSwapChainInSystemMemory的結果。 驅動程式會導致作業系統在下列情況中檢查 UMDF 進程:

    • 呼叫 IddCxSwapChainReleaseAndAcquireSystemBuffer IddCxSwapChainReleaseAndAcquireBuffer 的其他變體/
    • 當 IddCxSwapChainInSystemMemory 傳回 false 時,呼叫 IddCxSwapChainReleaseAndAcquireSystemBuffer

建議使用驅動程式,但不需要使用這些回呼函式。 IddCx 1.5 之前的行為仍受支援。

能夠存取實體連續記憶體中的緩衝區

注意

任何 Windows 10 系統上都不支援 IddCxSwapChainGetPhysicallyContiguousAddress ,而且未來可能已被取代。

從IddCx 1.6開始,已新增 IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS 旗標和IddCxSwapChainGetPhysicallyContiguousAddress OS 回呼函式,以便可在實體連續記憶體中存取緩衝區。

顯示驅動程式可以藉由在 IDDCX_ADAPTER_CAPS 中設定IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS旗標,要求在實體連續系統記憶體中配置主要介面。 這項功能可讓驅動程式直接掃描表面,而不需要中繼複本。

驅動程式在初始化期間的要求不保證會成功。 如果要求失敗,對IddCxAdapterInitAsync的呼叫將不會失敗。 相反地,一旦驅動程序執行IddCxSwapChainReleaseAndAcquireBuffer(或IddCxSwapChainReleaseAndAcquireSystemBuffer),它應該呼叫IddCxSwapChainGetPhysicallyContiguousAddress 來擷取表面的實體位址。 IddCxSwapChainGetPhysicallyContiguousAddress 會先等候任何暫止的轉譯命令,然後排清並使與儲存介面所在位址範圍相關聯的 CPU 快取失效。 不過,如果實際連續記憶體中配置介面的初始要求失敗 ,IddCxSwapChainGetPhysicallyContiguousAddress 會傳回E_NOINTERFACE。