01-Metal框架介紹

Metal框架介紹

Metal 2014年WWDC首次走入移動領(lǐng)域.

Metal Kit

目的:就是讓iOS開發(fā)者用極少的代碼,解決Metal渲染問題.讓開發(fā)變的更加輕松,方便,快速.
視圖管理: MTKView.

經(jīng)典GPU架構(gòu)

在繼續(xù)下面的學習前,我們先了解一下經(jīng)典的GPU的架構(gòu).GPU是大規(guī)模并行機器。


上圖中,展示了Vertex Stage(頂點階段)和Fragment Stage(片段階段)進行了多次重復和并行運算基本的GPU經(jīng)典架構(gòu)上處理片元并且產(chǎn)生深度和顏色數(shù)據(jù)緩存區(qū)和紋理.在這個架構(gòu)中有一個具有決定性的特性,就是Vertex Stage(頂點階段)的輸出,直接提供給Fragment Stage(片元階段)

TBDR GPU結(jié)構(gòu)

Tile- based Deferred Rendering Architecture的架構(gòu)


所有的A-series的GPU,都是基于TBDR架構(gòu).也就是說所有的A11的都是基于TBDR架構(gòu).

TBDR也是有所優(yōu)化的.第一主要不同的就是Vertex Stage的輸出不再直接提供給Fragment Stage.不同的,當基元從Vertex State輸出時,它們將置于對齊屏幕的小圖塊中并且存儲到內(nèi)存里.


這樣的改變, 使得Vertex Stage可以與Fragment Stage相對的異步運行. 當一個渲染通道的Fragment Stage運行時, 硬件可以在為了的渲染通道并執(zhí)行Vertex Stage, 異步運行Vertex Stage. 可以大幅度的提高性能. Vertex Stage常常被固定功能硬件大量使用. 而Fragment Stage, 在數(shù)據(jù)和寬帶處理領(lǐng)域廣泛應用完全重疊兩者使得我們可以同時使用GPU上的所有硬件模塊. 把基元置于圖塊使我們可以在一個圖塊里處理所有的基元.

那我們來看看如果利用這個特性.

我們在著色器核心附近的芯片上, 置入圖塊大小完整分辨率的深度緩沖區(qū)模板緩存區(qū)和幀緩存器.我們將這個內(nèi)存稱為圖塊內(nèi)存.


圖塊內(nèi)存有3個特性
●第一著色器內(nèi)核與圖塊內(nèi)存之間的帶寬比GPU和外部存儲之間的帶寬, 高出很多倍. 比例與著色器內(nèi)核的數(shù)據(jù)相當
●第二圖塊內(nèi)存的訪問延遲與外部存儲的方面要低很多倍
●最后, 圖塊內(nèi)存與外部存儲相比,大大減少了用電量.

TBDR, 為2種主要的優(yōu)化使用了這種低延遲, 低能耗, 高帶寬的內(nèi)存首先這種圖塊的深度/模板內(nèi)存使得硬件可以為不透明的目標在著色器內(nèi)核處理之前生成完整的深度和模板緩存信息. 這樣硬件就可以在輸送給著色器內(nèi)核之前,完全剔除阻塞的片段. 如果后面的渲染通道, 不需要深度緩沖,那么這種全尺寸深度緩沖區(qū)就可以了. 通過無記憶的渲染目標, 完全忽略. 節(jié)省了大量的內(nèi)存帶寬存儲空間和電量. 其次圖塊內(nèi)存被用于在芯片上存儲顏色緩存區(qū), 混合操作會很快, 因為不再需要從外部存儲獲取全尺寸幀緩沖. 當全部圖塊運行完畢的時候, 圖塊內(nèi)存只被寫入一次. 這樣節(jié)省了一大部分的電量和帶寬。提高了性能, 由于這個內(nèi)存的速度更快, 所以現(xiàn)在占用率更高了. 有了幀緩存區(qū),你可以使用自定義的混合. 并啟用多種先進的技術(shù)與無記憶的幀緩存區(qū)器結(jié)合.

這樣,很多技術(shù)都無需消耗外部存儲. 所以即使帶寬有限, TBDR, 也可以表現(xiàn)出優(yōu)越的性能. TBDR消耗更低的電量. 這對電池驅(qū)動設(shè)備十分重要.

A11 GPU架構(gòu)

現(xiàn)在讓我們回到A11的GPU.上面,在A11上蘋果做出第一個GPU架構(gòu)的改變是

你可以對你的片段函數(shù)中的圖塊內(nèi)存上面的數(shù)據(jù)進行直接控制. imageblock為獲取圖塊內(nèi)存中的圖像數(shù)據(jù),提供了優(yōu)化通道. 你將可以使用對你的APP有意義的方式, 來布置像素而且仍然可以高效的渲染. 在imageblock是一個圖塊內(nèi)存中的2D的數(shù)據(jù)結(jié)構(gòu), 你可以指定它的寬度, 高度, 深度和格式, Metal 2在著色語言中, 增加了紋理像素格式. 目的是通過打包的數(shù)據(jù)類型, 讓你擁有對像素布局的全部控制.

第二個主要 架構(gòu)優(yōu)化

讓你可以同時獲取圖塊內(nèi)存中,存儲的所有像素.圖塊著色是Apple A11 GPU上新.的可編程階段,與渲染通道一起提供計算功能.圖塊著色在Metal2中展現(xiàn)了全新的水平的性能和效率.渲染和計算操作現(xiàn)在能以更高的帶寬更低的延遲和更低的能:耗.通過圖塊內(nèi)存共享數(shù)據(jù).圖塊著色與imageBlock緊密結(jié)合.你可以分析imageBlock的內(nèi)容,總結(jié)內(nèi)容存儲imageBlock的Mid-Scene(進程數(shù)據(jù))甚至修改imageblock的布局,你還可以使用線程組內(nèi)存.就像一個平常 的計算內(nèi)核一樣使用.對于圖塊著色器來說,線程組內(nèi)存是持續(xù)不斷的.任何一個圖塊的連續(xù)調(diào)用,都可操作于線程組內(nèi)存.起始于此的圖塊著色器留下的值,這同樣適用于imageblock內(nèi)存.它們在圖塊和片段的調(diào)用之間,連續(xù)不斷.

除此以外還有Raster Order Group(光柵掃描順序組)的高級版本.這個版本支持imageBlock和圖塊著色,并且最終Apple拓展了Metal的著色語言.賦予你對不同樣本的imageblock的全部控制.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容