Graphics Stack總結(四) 設置Mesa開發環境

回顧

上篇文章中我們提供了Mesa source tree的概覽,然後簡介了幾個主要的modules. 現在我們將介紹setup mesa開發環境時會用到的幾個小tips。

Development environment

Mesa大部分是由C和C++寫的集合,用autotools作爲編譯系統,用git來做版本控制,所以應該很多人會比較熟悉。我不會解釋如何去編譯autotools項目,有很多文檔可以被搜到,所以作爲替代我將會聚焦在Mesa特定的部分。

git clone代碼:

git clone git://anongit.freedesktop.org/git/mesa/mesa
 

下面我們會處理依賴,這些應該不會很難。Mesa在軟件堆棧中的地位相底層,因此Mesa的API都比較穩定,不會頻繁更改。所以通常來說,如果您有最近的發行版,並且保持最新,應該能夠構建Mesa。作爲參考,到目前爲止,我可以在我的Ubuntu 14.04上順利的構建Mesa。

在任何一個例子中,你需要去搞定的實際的依賴(dependencies)會取決於你想build的driver以及目標平臺和想enable的features。舉個例子,R300 Gallium driver要求LLVM,但是Intel i965則不需要。

然後值得注意的是,如果你正在改變那些要求Xserver,Wayland/Weston等的feature,那麼需要的依賴會更加的複雜,因爲你可能需要把這些項目混在一起,而他們都有各自的依賴。

下面我將會提及Mesa的一些很有用的特定的build options:

  • --enable-debug: 讓斷言起作用這是必要的,顯然你在開發時會需要這樣做。Mesa和驅動程序在許多地方都有斷言,以確保新代碼不會違反某些假設或違反硬件限制,因此您確實希望在開發時激活這些斷言。它還添加了“-g-O0”以啓用調試支持。
  • --with-dri-drivers:這是您想要構建的經典Mesa DRI驅動程序列表。例如,如果你清楚現在只想build i965驅動程序,那麼構建其他驅動程序只會減慢你的構建速度。
  • --with-gallium-drivers: 這是你想要Build的Gallium driver的列表。同樣的,如果你只想build i965 driver,那麼對這個選項則不會感興趣。

請注意如果你工作在Mesa framework層,即所有驅動程序共享的部分,而不是特定驅動程序的內部,那麼您可能希望在構建中包含更多驅動程序,以確保它們在更改後依然能成功構建。

  • --with-egl-platforms: 這是支持的平臺的列表。與上面的選項相同,你會只想build你正在工作的plaform上的mesa版本。

另外,用這些選項的集合時,你可能會想設置你的CFLAGS and CXXFLAGS(記住Mesa同時用了C和C++)。對我來說我喜歡用"-g3"。

Using your built version of Mesa

一旦你已經build出了Mesa,你可以用命令'make install'來安裝libraries和drivers。也有可能你已經配置了autotools(通過--prefix option)來做這些事情,使得安裝到一個安全的地方,這樣可以保證不會使得新build出的Mesa與你發行版系統中的Mesa衝突。現在你的問題是告訴OpenGL程序用新編譯出來的Mesa版本而不是你的發行版中提供的Mesa。

你也可以用幾個環境變量來調整:

  • LIBGL_DRIVERS_PATH: Set 設置這個來改變你編譯出的driver的安裝地址,告訴Mesa的loader在這裏查找drivers。
  • LD_LIBRARY_PATH: Set 設置這個來改變你編譯出的Mesa libraries的安裝地址,這將會告訴OpenGL程序加載你最近編譯出的libGL.so而不是你的系統中的libGL.so

關於更多tips我建議閱讀Mesa郵件列表中的這個short thread,裏面由很多Mesa開發者討論關於開發環境設置。

Coming up next

下篇文章中我會介紹現代3D graphics硬件。畢竟,graphics driver的工作就是hardware的programming。所以若想做一些有意義的驅動開發,擁有現代3D graphics硬件如何工作的基本理解是非常重要且必要的。

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