顯示驅動程式和硬體 (轉)
介紹
Windows CE操作的圖形顯示風格在版本2.0中有很大變化,在版本1.0中,圖形設計介面(GDI)直接與顯示硬體相接,在版本2.0中GDI與一個或更多顯示驅動程式相連,它們反過來與顯示硬體相連。這種顯示技術使得Windows CE能使用各種不同的顯示裝置而無需對每個裝置都有硬體程式碼程式,新的Windows CE GDI將小步驟與多用途結合起來。
本論文首先考慮一個好的Windows CE顯示驅動程式具有的特徵,它討論了顯示驅動程式,應該的裝置驅動程式介面功能,同樣圖形原始引擎級別,能用來簡化寫顯示驅動程式,GDI支援裝置驅動程式亦在討論之列。
本論文然後列舉了Windows CE支援的每個畫素深度的詳細、顯示緩衝格式,並討論顯示硬體,因為顯示驅動程式是GDI與顯示裝置之間通道、顯示驅動程式的硬體支援,也需支援GDI。
Windows CE顯示驅動程式
像Windows CE大多數一樣,顯示驅動程式介面(DDI)為微軟的DDI的子集合,如果你不熟悉Windows NT DDI,在寫入你的Windows CE顯示驅動程式前,應該閱讀Windows NT裝置驅動程式包的顯示驅動程式部分。
Windows CE僅使用Windows NT DDI中最基本的圖形引擎和驅動程式.Windows CE和Windows NT的差別,有下述細節:
- Windows CE顯示驅動程式總有相同功能,GDI並不查詢驅動程式能力資訊;
- Windows CE顯示驅動程式並不拒絕複雜的操作,它調其回GDI,以使操作分成簡單幾步,因為所有Windows CE顯示驅動程式支援相同功能,GD能夠在首次顯示驅動程式前分解複雜操作。
- Windows CE顯示驅動程式被編輯成動態連結庫(.DLL)而不是庫函式(.LIB檔案)。
所有Windows CE顯示驅動程式必須執行一套DDI函式,它由.GDI呼叫初始化顯示驅動程式和繪製以顯示,除了DDI函式,這有一套VC++類,它呼叫圖形初級引擎(GPE)類,顯示驅動程式用它使硬體加速更容易,標準的顯示驅動程式呼叫GPE類和加速是基於S3Trio64的顯示硬體,如果你的顯示硬體使用不同的視像,你能夠改變GPE呼叫方式以適合你的硬體能力。
注意使用GPE類是可選擇的,你能夠不需它們而寫入你的顯示驅動程式,代價是使DDI函式的執行更加複雜,注意,由微軟提供的GPE類需要你的顯示硬體有一個flat 幀(frame)緩衝區,如果你的顯示硬體沒有,例如,它使用定製可移動視窗來連線整個視訊記憶體,它可能不能使用GPE類,為獲得更詳細資訊,參與本文中Windows CE顯示硬體推薦部分,特別是Dirty Rec s子部分。
Windows CE顯示驅動程式在許多方式上與通常的裝置驅動程式不同,最主要不同是他們不暴露I/O介面。因此,他們不能被裝置管理器管理,因此暫存器從來不能被它們呼叫。結果,這沒有特別裝置檔案或其它檔案系統記錄,以與活動顯示驅動程式相協調,顯示驅動程式裝載的機制是一個使用顯示驅動程式的應用,呼叫帶有顯示驅動程式名的Create DC函式動態連結檔案。這使Windows CE能裝載顯示驅動程式,並初始化以使裝置上下文能夠返回撥用應用預設的顯示驅動程式,當然是自動載入。
DDI函式
下面表格列舉了顯示和列印驅動程式的DDI函式顯示驅動程式,應執行此處列舉的全部顯示DDI函式。列印驅動程式則應執行全部的列印DDI函式。然而,僅有Drve Enable Drive必須由顯示驅動程式的動態連結庫(DLL)輸出。所以,僅有DrvEnableDrive必須有名稱,其它函式可隨意呼叫,因為他們由Drr Enable Driver返回的,函式指標輸出到GDI,無論誰被呼叫,總是跟隨定義在Win DDI.H檔案中的原型。
使用GPE類
標準顯示驅動程式使用圖形引擎工程(GPE)類,當GPE類可選擇時,使用它們可很容易處理寫入顯示驅動程式,如果你使用GPE類,你僅需提供所需新程式碼,來使顯示硬體功能正常操作加速。
GPE類需要你的顯示硬體使用一個flat frame緩衝區,也就是視訊記憶體必須位於一個鄰近的範圍,修正GPE類來使用一個非連續frame buffer將很費力氣。
為建立一個基於GPE類顯示驅動程式,用下述步驟:
- 為專案設一子目錄;
- 由標準驅動目錄,例如S3Trio64目錄複製檔案到你的專案目錄;
- 全面更改檔案中設定裝置名,例如將“S3Trio64”改為你的裝置名;
- 更改config.cpp以使它把你的顯示裝置,放在一個線性frame-buffer模式;
- 使指定硬體加速失效;
- 建立並測試這些非加速驅動程式GPE,將用軟體產生輸出;
- 加入你的硬體加速模式。
GDI提供的支援顯示驅動程式服務
Windows CE GDI以預先定義函式結構和一些獨立C函式形式,提供服務支援顯示驅動程式,預定製結構提供毛刷、剪下區、調色盤、刪除和填充路徑、轉化的支援、獨立的C函式提供裝置點陣圖和介面支援。
顯示緩衝格式
Windows CE GDI支援廣泛的色彩深度和色彩模式,由一色到可調的真32位RGB,每個格式也支援幾個畫素序,這依靠於顯示是否是1位、2位或4位的。
所有的顯示緩衝格式,假定了顯示畫素順序從左到右、從上到下,即畫素(0,0)在左上角畫素(Wisth-1,height-1)在右下角。
1畫素位格式
它為簡單的黑白顯示,0代表黑,1代表白。畫素被以位元組形式儲存,這樣畫素(0,0)被放在顯示記憶體第一個位元組最高位。
2畫素位格式
雖然任何4-entry調色盤都可工作,但兩象素位格式是典型地用於作為4級灰度顯示,灰度級由下列表表示:
4畫素位格式
它通常是可調色格式,frame buffer可以2畫素/一位元組或1畫素/一位元組形式。
如果你選擇,一個畫素/位元組方式執行,驅動程式將以16色調色盤的8位/畫素的顯示模式,每個位元組中相關位為低位位元組,高位位元組全為0。
8畫素位格式
它是可用軟體控制調色盤的制式,它把八位值對映成24位色。
由於執行、相容性、影像質量原因,微軟推薦使用含有預設Windows CE調色盤。
15或16畫素位格式
它是遮蔽格式,不可調色。對15或16位畫素畫素以每兩位元組儲存,15畫素位,浪費了每個字最高位,微軟推薦純紅、綠、藍的匹配如下:
在15位/畫素匹配符中,每個命令的低15位包含畫素資料,不用位為0。
24位/畫素格式
它是真彩格式,每個畫素對紅、綠、藍各儲存8位,此種格式有其優點和不足,優點是影像質量好,因為每個畫素佔3位元組,他們不浪費記憶體,不足之處是既然設計中畫素一半穿越字元邊界,在聯連和解碼畫素時將引起操作後果。
32位/畫素格式
它是另一種真彩格式,這種格式將不會使畫素超過D邊界,但記憶體利用不高,它有兩種方式安排色彩通道,一個是藍色作為每個畫素中最弱作用位元組,另一種是將紅色作為最弱作用位元組,與之相應為PAL-BGR和PAL-RGB模式,在每個畫素中你能抽取紅、綠、藍的下列匹配符合通道。
Windows CE顯示硬體推薦
微軟公司推薦使用10種Windows CE的顯示硬體,這些硬體被證明是可操作的,並使你的顯示驅動程式開發變得更容易,即使你的硬體不是所推薦的,你仍能寫入一個完全功能的顯示,驅動程式,或如果它在產品設計後期難以更改硬體設計,代價是在驅動程式和/或減少操作上附加努力。
記憶體佈局
微軟強烈推薦你顯示硬體使用線性frame緩衝區,你能夠向緩衝區讀和寫操作。所有的顯示器記憶體應該是連續、適合的,此外,應是一個線性聯接視窗覆蓋整個frame緩衝區,使用非微軟所推薦的硬體時,如果你選擇使用它,就需要對GPE類進實質性改動,詳細資訊參見本論文的使用GPE類部門。
你的顯示硬體也要使用可支援的畫素格式,儲存和畫素序組合、詳細資訊,閱讀本論文的,顯示快取格式部分。這種顯示硬體frame緩衝應有如下性質:
- 由上至下格式,畫素(0,0)在左上角,畫素(width-1,height-1)在右下方;
- frame緩衝區,記憶體中用來代表顯示中的一個掃描行的位元組數,應該是一組四位元組,甚至用未用位元組來填充每個掃描行末端;
- 整個frame緩衝區必須與可連線,而不用CPU執行空白選擇.
- Frame緩衝區:不使用bit-planes,它的每個色彩通道或暗度都有分離frame緩衝區。
Dirty Rect緩衝區
如果你希望使用GPE類來執行顯示驅動程式,但你的顯示硬體沒有被支援GPE類(例如,如果frame緩衝區非線性),然後你可能考慮寫“dirty rece driver”。
在這個模式,GPE類維持一個記憶體中獨於裝置的點陣圖(DIB),它代表frame緩衝區,當記憶體的DIB被修改時,GPE將通知dirty rect driver,以複製DIB更改的或“dirty"部分到,顯示裝置進行轉換操作。
Direy rect drivers以佔用記憶體和犧牲執行速度為代價,他們僅應做為支援硬體的最後手段,當這些硬體不能滿足GPE需求。
加速
微軟推薦你使用能加速下列操作的顯示硬體,按重要性排列如下:
- 實色填充,特別的Bit操作,它的pb0-isolid color數不是OXFFFFFFF。
- SRCCOPY Bit操作;
- 游標顯示,如果你的平臺使用游標;
- 用子畫素繪製實線;
- 匹配SRCCOPY Bit操作;
- 其它的由Windows CE裝置執行影像操作。
總結
在Windows CE 2.0中,顯示驅動程式在視覺化顯示技術中發生關鍵性作用,與本論文中提到的設計策略相協調的,顯示驅動程式和顯示硬體將允許基於Windows CE的裝置充分利用新GDI的增強影像顯示能力。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988092/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Win8硬體驅動程式位置在哪
- Linux下的硬體驅動——USB裝置(上)(驅動配置部分)(轉)Linux
- Linux下的硬體驅動——USB裝置(下)(驅動開發部分)(轉)Linux
- 用 Linux 命令顯示硬體資訊Linux
- Win10系統驅動裝不上顯示Wnidows無法啟動這個硬體裝置程式碼19如何解決Win10
- 教你定製Windows硬體驅動安裝目錄列表(轉)Windows
- VK16K33LED數碼管顯示驅動晶片/LED數顯驅動晶片內建顯示記憶體及RC振盪電路晶片記憶體
- 顯示器驅動程式停止響應的解決辦法
- VMware ESXi安裝NVIDIA GPU顯示卡硬體驅動和配置vGPUGPU
- win10怎麼聯網自動安裝硬體驅動_win10聯網自動安裝硬體驅動教程Win10
- 利用驅動精靈更新win10系統硬體驅動的方法Win10
- ZYNQ的gpio的硬體驅動庫知識
- AMD釋出新的AMDGPU Linux顯示驅動GPULinux
- WHQL認證的Windows 7 RTM顯示驅動Windows
- Better Menubar--Mac硬體資訊顯示選單欄助手Mac
- 怎樣啟動一個程式而不顯示它 (轉)
- LED驅動IC,數顯驅動控制電路-數碼管顯示驅動晶片-VK1629 LQFP44技術資料晶片
- shell自動收集伺服器硬體系統資訊通過web頁面顯示伺服器Web
- win10顯示器驅動程式無法啟動的最佳解決步驟Win10
- linux怎麼檢視已裝好硬體驅動Linux
- LED驅動晶片(IC)-VK1616 SOP/DIP16,LED數顯/數碼管顯示驅動晶片晶片
- 在Delphi 中用程式實現自定義窗體的建立和顯示順序(2) (轉)
- 手動設定和修改X-Window的顯示模式(轉)模式
- 感測器,硬體,系統,驅動,應用軟體的發展
- WDS:研究顯示Android手機硬體故障遠超iPhone、黑莓AndroidiPhone
- 直接在程式中更改顯示模式 (轉)模式
- web程式設計之分頁顯示 (轉)Web程式設計
- 【轉】釋出的QT程式無法顯示圖示和圖片的問題QT
- linux驅動程式設計(轉)Linux程式設計
- Linux裝置驅動程式 (轉)Linux
- Android程式啟動與Activity顯示Android
- 動態內表及動態ALV顯示(轉)
- 英特爾先進硬體如同擺設 軟體驅動遲遲不下
- javascript動態隱藏顯示技術(轉)JavaScript
- IHS Markit:2018年智慧手機顯示器觸控和顯示整合驅動IC出貨量達4億片
- ISD4003驅動程式(基於51微控制器,硬體除錯通過)除錯
- Linux驅動程式碼顯示:新一代 Navi將繼續沿用 GCN架構LinuxGC架構
- 顯示 Oracle UNIX 程式的 CPU 和 RAMOracle