完全看懂 Windows 視窗介面演進(下)

完全看懂 Windows 視窗介面演進(下)

ADVERTISEMENT

微軟號稱,從Windows Vista開始,你再也看不到視窗切換慢動作的爛戲了。以筆者用了一兩年的經驗,的確是毫無因為桌面繪圖錯誤而當機的印象。這箇中奧妙解釋起來會有點複雜,所以我們先用簡單的話來說:Windows XP的桌面都是2D繪圖,Windows Vista開始才有3D加速桌面。

3D加速讓桌面進化

所謂2D桌面的舊架構,就是早在Windows 95時代出生的GDI(Graphics Device Interface),正因為它是在電腦處理能力很爛的年代開發出來的API,所以它沒有反鋸齒處理、透明背景等等華麗的功能。其實早期會有人為了讓2D圖像跑得更順暢,去買所謂的「2D加速卡」,當然廠商也因應GDI撰寫了有硬體加速的驅動程式。

搜括世界各國佈景主題

完全看懂 Windows 視窗介面演進(下)

▲ 這支Windows 7 ToolKit其實是個破解程式,不過它也有一些調校功能,像是按一下就可以把隱藏在C:\windows\Globalization\MCT的各國佈景安裝進來。

DirectX、GDI兩條路

在這不久之後,DirectX和3D遊戲也開始流行,更多廠商把資源投注在開發「3D加速卡」身上。而因為GDI和DirectX兩個API的誕生背景不同,後來就像在兩個平行世界發展似的,即使微軟試著互通它們的程式資源,卻幾乎沒有任何成果。

到了Windows XP,縱使GDI升級成GDI+,增加了材質、漸層、透明度、浮點座標、支援更多圖片格式等等新功能,骨子裡還是同樣的舊系統。簡單的說,DirectX遊戲可以充分運用電晶體數量比CPU還多的超暴力顯示卡,存取顯示記憶體裡的圖像合成漂亮的遊戲場景。但是以上這些資源GDI都不能用,當然也就做不出任何3D特效。

完全看懂 Windows 視窗介面演進(下)

▲ 即使Windows XP 升級了新的GDI+,還是常常會有視窗拖動「鬼影幢幢」的老症頭。

完全看懂 Windows 視窗介面演進(下)

▲ Vista之後的桌面,就像由DWM操控各種畫面合成的3D影像。

WDDM架構來幫忙

這些難解的問題,等到Vista重新打造桌面的繪圖流程才開始解決,也就是WDDM(Windows Display Driver Model)這個新的顯示驅動程式架構,在這個底層系統之上,是由WPF(Windows Presentation Foundation)負責控制Windows桌面的構圖。從此以後,桌面上的各個視窗,就變成了3D繪圖流程裡的平面(surface),透過DWM(Desktop Windows Manager)這支Direct3D應用程式,就可以合成螢幕上的畫面。

完全看懂 Windows 視窗介面演進(下)

▲ Vista的名產:Flip 3D原封不動的活下來了,在Windows 7按「Windows鍵+Tab」就會出現。

排程共享GPU資源

從原本的2D桌面進化到3D加速桌面有幾個關鍵,首先,WDDM架構可以讓不同的應用程式和系統服務分享GPU的處理能力。比方說負責合成桌面的DWM程式,除了要操控桌面上的物件,還會提供Flip 3D特效,顯示縮圖預覽等等。其他的應用程式也會渲染自己的圖片,它們和DWM自己的渲染執行緒分頭進行,最後由DWM負責組成桌面。而WDDM也會負責分配GPU的運算能力,讓3D程式在必要的時候取得最大的資源。

反過來說,在WDDM出現之前,幾乎不可能有好幾個3D應用程式同時執行,因為沒有排程的能力,跑一個DirectX遊戲就把所有資源搾乾了。而且WDDM讓顯示記憶體可以被分頁儲存到主記憶體,就算顯示記憶體容量不夠用了,也不用擔心會3D桌面當機,導致倒退回2D模式。

桌面繪圖跟得上滑鼠

現在我們回頭看看Windows XP的「白色鬼影」問題,由於它的視窗桌面被當成一張2D平面圖,當上面的視窗移來移去,底下的其他視窗和桌面必須不斷的重繪,造成畫面不連貫,或是出現白邊。

在WDDM架構下,即使某些視窗是被覆蓋的狀況,它們還是會以3D平面的形式,儲存在螢幕以外的假想區域。這麼一來使用者可以任意拖動視窗,底下的視窗也不必重畫一次。就像Aero特效啟動的時候,透明邊框移到底下有其他視窗的地方,同樣不必再重新繪圖,這些動作都只需DWM負責把半透明的圖像放到新的座標即可。

完全看懂 Windows 視窗介面演進(下)

▲ 雖然理論上視窗畫面不會消失,不過用久了還是會有縮圖預覽失效的狀況,Windows 7會用小圖示混過去。

WDDM 1.1啟用條件

到了Windows 7,不只是活用3D加速桌面做出神奇的操作介面而已,WDDM架構也從Vista的1.0版推進到了1.1。不過想啟用WDDM 1.1,就跟玩DirectX 10遊戲的條件一樣,你得升級Windows 7(廢話)、插一張支援WDDM 1.1的顯示卡、並且裝上WDDM 1.1的驅動程式。

而WDDM 1.1使用的API版本,從Vista的DirectX 9升級到了DirectX 10.1,所以必須裝一張支援DirectX 10的顯示卡,才能達成啟用條件。如果你的顯示卡大概是在兩年以內購買的G80以上等級,應該就沒問題,詳細可參考以下附表。

WDDM版本 DirectX版本 顯示晶片
WDDM 1.1 DirectX 10.x NVIDIA:G80系列以上
AMD:Radeon 2000系列以上
Intel:i4G、i45GM、
G35、i965GM以上

WDDM 1.1的改善重點

既然程式的API升級,執行效率理論上應該也會變快吧?微軟標榜的便是WDDM 1.1能夠讓DirectX 10的遊戲執行效率、以及桌面繪圖效能更好。遊戲部份我們留待適當的文章驗證,而桌面繪圖的加強重點,就在大幅改善記憶體佔用量。

運作更輕巧

在3D加速桌面的結構下,每個視窗都是未壓縮的材質,準備讓顯示卡處理。在Vista的WDDM 1.0架構當中,當有視窗繪圖元件需要處理,DWN會在顯示記憶體儲存一份材質,還有一份重覆的資料會放進主記憶體,以便讓DWM合成桌面。當桌面上開啟的元件變多,就會讓系統記憶體的消耗量激增。

到了WDDM 1.1,只要在顯示記憶體儲存一份資料就可以了。根據微軟的說法,每多開一個視窗就會佔用一塊記憶體,所以Vista在開一堆視窗之後,記憶體佔用量會呈等差級數上升。而Windows 7的使用量理論上根本不會增加。

不同系統的改善幅度

聽起來很強大,不過我們還是實際來測看看,眼見為憑。然而因為很難控制所有的環境因素不變,所以我們在同一組硬體配置上安裝了Windows Vista、Windows 7兩套作業系統,分別打開10個檔案總管、5個IE、及1個Windows Media Player視窗,從工作管理員觀察閒置到負載之後的記憶體佔用量變化。

實際上這樣的對照方法有個瑕疵,就是兩套作業系統的程式結構不同,就算打開一模一樣的視窗數量,佔用的記憶體空間本來就會不同。但是剛好Windows 7也是大幅改善了資源佔用量,方便我們觀察同樣是WDDM 1.0驅動下,Windows 7比Vista省了多少。

XPDM vs. WDDM

在前面的WDDM支援硬體列表當中,如果你的顯示卡太舊排不進去,就會退回和XP一樣的XPDM(Windows XP Display Driver Model)傳統模式,也就是透明邊框消失的「Basic」主題。所以我們不用換裝爛卡,直接用同樣的配備「自廢武功」切換到Windows 7 Basic佈景主題的話,等於就是在XPDM模式下運作。

我們加入這個另類小撇步來驗證同樣配備下,XPDM和WDDM的資源佔用狀況。讀者在家裡也可以自己玩玩看。有趣的是,實驗結果WDDM根本不會比XPDM省資源,尤其是在Vista的環境下會更嚴重,測試平台上僅有的2GB,開了一堆視窗就被耗掉將近1GB,連CPU使用率也跟著往上跳。而且操作速度已經開始有遲鈍的跡象,不過有WDDM架構的加持,的確怎麼也不會發生背景冒白邊的錯誤畫面。

CPU Intel Core 2 Duo E8500  
記憶體 Kingston HyperX DDR3 2GB  
主機板 Asus P5Q3 Deluxe  

顯示卡

技嘉 GeForce GTS 250 GeForce 6200
(WDDM 1.0 對照組)
作業系統 Windows Vista SP2  
Windows 7  

CPU佔用率變化

(單位:% ↓越小越好)

完全看懂 Windows 視窗介面演進(下)

▲ 雖然啟用WDDM理論上會減輕CPU負擔,詭異的是實測當中CPU佔用率不減反增。

DWM佔用量變化

(單位:% ↓越小越好)

完全看懂 Windows 視窗介面演進(下)

▲ 在Vista的負載測試中,DWM記憶體佔用量飆高到43MB,到了Windows 7的WDDM 1.1只用了9MB。

總記憶體佔用量變化

(單位:% ↓越小越好)

完全看懂 Windows 視窗介面演進(下)

▲ 整體來說,Windows 7各種繪圖模式都比Vista節省記憶體,WDDM1.1模式的佔用量甚至比XPDM還低。

資源佔用不飆高

除了XPDM的數據有點意外, 實測結果證明,Windows 7的桌面繪圖要比Vista省資源得多。同樣是WDDM 1.0的記憶體佔用量多過XPDM,但Windows 7的數據平均比Vista少了21%左右。啟用了WDDM 1.1之後,Windows 7幾乎降到和XPDM相同的水準,甚至閒置時的記憶體佔用量還比XPDM低11%。

單從DWM程式的佔用量觀察,差距幅度會更大。有趣的是,當WDDM關閉,DWM的佔用量也會降到谷底,因為它會變得沒有作用,就算開一堆視窗也是沒事幹。但是在Vista的WDDM模式下開啟一堆視窗後,DWM佔用量馬上劇增60%。

完全看懂 Windows 視窗介面演進(下)

▲ 雖然HP Mini 331用ION平台,不過卻只支援DirectX 9,跑Windows 7的3D加速桌面會比較吃資源。

DirectX 10的新價值

經過我們的實測發現,WDDM的確改善了XPDM會「破圖」的毛病,然而在Vista底下,它的效能並沒有達到最佳化,必須升級到Windows 7的WDDM 1.1架構,才能達成先進繪圖與資源佔用量之間的平衡。而前提是要有一張支援DirectX 10的顯示卡。

要注意的是,對於本身沒有顯示記憶體,共享系統記憶體的小筆電來說,還是可能發生資源不足的狀況。另外,如果選擇買Atom平台搭配的GMA 950顯示晶片,因為只有DirectX 9等級,享受不到新架構的優點。當然啦,如果連DirectX 9都不支援,就根本沒有3D加速桌面,直接打回2D模式。

紅綠顯卡一起來

另一個Vista改成WDDM架構後被拿掉的功能,就是多重顯示驅動程式。當你要用兩張顯示卡輸出到多重螢幕上,大家都得用同一個驅動程式才行,不然就得有其中一張失效。

這個功能到了Windows 7的WDDM 1.1又重出江湖,也就是說,只要有WDDM 1.1的驅動,你可以在系統裡面安裝兩張不同廠牌的顯示卡。對於想要推廣GPGPU的廠商來說,他們就可以把N牌顯示卡賣給已經有A牌產品的消費者,不必輸出任何畫面,只拿來當通用運算處理器。

完全看懂 Windows 視窗介面演進(下)

▲ 在Vista底下同時裝ATI和NVIDIA的顯示卡,會一直出現其中一張無法啟用的錯誤訊息。

完全看懂 Windows 視窗介面演進(下)

▲ Windows 7底下即使其中一張卡沒有WDDM 1.1驅動, 還是可以同時啟用。

黑眼bobo
作者

寫了超過十年的稿,以後還想繼續寫

使用 Facebook 留言

E927f88d791ae9f675459d95b8934c71?size=48&default=wavatar
1.  崴 (發表於 2010年10月17日 21:29)
為何我的7沒有 Flip 3D 呢?
Win 7 x32 專業版
GTX465
AMD 飛龍X4 945
5883e8474f1100ee051e03a4ea70859f?size=48&default=wavatar
2.  aka (發表於 2010年10月17日 22:47)
給樓上
你的小7會不會沒開aero
如果是windows basic的佈景是打不開Flip 3D的,一定要用Aero主題。
有時候驅動沒灌好也會打不開Aero 喔
Azurekite17
4.  Azurekite17 (發表於 2010年10月17日 23:24)
小邊說道:"有趣的是,實驗結果WDDM根本不會比XPDM省資源"

意思相反了吧??

另外樓上的該不會按錯吧..win+tab鍵喔?主題也是問題之一喔...如果驅動沒灌,那...
LIS
5.  LIS (發表於 2010年10月17日 23:29)
用 Windows 就會讓人心癢癢,要不要調校而傷腦筋。用 mac 就單純多了,反正你也動不了什麼設定。
3711850b79e49a1a319aeccb3450989d?size=48&default=wavatar
6.  PC (發表於 2010年10月18日 00:28)
用Mac
大家都拿一模一樣的硬體
用一模一樣的軟體
有一模一樣的規格
連外型也幾乎一樣的周邊

馬克思主義來襲!!
C6a19db376a3eb550601359607f5ef21?size=48&default=wavatar
7.  DFSH (發表於 2010年10月18日 00:34)
哈哈哈
就讓那些堅持用XP的人繼續用XP吧
別人都開發出蟲洞飛出太陽系了
堅持用XP的人還在西馬拉亞山上當山頂洞人天天畫長毛象壁畫
fauzty
8.  fauzty (發表於 2010年10月18日 02:03)
所以 Vista 真是半成品啊, Flip 3D 根本是搞笑,中看不中用;操作易用性還是到 7 才比 XP 有所改進
705966e027d0e5a71bec41df14d3e582?size=48&default=wavatar
11.  tsihonglau (發表於 2010年10月18日 13:46)
GDI不是從95(版本4.0)開始的,最早的1.0版本就有GDI了。
E927f88d791ae9f675459d95b8934c71?size=48&default=wavatar
12.  崴 (發表於 2010年10月18日 18:34)
有阿 我有開 Aero阿
Filp 3D怎麼還是沒有 當鼠標移到圖是上時就會出現預覽 的特效就有阿..
A71c0cca84e4f07e2577b8994606fc60?size=48&default=wavatar
14.  麥鼠 (發表於 2011年1月18日 18:09)
電腦>>內容>>Windows體驗指數>>側欄的"調整視覺效果",仔細看看細項有哪個沒開啟。(印象中好像是Aero Peek在影響視窗預覽吧!)
1ce5b63679239758aad4d6c13b46240a?size=48&default=wavatar
15.  paul (發表於 2011年7月15日 09:38)
※ 引述《DFSH》的留言:
> 哈哈哈
> 就讓那些堅持用XP的人繼續用XP吧
> 別人都開發出蟲洞飛出太陽系了
> 堅持用XP的人還在西馬拉亞山上當山頂洞人天天畫長毛象壁畫

有些人是不得不用╮(╯_╰)╭

發表回應

謹慎發言,尊重彼此。按此展開留言規則