顯卡驅動為什麼那麼大?驅動裡面都是些什麼東西?

如題


1. 顯卡驅動一般都支持幾年內幾乎所有顯卡,相當於驅動全家桶,本身就會越來越大。

2. 顯卡驅動經常要根據程序決定如何優化,每個程序有個配置文件。這個資料庫也是越來越大。


我覺得一方面是支持的顯卡比較多吧,比如你選10系卡,這個驅動幾乎能涵蓋所有的十系顯卡,從GT1030到GTX Titan Xp都有。還有一方面是對較多遊戲的特定優化吧,市面上遊戲眾多,一個遊戲寫一點優化代碼,湊起來也是個不小的數字了。還有一方面可能是像素點渲染吧,現在顯示器動不動就動輒4K5K解析度,肯定也要做一些相應的調整,所以體積變大也是在所難免的。


屏幕越大驅動越大,驅動里是堅定的信念。

顯示器屏幕越大,像素點越多。

每一個像素點都需要三個像素分子共同協作完成色彩顯示,相當於一個屋裡住了紅黃藍三個兄弟。

屏幕就是廉住房小區(面積小,房屋緊湊),像素越多就等於房子越多,那麼居民也越多,這麼多居民需要個機構來協調管理,那麼顯卡就出現了。

顯卡需要一個信念來支撐並且驅動他堅持工作,顯卡驅動就出現了。

顯卡管理的居民越多,對自己越沒有信心,就需要更加堅定的信念驅動工作,那麼驅動就越大。

所以——屏幕越大驅動越大,驅動里是堅定的信念。

以上,謝不邀。


GPU驅動之所以比較大,是因為分為用戶態驅動和內核態的驅動。這裡所謂的用戶態驅動就是我們所使用的openGL以及directX標準的具體實現,是我們圖形繪製程序編程中調用介面的實現代碼。我在之前所提到的Mesa就是這樣的一個3d圖形庫,這個圖形庫是平台無關的,提供了圖形繪製的軟體實現,也提供了硬體實現。這裡所謂的軟體實現就是遵循上層介面的標準,用軟體的方法,通過GPU來完成圖形繪製中的所有計算,最後將像素點拷貝到framebuffer中,通過顯示控制器display controller來輸出到屏幕。這是早期針對功能簡單地顯卡,完成圖形繪製的方式。針對某些硬體不支持的特性,這個圖形庫會提供相應的軟體實現。那麼用戶態的GPU驅動又是如何和底層硬體進行交互的呢,如何驅動硬體的呢?所有的用戶態函數都是通過libdrm.so庫文件,調用底層驅動註冊好的系統調用來完成對硬體資源的訪問的。現在的顯卡都是可編程渲染管線,DRM模塊提供的就是直接渲染管理,所謂直接渲染,就是說通過驅動GPU硬體來完成圖形渲染當前的複雜計算。這個DRM是我之前重點研讀的模塊,基本上你是找不到任何的資源,沒有任何一個網站或者書本能夠告訴你底層的實現細節,所以就需要好好的讀代碼,自己分析,一邊猜測一邊驗證。shader在整個圖形渲染管線中很重要的一個部分,GLSL相關的書籍市面上有很多,你可以參考。我個人感覺,所謂可編程管線中的可編程性就是體現在shader中,因為我們能夠為我們在三維場景中的任何一個物體定製多個shader,來達到我們的目的。所謂的EGL是openGL的擴展,主要的目的就是為我們的圖形繪製提供一個窗口和畫布,可以理解為我們OS中的窗口管理器。

現在的openCL以及cuda這些通用計算框架,原理和shader是一樣的,利用的就是圖形繪製的管線,基於drm所封裝出來的一套介面。


對特定遊戲的優化,剛出來的顯卡也會對軟體進行微調。直到這個顯卡出來久了,硬體導致玩一些遊戲優不優化都差不多的時候,就會停止優化。


推薦閱讀:

我的AMD顯卡和WIN10衝突怎麼辦?
G4560配什麼顯卡?
我工作是造價,要用到廣聯達軟體。相配更好的電腦。這個軟體到底適合用i7好還是用至強?
在主機有限的機能下是如何做出例如神海4這種驚為天人的畫面的?

TAG:顯卡 | 驅動程序 |