專利名稱:一種Linux操作系統(tǒng)及其顯卡驅(qū)動(dòng)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種操作系統(tǒng),尤其涉及一種用于顯卡硬件適配的Linux操作系統(tǒng)及其顯卡驅(qū)動(dòng)裝置。
背景技術(shù):
隨著Linux系統(tǒng)已經(jīng)得到了廣泛的應(yīng)用,在民用和辦公以及開發(fā)領(lǐng)域擁有了越來越多的用戶。現(xiàn)有Linux圖形用戶界面啟動(dòng)顯卡驅(qū)動(dòng)主要由xorg提供顯卡驅(qū)動(dòng)和外掛顯卡驅(qū)動(dòng)兩種模式,其中xorg為依據(jù)架構(gòu)X窗口系統(tǒng)所開發(fā)的實(shí)現(xiàn)體。顯卡介于顯示器和主板之間,起到人機(jī)交互的作用。顯卡與主板的接口是周邊元件擴(kuò)展接口(Peripheral Component Interconnection,以下簡(jiǎn)稱PCI)插槽。顯卡負(fù)責(zé)將接收到的信號(hào)轉(zhuǎn)換為電器信號(hào),通過掃描方式顯示在顯示器上并依靠顯示芯片進(jìn)行信號(hào)的處理工作。顯卡的工作還需要程序的支持,這組程序稱為顯卡驅(qū)動(dòng)。顯卡驅(qū)動(dòng)在操作系統(tǒng)中運(yùn)行。顯卡驅(qū)動(dòng)程序負(fù)責(zé)計(jì)算機(jī)與設(shè)備的通信,由于不同廠商提供的顯卡硬件不同則對(duì)應(yīng)的驅(qū)動(dòng)程序也不相同。各自的硬件都需要各自的驅(qū)動(dòng)程序支持。由于xorg所提供的顯卡只提供了基本的圖形庫函數(shù),集成的顯卡驅(qū)動(dòng)所支持的顯卡類型有限。對(duì)顯卡支持的通用性較低,支持庫的功能有限,且對(duì)3D效果的支持較差,因此不能在更大程度上發(fā)揮顯卡的功效。而外掛顯卡驅(qū)動(dòng)存在的問題是在初始化系統(tǒng)時(shí),用戶需要知道顯卡的硬件信息,才能配置正確的顯卡驅(qū)動(dòng)?;蛘撸谟脩舾鼡Q顯卡后,還需要重新配置新的顯卡驅(qū)動(dòng),增加了顯卡使用的難度。因此,亟需一種Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置來解決上述問題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題之一是需要提供一種能夠根據(jù)顯卡信息的變化來自動(dòng)進(jìn)行顯卡配置的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置。為了解決上述技術(shù)問題,本發(fā)明提供了一種Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,該顯卡驅(qū)動(dòng)裝置包括驅(qū)動(dòng)存儲(chǔ)單元,其存儲(chǔ)各種顯卡驅(qū)動(dòng);檢測(cè)單元,其不斷檢測(cè)安裝所述操作系統(tǒng)的計(jì)算機(jī)中設(shè)置的顯卡信息;確定單元,其在所述檢測(cè)單元檢測(cè)到的所述顯卡信息發(fā)生變化時(shí),根據(jù)所檢測(cè)到的變化后的顯卡信息來確定所述計(jì)算機(jī)中設(shè)置的顯卡類型;匹配單元,其判斷所述驅(qū)動(dòng)存儲(chǔ)單元中存儲(chǔ)的各種顯卡驅(qū)動(dòng)至少之一是否與所述確定單元所確定的所述顯卡類型匹配,并從所述驅(qū)動(dòng)存儲(chǔ)單元中存儲(chǔ)的各種顯卡驅(qū)動(dòng)中、選取與所述確定單元所確定的所述顯卡類型相匹配的顯卡驅(qū)動(dòng);配置單元,其基于所述匹配單元所選取的顯卡驅(qū)動(dòng)對(duì)與所述變化后的顯卡信息對(duì)應(yīng)的顯卡進(jìn)行配置和加載。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,還包括,管理單元,其在所述操作系統(tǒng)啟動(dòng)時(shí),運(yùn)行所述檢測(cè)單元。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,所述管理單元在所述操作系統(tǒng)關(guān)閉或重啟時(shí),關(guān)閉所述檢測(cè)單元。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,所述管理單元通過調(diào)用顯卡檢測(cè)服務(wù)腳本來運(yùn)行/關(guān)閉所述檢測(cè)單元。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,所述各種顯卡驅(qū)動(dòng)包括各種分別針對(duì)NVIDIA顯卡、ATI顯卡和INTEL顯卡的驅(qū)動(dòng)。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,所述匹配單元判斷所述各種顯卡驅(qū)動(dòng)中針對(duì)NVIDIA顯卡、ATI顯卡的驅(qū)動(dòng)至少之一是否與所述確定單元所確定的所述顯卡的類型匹配,如果判斷結(jié)果為是,則從針對(duì)NVIDIA顯卡、ATI顯卡的驅(qū)動(dòng)中、選取 與所述確定單元所確定的所述顯卡的類型相匹配的顯卡驅(qū)動(dòng)。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,如果判斷結(jié)果為否,則判斷針對(duì)INTEL顯卡的驅(qū)動(dòng)是否與所述確定單元所確定的所述顯卡的類型匹配。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,通過修改Mesa和Xorg進(jìn)行修改來實(shí)現(xiàn)上述各單元的功能。根據(jù)本發(fā)明又一方面的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,所述顯卡的信息包括顯卡的生產(chǎn)廠商編號(hào)和設(shè)備號(hào)。根據(jù)本發(fā)明的另一方面,還提供了一種Linux操作系統(tǒng),所述操作系統(tǒng)包括以上所述的顯卡驅(qū)動(dòng)裝置。與現(xiàn)有技術(shù)相比,本發(fā)明的一個(gè)或多個(gè)實(shí)施例可以具有如下優(yōu)點(diǎn)本發(fā)明通過將內(nèi)置INTEL顯卡、外掛NVIDIA顯卡和ATI顯卡的顯卡驅(qū)動(dòng)相結(jié)合的方法,提高了顯卡驅(qū)動(dòng)對(duì)庫函數(shù)的支持度。本發(fā)明的一實(shí)施例的Linux操作系統(tǒng)設(shè)置了檢測(cè)單元和驅(qū)動(dòng)存儲(chǔ)單元,該檢測(cè)單元不斷地檢測(cè)顯卡信息的變化,驅(qū)動(dòng)存儲(chǔ)單元存儲(chǔ)了包括針對(duì)NVIDIA顯卡和ATI顯卡的各種顯卡驅(qū)動(dòng)程序(傳統(tǒng)操作系統(tǒng)在不額外安裝顯卡驅(qū)動(dòng)程序的情況下,未存儲(chǔ)針對(duì)NVIDIA顯卡和ATI顯卡的驅(qū)動(dòng)程序),這樣,能夠支持用戶隨意更換顯卡。換而言之,本發(fā)明的Linux操作系統(tǒng)能夠自動(dòng)的探測(cè)顯卡型號(hào)并配置驅(qū)動(dòng)而不需要用戶的參與。此外,通過優(yōu)先判斷所檢測(cè)到的顯卡信息是否與NVIDIA顯卡或ATI顯卡的顯卡類型匹配,能夠盡量將顯卡識(shí)別為NVIDIA顯卡或ATI顯卡,從而能夠在最大程度發(fā)揮顯卡的功效。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例共同用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖I是根據(jù)本發(fā)明第一實(shí)施例的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置的結(jié)構(gòu)示意圖;圖2是根據(jù)本發(fā)明第二實(shí)施例的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置的結(jié)構(gòu)示意圖;圖3是根據(jù)本發(fā)明第三實(shí)施例的Linux操作系統(tǒng)進(jìn)行顯卡驅(qū)動(dòng)配置的流程示意圖。
具體實(shí)施例方式以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。第一實(shí)施例圖I是根據(jù)本發(fā)明第一實(shí)施例的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置的結(jié)構(gòu)示意圖, 該顯卡驅(qū)動(dòng)裝置包括檢測(cè)單元10、確定單元11、匹配單元12、驅(qū)動(dòng)存儲(chǔ)單元13以及配置單元14。下面參考圖I詳細(xì)說明該裝置所包括的各單元的功能。檢測(cè)單元10,其不斷檢測(cè)安裝操作系統(tǒng)的計(jì)算機(jī)中設(shè)置的顯卡信息。具體地,通過顯卡檢測(cè)程序來檢測(cè)顯卡信息。其中顯卡信息包括顯卡的生產(chǎn)廠商編號(hào)和設(shè)備號(hào),例如NVIDIA顯卡的信息可以為0300:10de。需要說明的是,由于在計(jì)算機(jī)工作時(shí),安裝操作系統(tǒng)的計(jì)算機(jī)的顯卡可以進(jìn)行更換,因此會(huì)導(dǎo)致計(jì)算機(jī)中原來設(shè)置的顯卡的信息發(fā)生變化。通過不斷檢測(cè)安裝操作系統(tǒng)的計(jì)算機(jī)中設(shè)置的顯卡信息可以得知顯卡是否被更換。在本實(shí)施例中通過本步驟,根據(jù)檢測(cè)的顯卡信息可以及時(shí)地對(duì)更換后的顯卡進(jìn)行顯卡驅(qū)動(dòng)的配置,防止在熱插撥的過程中,出現(xiàn)已更換的顯卡在未及時(shí)進(jìn)行配置所導(dǎo)致的圖形無法輸出顯示的問題。確定單元11,其與檢測(cè)單元10連接,在檢測(cè)單元10檢測(cè)到的顯卡信息發(fā)生變化時(shí),根據(jù)所檢測(cè)到的變化后的顯卡信息來確定計(jì)算機(jī)中設(shè)置的顯卡類型。具體地,執(zhí)行Ispci指令,根據(jù)變化后的顯卡信息來確定顯卡型號(hào)。更具體地,通過變化后的硬件設(shè)備編號(hào)和生產(chǎn)廠商編號(hào)(以下將硬件設(shè)備編號(hào)和生產(chǎn)廠商編號(hào)統(tǒng)稱為PCI編號(hào))來確定顯卡類型。舉例而言,如果變化后的顯卡信息的PCI編號(hào)為0300:10de,則確定計(jì)算機(jī)中設(shè)置的顯卡類型為NVIDIA顯卡;如果變化后的顯卡信息的PCI編號(hào)為0300:1002,則確定計(jì)算機(jī)中設(shè)置的顯卡類型為ATI顯卡;如果變化后的顯卡信息的PCI編號(hào)為0300:8086,則確定計(jì)算機(jī)中設(shè)置的顯卡類型為INTEL顯卡。驅(qū)動(dòng)存儲(chǔ)單元13,其存儲(chǔ)各種顯卡的驅(qū)動(dòng)。具體地,其用于存儲(chǔ)各種顯卡的驅(qū)動(dòng)程序以及與各個(gè)驅(qū)動(dòng)程序相關(guān)的程序。在本實(shí)施例中,優(yōu)選地,將各種分別針對(duì)NVIDIA顯卡、ATI顯卡和INTEL顯卡的驅(qū)動(dòng)程序以及與各個(gè)驅(qū)動(dòng)程序相關(guān)的程序同時(shí)存儲(chǔ)到驅(qū)動(dòng)存儲(chǔ)單元13中。需要說明的是,在傳統(tǒng)的操作系統(tǒng)中不額外安裝顯卡驅(qū)動(dòng)程序,一般未存儲(chǔ)針對(duì)NVIDIA顯卡和ATI顯卡的驅(qū)動(dòng)程序,因此,在傳統(tǒng)的操作系統(tǒng)中安裝/更換NVIDIA顯卡或ATI顯卡時(shí),需要用戶安裝相應(yīng)的顯卡驅(qū)動(dòng)以配置安裝后的顯卡。在本實(shí)施例中,由于事先安裝了 NVIDIA顯卡和ATI顯卡的驅(qū)動(dòng)程序,在確定了顯卡類型后操作系統(tǒng)自動(dòng)安裝相應(yīng)的顯卡驅(qū)動(dòng),減少了用戶的操作流程。匹配單元12,其與確定單元11和驅(qū)動(dòng)存儲(chǔ)單元13連接,其判斷驅(qū)動(dòng)存儲(chǔ)單元13中存儲(chǔ)的各種顯卡驅(qū)動(dòng)至少之一是否與確定單元11所確定的顯卡類型匹配,并從驅(qū)動(dòng)存儲(chǔ)單元13中存 儲(chǔ)的各種顯卡驅(qū)動(dòng)中、選取與確定單元11所確定的顯卡類型相匹配的顯卡驅(qū)動(dòng)。在本實(shí)施例中,優(yōu)選地,匹配單元12先判斷各種顯卡驅(qū)動(dòng)中針對(duì)NVIDIA顯卡、ATI顯卡的顯卡驅(qū)動(dòng)至少之一是否與確定單元11所確定的顯卡類型匹配,如果判斷結(jié)果為是,則從針對(duì)NVIDIA顯卡、ATI顯卡的顯卡驅(qū)動(dòng)中、選取與確定單元11所確定的顯卡類型相匹配的顯卡驅(qū)動(dòng)。如果判斷結(jié)果為否,則判斷針對(duì)INTEL顯卡的驅(qū)動(dòng)是否與確定單元11所確定的所述顯卡類型匹配。另外,若所確定的顯卡類型與驅(qū)動(dòng)存儲(chǔ)單元13中的任何一個(gè)顯卡驅(qū)動(dòng)不匹配,則進(jìn)行默認(rèn)的顯卡驅(qū)動(dòng)配置。例如,若顯卡的類型為GLINT系列芯片的顯卡時(shí),則進(jìn)行默認(rèn)的顯卡驅(qū)動(dòng)配置。需要說明的是,上述優(yōu)選的實(shí)施例是考慮了具備雙顯卡的機(jī)型。例如,對(duì)于從事專業(yè)圖形設(shè)計(jì)的人來說,其計(jì)算機(jī)內(nèi)部包含兩種顯卡,一般為ATI顯卡或NVDIA顯卡以及INTEL顯卡。在對(duì)該種機(jī)型進(jìn)行配置時(shí),優(yōu)先判斷各種顯卡驅(qū)動(dòng)中獨(dú)立顯卡,即針對(duì)NVIDIA顯卡、ATI顯卡的顯卡驅(qū)動(dòng)至少之一是否與上述計(jì)算機(jī)顯卡的顯卡類型匹配,然后判斷INTEL顯卡的顯卡驅(qū)動(dòng)是否與上述計(jì)算機(jī)顯卡的類型匹配。這樣使得操作系統(tǒng)的圖形顯示達(dá)到最優(yōu),充分利用設(shè)備資源。配置單元14,其與匹配單元12連接,其基于匹配單元12所選取的顯卡驅(qū)動(dòng)對(duì)與變化后的顯卡信息對(duì)應(yīng)的顯卡進(jìn)行配置和加載。在本實(shí)施例中,由于是Linux操作系統(tǒng),因此不同的顯卡類型不僅要得到不同的顯卡驅(qū)動(dòng)的支持,也要同樣得到Xorg與Mesa圖形庫的支持。其中,Mesa用于實(shí)現(xiàn)顯卡驅(qū)動(dòng)的接口,并用于提供可供調(diào)用的圖形庫函數(shù)。Mesa的libGL. so. I文件是GL庫,GL庫是OpenGL中的核心庫,GL庫包含了最基本的3D函數(shù)。libGLU. so. I文件是mesa的實(shí)用庫GLU,GLU是對(duì)GL的補(bǔ)充。GLUT是基本的窗口界面。Xorg對(duì)OpenGL提供擴(kuò)展庫GLX。GLX庫函數(shù)封裝在libglx. so文件中中。Intel 顯卡的驅(qū)動(dòng)采用 Xorg 提供的 xorg-xll-drv-intel, ATI 顯卡與 NVIDIA 顯卡采用廠商提供的外掛驅(qū)動(dòng)。ATI顯卡驅(qū)動(dòng)不但提供了 kernel module,而且提供了 GL庫文件libGL. so. I以及擴(kuò)展庫GLX的libglx. so文件。同時(shí)為了方便配置,驅(qū)動(dòng)程序還提供了部分常用的配置命令,便于對(duì)顯卡的配置做修改。同樣地,NVIDIA顯卡驅(qū)動(dòng)提供了 GL庫和GLX庫及部分操作命令和kernel module。需要說明的是,雖然不同顯卡的驅(qū)動(dòng)提供了自己的函數(shù)庫,但對(duì)于顯卡驅(qū)動(dòng)庫的調(diào)用都存在libGL. so. I和libglx. so. 1,不同顯卡之間存在沖突,不正確的調(diào)用會(huì)導(dǎo)致系統(tǒng)黑屏或3D效果無法啟用。因此,通過修改Mesa和Xorg進(jìn)行修改來實(shí)現(xiàn)上述各單元的功倉泛。
將Mesa 中的 libGL. so. I 修改為 libGL. so. I. mesa,并設(shè)置 libGL. so. I 鏈接到libGL. so. I. mesa。將 Xorg 中的 libglx. so 修改為 libglx. so. xorg。如果需要配置的顯卡為NVIDIA顯卡時(shí),首先修改mesa的libGL. so. I的GL庫鏈接,改用NVIDIA驅(qū)動(dòng)提供的IibGL庫。Xorg的擴(kuò)展庫也要采用NVIDIA驅(qū)動(dòng)提供的libglx庫,修改libglx. so鏈接。鏈接完成后需要更新顯卡的配置文件xorg. conf,因此需要?jiǎng)h除原有的配置文件。執(zhí)行depmod-a'uname-r'命令,加載NVIDIA顯卡的內(nèi)核模塊。最后執(zhí)行nvidia-xconfig操作生成新的顯卡驅(qū)動(dòng)的配置文件xorg. conf。
如果需要配置的顯卡為ATI顯卡時(shí),首先修改libGL. so. I鏈接到ATI提供的libGL. so的庫文件,然后修改xorg擴(kuò)展庫libglx. so鏈接到ATI提供的libglx. so文件。刪除原有的xorg. conf配置文件。執(zhí)行depmod-a'uname-r'命令加載ATI的內(nèi)核模塊。執(zhí)行aticonfig-initial命令,生成新的xorg. conf的配置文件。如果需要配置的顯卡為INTEL顯卡時(shí),修改IibGL. so. I的鏈接指向mesa的libGL. so. mesa,修改 libglx. so 的鏈接指向 xorg 的 libglx. so. xorg,刪除原有的 xorg.conf配置文件,并執(zhí)行depmod-a'uname-r'指令加載驅(qū)動(dòng)模塊。另外,若所確定的所述顯卡類型與驅(qū)動(dòng)存儲(chǔ)單元13中的任何一個(gè)顯卡驅(qū)動(dòng)不匹配,則進(jìn)行默認(rèn)的顯卡驅(qū)動(dòng)配置,不對(duì)mase和xorg作修改。本發(fā)明的實(shí)施例,設(shè)置了檢測(cè)單元10和驅(qū)動(dòng)存儲(chǔ)單元13,該檢測(cè)單元10不斷地檢測(cè)顯卡信息的變化,驅(qū)動(dòng)存儲(chǔ)單元13存儲(chǔ)了包括針對(duì)NVIDIA顯卡和ATI顯卡的各種顯卡驅(qū)動(dòng)程序(傳統(tǒng)操作系統(tǒng)在不額外安裝顯卡驅(qū)動(dòng)程序的情況下,未存儲(chǔ)針對(duì)NVIDIA顯卡和ATI顯卡的驅(qū)動(dòng)程序),這樣,能夠支持用戶隨意更換顯卡。換而言之,本發(fā)明實(shí)施例能夠自動(dòng)的探測(cè)顯卡型號(hào)并配置驅(qū)動(dòng)而不需要用戶的參與。第二實(shí)施例圖2是根據(jù)本發(fā)明第二實(shí)施例的Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置的結(jié)構(gòu)示意圖。為了便于說明,不再對(duì)與前述實(shí)施例相同的單元進(jìn)行詳細(xì)展開,而僅重點(diǎn)說明與前述實(shí)施例的不同之處。在圖I和圖2中,對(duì)與前述實(shí)施例相同或相似的單元,采用了相同的附圖標(biāo)記。在本實(shí)施例中還包括一個(gè)管理單元15,其與檢測(cè)單元10連接,其在操作系統(tǒng)啟動(dòng)時(shí),運(yùn)行檢測(cè)單元10 ;在操作系統(tǒng)關(guān)閉或重啟時(shí),關(guān)閉檢測(cè)單元10。具體地,管理單元15通過調(diào)用顯卡檢測(cè)服務(wù)腳本來運(yùn)行/關(guān)閉檢測(cè)單元10。通過設(shè)置顯卡檢測(cè)服務(wù)腳本auto_change_driver,在系統(tǒng)啟動(dòng)時(shí)啟動(dòng)顯卡檢測(cè)服務(wù),即運(yùn)行檢測(cè)單元10。在運(yùn)行第一實(shí)施例中的各個(gè)單元完成顯卡配置或操作系統(tǒng)關(guān)閉或重啟時(shí),關(guān)閉檢測(cè)單元10。本發(fā)明還涉及一種Linux操作系統(tǒng),該操作系統(tǒng)包括第一實(shí)施例或第二實(shí)施例的顯卡驅(qū)動(dòng)裝置,在操作系統(tǒng)啟動(dòng)時(shí),自動(dòng)對(duì)顯卡進(jìn)行檢測(cè)配置。本發(fā)明實(shí)施例通過將各種顯卡的驅(qū)動(dòng)及其相關(guān)程序集成到同一個(gè)單元中。在系統(tǒng)啟動(dòng)時(shí)檢測(cè)顯卡類型,根據(jù)顯卡的類型作相應(yīng)的顯卡配置。這樣既保證了用戶系統(tǒng)啟動(dòng)時(shí)硬件的透明性,又發(fā)揮了顯卡驅(qū)動(dòng)的最大功效。在更換顯卡時(shí)能夠自動(dòng)根據(jù)顯卡的類型,配置驅(qū)動(dòng)并啟用驅(qū)動(dòng)模塊。不需要用戶的參與,系統(tǒng)通過自動(dòng)檢測(cè)顯卡類型來配置顯卡驅(qū)動(dòng)。
第三實(shí)施例圖3是根據(jù)本發(fā)明第三實(shí)施例的Linux操作系統(tǒng)進(jìn)行顯卡驅(qū)動(dòng)配置的流程示意圖,下面參考圖3詳細(xì)說明各個(gè)步驟。步驟S310,在Linux操作系統(tǒng)的系統(tǒng)服務(wù)目錄中設(shè)置顯卡檢測(cè)服務(wù),在系統(tǒng)啟動(dòng)時(shí)啟動(dòng)顯卡檢測(cè)服務(wù)。顯卡探測(cè)服務(wù)的設(shè)置如下設(shè)置自動(dòng)探測(cè)服務(wù)的運(yùn)行級(jí)別,在單用戶、多用戶無網(wǎng)絡(luò)狀態(tài)、多用戶網(wǎng)絡(luò)狀態(tài)、系統(tǒng)保留、圖形界面的級(jí)別下啟動(dòng)服務(wù);設(shè)置在關(guān)機(jī)和重啟時(shí)停止服務(wù)。服務(wù)開啟時(shí),將服務(wù)寫入到/var/lock/subsys中,設(shè)置實(shí)例正在運(yùn)行的標(biāo)志,防止實(shí)例重復(fù)運(yùn)行。 步驟S320,不斷檢測(cè)安裝操作系統(tǒng)的計(jì)算機(jī)中設(shè)置的顯卡的信息,在顯卡信息發(fā)生變化時(shí),根據(jù)所檢測(cè)到的變化后的顯卡信息來確定計(jì)算機(jī)中設(shè)置的顯卡的類型。具體地,通過變化后的硬件設(shè)備編號(hào)和生產(chǎn)廠商編號(hào)(以下將硬件設(shè)備編號(hào)和生產(chǎn)廠商編號(hào)統(tǒng)稱為PCI編號(hào))來確定顯卡類型。步驟S330,判斷操作系統(tǒng)存儲(chǔ)的各種顯卡驅(qū)動(dòng)至少之一是否與確定的顯卡類型匹配,若判斷為是,則從選取的顯卡驅(qū)動(dòng)對(duì)顯卡進(jìn)行配置和加載。具體地,根據(jù)步驟S320所確定的顯卡的類型來安裝配置顯卡的驅(qū)動(dòng)。在本實(shí)施例中,優(yōu)選地,所涉及的顯卡類型為NVDIA顯卡、ATI顯卡以及INTEL顯卡。由于考慮了具有雙顯卡的機(jī)型,優(yōu)選地,先進(jìn)行判斷針對(duì)ATI顯卡和NVDIA顯卡的驅(qū)動(dòng)是否與所確定的顯卡類型匹配,在不匹配的情況下,再判斷INTEL顯卡的驅(qū)動(dòng)是否與確定的顯卡類型匹配。若確定的顯卡的類型為NVDIA顯卡,執(zhí)行NVIDIA顯卡的配置操作。NVDIA顯卡的具體配置如下所示(I)配置 GL 庫ln-sf/usr/1ib/GL/nvidia/1ibGL. so. 2*/usr/lib/libGL. so. I. 2ln-sf/usr/lib/libGL. so. I. 2/usr/lib/libGL. so. I(2)配置GLX擴(kuò)展庫In -sf /usr/lib/xorg/modules/extensions/libglx. so. nvidia. 2/usr/lib/xorg/modules/extensions/libglx.so(3)刪除原有配置文件rm-f/etc/Xll/xorg. conf(4)加載內(nèi)核驅(qū)動(dòng)模塊depmod-a'uname-r'(5)更新顯卡配置文件(6)執(zhí)行nvidia-xconfig指令。在執(zhí)行完以上操作后退出應(yīng)用程序,繼續(xù)執(zhí)行其他服務(wù)。若確定的顯卡的類型為ATI顯卡,即檢測(cè)生產(chǎn)廠商編號(hào)和設(shè)備號(hào)是否是0300:1002,則執(zhí)行ATI顯卡的配置操作。ATI顯卡的具體配置如下所示(I)配置 GL 庫
In -sf /usr/lib/GL/ati/libGL. so. I. 2 /usr/lib/libGL.so. I.2 In -sf/usr/lib/libGL. so. I. 2/usr/lib/libGL. so. I(2)配置GLX擴(kuò)展庫ln-sf/usr/lib/xorg/modules/extensions/libglx. so. ati. 8*/usr/lib/xorg/modules/extensions/libglx. so(3)刪除原有配置文件rm-f/etc/Xll/xorg. conf(4)加載內(nèi)核驅(qū)動(dòng)模塊depmod-a' uname-r'(5)更新顯卡配置文件執(zhí)行ATI顯卡的配置指令aticonfig-initial。執(zhí)行完以上操作后退出應(yīng)用程序,繼續(xù)執(zhí)行其他服務(wù)。若確定的顯卡的顯卡類型為INTEL顯卡,則執(zhí)行INTEL顯卡的配置操作。INTEL顯卡的具體配置如下所示(I)配置GL庫為mesa的GL庫ln-sf/usr/lib/libGL. so. I. 2. mesa/usr/1ib/1 ibGL. so. I. 2ln-sf/usr/1 ib/1 ibGL. so. I. 2/usr/lib/libGL. so. I(2)配置 GLX 庫為 xorg 的擴(kuò)展庫 libglx. so. IIn -sf /usr/lib/xorg/modules/extensions/libglx. so. xorg/usr/lib/xorg/modules/extensions/libglx. so(3)刪除其他顯卡的配置文件rm-f/etc/Xl I/xorg. conf(4)加載啟動(dòng)模塊depmod-a'uname-r'。執(zhí)行完配置操作之后,退出當(dāng)前服務(wù),繼續(xù)其他服務(wù)的運(yùn)行。若確定的顯卡的顯卡類型均不屬于以上三種,則默認(rèn)采用mesa的GL庫和xorg的GLX擴(kuò)展庫。本發(fā)明實(shí)施例通過將各種顯卡的驅(qū)動(dòng)及其相關(guān)程序集成到同一個(gè)單元中。這樣保證了用戶系統(tǒng)啟動(dòng)時(shí)硬件的透明性,發(fā)揮了顯卡驅(qū)動(dòng)的最大功效。在更換顯卡時(shí)能夠自動(dòng)根據(jù)顯卡的類型,配置驅(qū)動(dòng)并啟用驅(qū)動(dòng)模塊。不需要用戶的參與,系統(tǒng)通過自動(dòng)檢測(cè)顯卡類型來配置顯卡驅(qū)動(dòng)。本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要 求書所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,其特征在于,所述顯卡驅(qū)動(dòng)裝置包括 驅(qū)動(dòng)存儲(chǔ)單元,其存儲(chǔ)各種顯卡的驅(qū)動(dòng); 檢測(cè)單元,其不斷檢測(cè)安裝所述操作系統(tǒng)的計(jì)算機(jī)中設(shè)置的顯卡信息; 確定單元,其在所述檢測(cè)單元檢測(cè)到的所述顯卡信息發(fā)生變化時(shí),根據(jù)所檢測(cè)到的變化后的顯卡信息來確定所述計(jì)算機(jī)中設(shè)置的顯卡類型; 匹配單元,其判斷所述驅(qū)動(dòng)存儲(chǔ)單元中存儲(chǔ)的各種顯卡驅(qū)動(dòng)至少之一是否與所述確定單元所確定的所述顯卡的類型匹配,并從所述驅(qū)動(dòng)存儲(chǔ)單元中存儲(chǔ)的各種顯卡驅(qū)動(dòng)中、選取與所述確定單元所確定的所述顯卡類型相匹配的顯卡驅(qū)動(dòng); 配置單元,其基于所述匹配單元所選取的顯卡驅(qū)動(dòng)對(duì)與所述變化后的顯卡信息對(duì)應(yīng)的顯卡進(jìn)行配置和加載。
2.根據(jù)權(quán)利要求I所述的顯卡驅(qū)動(dòng)裝置,其特征在于,還包括, 管理單元,其在所述操作系統(tǒng)啟動(dòng)時(shí),運(yùn)行所述檢測(cè)單元。
3.根據(jù)權(quán)利要求2所述的顯卡驅(qū)動(dòng)裝置,其特征在于,所述管理單元在所述操作系統(tǒng)關(guān)閉或重啟時(shí),關(guān)閉所述檢測(cè)單元。
4.根據(jù)權(quán)利要求2所述的顯卡驅(qū)動(dòng)裝置,其特征在于,所述管理單元通過調(diào)用顯卡檢測(cè)服務(wù)腳本來運(yùn)行/關(guān)閉所述檢測(cè)單元。
5.根據(jù)權(quán)利要求I所述的顯卡驅(qū)動(dòng)裝置,其特征在于, 所述各種顯卡驅(qū)動(dòng)包括各種分別針對(duì)NVIDIA顯卡、ATI顯卡和INTEL顯卡的驅(qū)動(dòng)。
6.根據(jù)權(quán)利要求5所述的顯卡驅(qū)動(dòng)裝置,其特征在于, 所述匹配單元判斷所述各種顯卡驅(qū)動(dòng)中針對(duì)NVIDIA顯卡、ATI顯卡的驅(qū)動(dòng)至少之一是否與所述確定單元所確定的所述顯卡的類型匹配,如果判斷結(jié)果為是,則從針對(duì)NVIDIA顯卡、ATI顯卡的驅(qū)動(dòng)中選取與所述確定單元所確定的所述顯卡類型相匹配的顯卡的驅(qū)動(dòng)。
7.根據(jù)權(quán)利要求6所述的顯卡驅(qū)動(dòng)裝置,其特征在于, 如果判斷結(jié)果為否,則判斷針對(duì)INTEL顯卡的驅(qū)動(dòng)是否與所述確定單元所確定的所述顯卡的類型匹配。
8.根據(jù)權(quán)利要求I所述的顯卡驅(qū)動(dòng)裝置,其特征在于, 通過修改Mesa和Xorg進(jìn)行修改來實(shí)現(xiàn)上述各單元的功能。
9.根據(jù)權(quán)利要求I所述的顯卡驅(qū)動(dòng)裝置,其特征在于, 所述顯卡的信息包括顯卡的生產(chǎn)廠商編號(hào)和設(shè)備號(hào)。
10.一種Linux操作系統(tǒng),所述操作系統(tǒng)包括權(quán)利要求I至9中任一項(xiàng)所述的顯卡驅(qū)動(dòng)裝置。
全文摘要
本發(fā)明公開了一種Linux操作系統(tǒng)的顯卡驅(qū)動(dòng)裝置,該裝置包括驅(qū)動(dòng)存儲(chǔ)單元,其存儲(chǔ)各種顯卡驅(qū)動(dòng);檢測(cè)單元,其不斷檢測(cè)安裝操作系統(tǒng)的計(jì)算機(jī)中設(shè)置的顯卡信息;確定單元,其根據(jù)所檢測(cè)到的變化后的顯卡的信息來確定計(jì)算機(jī)中設(shè)置的顯卡類型;匹配單元,其判斷驅(qū)動(dòng)存儲(chǔ)單元中存儲(chǔ)的各種顯卡驅(qū)動(dòng)至少之一是否與所確定的顯卡的類型匹配,并從存儲(chǔ)的各種顯卡驅(qū)動(dòng)中、選取與所確定的顯卡類型相匹配的顯卡驅(qū)動(dòng);配置單元,其基于所選取的顯卡驅(qū)動(dòng)對(duì)與變化后的顯卡信息對(duì)應(yīng)的顯卡進(jìn)行配置和加載。本發(fā)明通過將內(nèi)置INTEL顯卡、外掛NVIDIA顯卡和ATI顯卡的顯卡驅(qū)動(dòng)相結(jié)合的方法,提高了顯卡驅(qū)動(dòng)對(duì)庫函數(shù)的支持度。
文檔編號(hào)G06F9/445GK102662708SQ20121009352
公開日2012年9月12日 申請(qǐng)日期2012年3月31日 優(yōu)先權(quán)日2012年3月31日
發(fā)明者張偉, 王濤, 許國(guó)昌, 郭立本 申請(qǐng)人:中標(biāo)軟件有限公司