日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

显存(Video Memory)

發(fā)布時間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 显存(Video Memory) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文:http://happyseeker.github.io/kernel/2016/03/01/about-Video-Memory.html

閑話

在從事圖形優(yōu)化工作之前,一直對顯存(Video Memory)充滿了好奇,很想了解其管理方式、基本原理、與內存的區(qū)別等,但一直沒有時間和機會去研究,現(xiàn)在工作需要,逐漸開始接觸和了解,這里也順便記錄,以免后續(xù)忘記。

什么顯存?

顯存,即Video Memory,簡單來說,就是位于顯卡的內存,其主要用途當然是用作圖形顯示了,現(xiàn)在的家用pc中基本都配置了獨立顯卡,即使是集成顯卡,也有一定的顯存,否則一些游戲玩起來可能就費勁了。

為什么需要顯存?

隨著計算機硬件的飛速發(fā)展,現(xiàn)代的CPU、內存能力已經(jīng)超過了從前的想象,按理說,目前計算機中的主要瓶頸應該還在IO上,內存應該不至于成為瓶頸,那為什么需要顯存呢?

這個問題就如“為什么需要顯卡”一樣,之前的文章中應該做了解釋,所謂術業(yè)有專攻,顯卡專注于圖形顯示,更擅長于圖形顯示,而顯卡進行圖形顯示時是需要內存資源的,如果其所需的內存資源都從內存(CPU主存,后面簡稱內存)分配,那相對于使用顯卡自帶的內存,性能肯定有損耗。 這就跟NUMA節(jié)點中遠程訪問類似,雖然內存硬件本身的能力并不比顯存弱,但“距離”、“親疏關系”、“使用方式”等對其影響很大。

顯存管理

在Linux X11環(huán)境中,顯存通常是通過內核的DRM模塊進行管理,用戶態(tài)和內核程序都可以使用DRM提供的接口分配和釋放顯存。 用戶態(tài)程序通過Libdrm提供的用戶態(tài)接口(本質上為ioctl調用)來分配和釋放顯存。

DRM模塊中,最終使用TTM模塊在管理顯存(或內存)。 TTM模塊中,自己實現(xiàn)了一個內存pool,分配和釋放顯存(或內存)時,會先放到pool中,如此可以提高內存管理的效率,具體的原理和代碼就不深入討論了。

GTT VS. VRam

做過圖形研究的TX應該都了解GTT和VRam,GTT表示顯卡可以訪問的CPU主存,VRam表示顯存。 為什么要將這兩者進行比較呢? 因為對于軟件來說,GTT和VRam的地位是對等的,當軟件中(比如mesa驅動中)需要分配內存時,其可以選擇在內存上分配(分配標志設置為GTT相關的標記),也可以選擇在顯存上分配(分配標志設置為VRam相關的標記), 對于軟件來說,使用GTT或VRam并沒有功能上的影響,通常情況下,任意選哪種都沒有問題。 有影響的只是:

  • 性能。 對于顯卡,通常來說,顯示需要的內存在VRam上分配,性能可能會更好,因為相關內存上的內容最終可能都會拷貝到framebuffer中去,而在顯存內存區(qū)域之間的拷貝,顯然比內存到顯存之間的拷貝性能更好。
  • Cache一致性等問題。 對于部分硬件,Cache一致性問題可能是很多問題的根源,特別在涉及到CPU和GPU之間的同步和并發(fā)訪問時。 CPU和GPU對于GTT和VRam的訪問,可能會涉及到一些硬件的細節(jié)和特性,比如WC(Write Commbined)和UC(Uncached)特性,這些細節(jié)的處理,在非X86架構上尤其重要,特別是在驅動中,需要時刻考慮這些問題。

Framebuffer

再簡單聊下Framebuffer(后面有時間可單獨再聊),Framebuffer本質上就是一段緩存,通常就是顯存上的一段內存,其直接與最終顯示到終端上的內容對應,所有需要顯示到終端上的圖形內容都必須拷貝到Framebuffer中。

Framebuffer其實由多個buffer組成,這里不詳述。 但需要說明,通常Framebuffer中有前端和后端兩類buffer,就是我們平常見到的double buffer技術,目的是為了解決屏幕撕裂問題。 前端buffer直接對應于欲顯示的內容,需要顯示的數(shù)據(jù)先拷貝到后端buffer,再在一定的時機(比如vblank)將后端buffer的數(shù)據(jù)swap到前端,從而顯示出來。

總結

以上是生活随笔為你收集整理的显存(Video Memory)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。