dotnet 8 WPF 支持在 RDP 遠程桌面狀態下啓用渲染硬件加速

本文將和大家介紹在 dotnet 8 裏 WPF 引入的新功能之一,在 RDP 遠程桌面狀態下啓用渲染硬件加速

在 dotnet 8 之前,在用戶進行 RDP 遠程桌面時 WPF 應用將默認關閉硬件渲染加速以獲得更好的兼容性。隨着系統層的渲染架構的優化,比如在 WDDM 驅動模型裏面,進行遠程桌面的硬件加速已經是非常簡單且穩定的事情,這就意味着 WPF 框架底層可以不再判斷當前是遠程桌面模式時切換到軟渲染模式,可以依舊使用硬件渲染加速。只有在 XP 系統上的 XDDM/XPDM 時,才需要在 RDP 遠程桌面開啓 WPF 應用軟渲染

這個優化點在 2020 時就被 Vatsan Madhavan 大佬提出,詳細請看 https://github.com/dotnet/wpf/issues/3215

由於 XP 已經過於考古且 dotnet 8 接近完全無法在 XP 系統上運行,於是我就對此進行優化,請看 https://github.com/dotnet/wpf/pull/7015

然而大佬們經過測試發現了一些額外的問題,且擔心這個改動過於底層加上沒有充分的測試,怕在一些奇怪的設備上運行錯誤。於是大佬重新提了 https://github.com/dotnet/wpf/pull/7684 用來提供配置的方式控制此功能,默認行爲依然保持在 RDP 遠程桌面時 WPF 應用將關閉硬件渲染加速,依然使用軟渲染方式,保持和舊版本行爲相同

只有在進行 Switch.System.Windows.Media.EnableHardwareAccelerationInRdp 配置之後,纔會讓 WPF 應用在遠程桌面時開啓硬件渲染

簡單來說就是在 dotnet 8 下,默認情況這個新功能對任何開發者或用戶是沒有影響的,只有在開發者通過 Switch.System.Windows.Media.EnableHardwareAccelerationInRdp 配置啓用 RDP 遠程桌面時使用硬件渲染加速功能纔會生效

以下是配置啓用 RDP 遠程桌面時使用硬件渲染加速功能的方法,以下代碼推薦放在 App 構造函數,否則將可能渲染線程已經跑起來導致配置無效

        public App()
        {
            AppContext.SetSwitch("Switch.System.Windows.Media.EnableHardwareAccelerationInRdp", true);
        }

此功能在 dotnet 8 的行爲是默認不開啓的,這是因爲缺乏足夠的設備進行測試。計劃在 dotnet 9 裏面作爲正式的功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章