Vivante GPU簡介

目錄編程

1. IMX6Q中Vivante GPU簡介    1架構

1.1    IMX6Q中GPU型號    1框架

1.2    Vivante GC2000硬件架構    1佈局

2. Vivante GPU使用的圖形API簡介    2spa

2.1    OpenGL ES    2操作系統

2.2    EGL    2設計

2.3    Vivante GPU軟件框架    3接口

 

 

  1. IMX6Q中Vivante GPU簡介

  2. IMX6Q中GPU型號

    在imx6q中有3個vivante的GPU,分別是GC2000、GC320、GC355。GC2000負責3D圖形的加速,GC320負責2D圖形的加速,GC355負責矢量圖形的加速。如圖 11所示:遊戲

    圖 11 Vivante GPU簡介ip

  3. Vivante GC2000硬件架構

    圖 12 GC2000硬件架構

    圖 12表示的是GC2000 GPU的硬件架構,各模塊的具體做用以下:

    Host Interface:GPU和CPU還有內存通信的接口。

    Memory Controller:GPU內存控制器。

    Graphics Pipeline Front End:至關於GPU內部的DMA,用於從內存中取指令和數據給GPU處理。

    Ultra-threaded Unifed Shader:統一着色器,便可用做頂點着色器(vertex shader)也能用做片元着色器(fragment shader)。用做vertex shader時主要負責幾何變換和光照計算,用做fragment shader時主要負責處理貼圖數據和計算像素顏色。

    3D Rendering Engine:負責將三角形和線段轉換爲像素(光柵化),計算三角形面的顏色屬性等。

    Texture Engine:用於材質貼圖的處理。

    Pixel Engine/Resolve:負責像素透明處理,可見平面的測定和抗鋸齒的一些處理,並將GPU處理完成的圖像數據輸出到frambuffer。

  4. Vivante GPU使用的圖形API簡介

  5. OpenGL ES

    OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三維圖形 API 的子集,針對手機、PDA和遊戲主機等嵌入式設備而設計。OpenGL ES 是從 OpenGL 裁剪的定製而來的,去除了四邊形、多邊形等複雜圖元等許多非絕對必要的特性。OpenGL ES 1.x 針對固定pipeline硬件,OpenGL ES 2.x 針對可編程pipeline硬件。

  6. EGL

    OpenGL是一個操做GPU的API,它經過驅動向GPU發送相關指令,控制pipeline狀態機的運行狀態。但OpenGL須要與本地視窗系統進行交互,這就須要一箇中間控制層,最好與平臺無關,EGL所以被獨立的設計出來,它做爲OpenGL ES和本地窗口的橋樑。

    EGL API 是獨立於OpenGL ES各版本標準的獨立API ,其主要做用是爲OpenGL指令建立 Context 、繪製目標Surface 、配置Framebuffer屬性、Swap提交繪製結果等。此外,EGL爲GPU廠商和OS窗口系統之間提供了一個標準配置接口。通常來講,OpenGL ES中pipeline的狀態被存儲於EGL管理的一個Context中。而Frame Buffers 和其餘繪製Surfaces 經過EGL API進行建立、管理和銷燬。 EGL 同時也控制和提供了對設備顯示和可能的設備渲染配置的訪問。

    圖 21爲一個典型的EGL系統佈局。應用程序經過調用EGL API進行window、surface、context的初始化,接着經過調用OpenGL ES的API進行設置context等,最後調用GPU渲染API進行渲染。

     

    圖 21典型EGL系統佈局

  7. Vivante GPU軟件框架

    圖 22表示的是Vivante GPU的軟件框架。GAL Driver是爲了下降跨平臺(操做系統,硬件平臺)移植的難度而設計的一套API,包括用戶層驅動:主要提供GAL API給開發者使用;內核層驅動:主要負責管理對GPU硬件的操做。

    在實際使用中,圖中的EGL、OpenGL ES等圖形庫以動態庫形式被使用,用戶層的GAL Driver也以動態庫形式被使用,內核層的GAL Driver之內核模塊驅動形式被使用。

    圖 22 Vivante GPU框架

相關文章
相關標籤/搜索