X Window研究筆記 5

2021-08-22 11:10:43 字數 1529 閱讀 7395

x window研究筆記(5)

顯示裝置曾一度是效能的瓶頸,儘管有些顯示標準存在,但各廠家為了提高市場競爭力,增強顯示裝置的效能,加入了各種加速功能和其它一些專有特性,各os提供的介面也各不相同,x window為了保持可移植性,又要充分發揮硬體特性,所以顯示裝置驅動介面看起來有點複雜。幸運的是,對tinyx來說,這塊相對比較簡單。

顯示裝置初始化過程。

x server在初始化時會呼叫initoutput函式初始化顯示裝置。

initoutput呼叫kdinitoutput完成tinyx顯示裝置的初始化。

在kdinitoutput中:首先呼叫initcard把所有card放到乙個鍊錶中,對於fbdev來說,就是呼叫kdcardinfoadd把fbdevfuncs註冊到kdcardinfo裡。再為最後乙個card增加乙個kdscreeninfo,並初始化它(實際上tinyx假設的是單card和單screen)。

在kdinitoutput中:接下來呼叫card->cfuncs->cardinit初始化鍊錶中的card,呼叫kdinitscreen初始化card中的kdscreeninfo。

最後通過kdinitscreen,再經過addscreen把所有card中的所有screen加入到screeninfo.screens的全域性的陣列中,完成顯示裝置的初始化。

kdscreeninit是真正初始化screen(不是前面的screeninfo)的函式,初始化完成之後dix看到的是screenptr這樣的抽象物件。

kdcardfuncs的結構描述

struct

_kdcardfuncs

...kdcardfuncs;

fbdev是基於framebuffer實現的顯示裝置驅動,前面的kdcardfuncs定義了很多介面函式,由下面的fbdev的初始化,我們可以看出,很多介面函式並不是必須的。

=...

;fbdevcardinit 建立fbdevpriv結構,開啟/dev/fb0裝置檔案,獲取framebuffer資訊,並對映視訊記憶體到使用者空間。

fbdevscreeninit 根據framebuffer的資訊初始化screeninfo。

fbdevinitscreen 初始化screen的資訊和虛函式表。

fbdevpreserve 空函式。

fbdevenable 啟用framebuffer並設定調色盤。

fbdevdpms 顯示器電源管理,通過ioctl控制framebuffer的電源模式。

fbdevdisable 空函式。

fbdevrestore 空函式。

fbdevscreenfini 空函式。

fbdevcardfini unmap視訊記憶體,並關閉framebuffer裝置檔案。

fbdevgetcolors 得到調色盤資訊。

fbdevputcolors 設定調色盤資訊。

screen的初始化並不是在tinyx/fbdev中完成的,原因是framebuffer的操作是公共的,非tinyx下也可以使用,所以這些函式的實現是放在xserver/fb中,由fbsetupscreen來初始化的。

(待續)

X Window研究筆記 5

x window研究筆記 5 顯示裝置曾一度是效能的瓶頸,儘管有些顯示標準存在,但各廠家為了提高市場競爭力,增強顯示裝置的效能,加入了各種加速功能和其它一些專有特性,各os提供的介面也各不相同,x window為了保持可移植性,又要充分發揮硬體特性,所以顯示裝置驅動介面看起來有點複雜。幸運的是,對t...

X Window研究筆記 14

x window研究筆記 14 驅動程式對不同硬體和平台上的實現有很多差異,x window框架部分並不會直接與驅動程式關聯起來,也是採用的註冊機制。前面已經有關於這方面的介紹了,這裡不再驁述了。實現指定的介面 儘管大多數與平台相關的函式都可以採用註冊機制,x window框架部分通過函式指標去呼叫...

X Window研究筆記 16

x window研究筆記 16 伺服器端字型的配置 指定字型搜尋路徑 預設的路徑 包括 usr x11r6 lib x11 fonts目錄下的幾個子目錄。在配置檔案中指定 tinyx不需要配置檔案。在命令列引數中指定。用fp選項設定字型路徑。用fn設定預設的字型。用fc設定預設的游標字型。預設的字型...