通用UI元件性能
本節描述大多數UI元件使用的一般TouchGFX渲染操作的性能。
圖形繪製
圖形繪製是TouchGFX中最基本的繪製操作之一,因為幾乎所有UI組件在某種程度上都依賴於繪製一幅或多幅圖形。 因此,系統具有快速有效地繪製圖形的能力通常是非常重要的。 影響圖形繪製性能的因素有很多。 然而,在幾乎所有硬體設置中,與其他繪製操作相比,TouchGFX圖形繪製被認為是一種快速操作。
資料拷貝的硬體支援
TouchGFX以選定的圖像格式(如RGB565、L8、ARGB8888)儲存未壓縮的圖像資料。 未壓縮格式的優點是,在大多數情況下,它允許TouchGFX直接使用圖像,並且不加修改地將其傳輸到影像緩衝區。 如果MCU有DMA,則可以並且應該將其用於記憶體拷貝,因為這可以加快傳送速率並使MCU負載降至最低。
該方法的一個限制是如果圖像格式包含alpha通道, 則不能使用正常的DMA傳輸,因為MCU需要將圖像資料與影像緩衝器的像素進行混合。 然而,如果您使用的是帶圖形加速功能(如Chrom-ART / DMA2D)的STM32,也可以為這些類型的圖像使用DMA。 此時,DMA不僅能夠複製資料,而且可以一次性完成複製和混合操作,從而大大提高速度並降低MCU負載。
圖像格式
圖像格式對圖像繪製性能也有影響,具體取決於您擁有的硬體支援。 一個經驗法則是,您要傳輸的資料越少,傳送速率就越快。 因此,在大多數情況下,RGB565圖像的傳送速率應快於類似的RGB888圖像,因為RGB565圖像的大小是對等RGB888圖像的三分之二。
存取圖像資料
存取圖像資料所需的時間非常重要,因為每次渲染圖像時都會存取圖像資料。 在TouchGFX應用中,圖像資料可以存儲在不同的硬體位置(存取時間也不同)。
圖像資料位置 | 說明 |
---|---|
外部Flash | 外部Flash的優點在於低成本和容量優勢(通常相當大),允許您在應用中有很多圖像。 然而,存取時間差別很大,但選擇QSPI或類似的替代方案可以實現高吞吐率,從而顯著提高圖像繪製性能。 |
外部RAM | 在某些情況下,您可能需要在外部RAM中快取您的圖像。 當你被迫使用非記憶體映射Flash(例如NAND、EMMC)時,這種情況就會經常發生不能直接在TouchGFX中進行圖像渲染。 在這種情況下,對外部RAM的存取對於您應用中的圖像繪製性能至關重要。 |
內部Flash | 在某些情況下,您可以在內部flash中存儲部分或全部圖像,即使這裡的存儲空間非常有限。 存取速度非常快,所以如果您有一些對於動畫來說必不可少的圖像並且性能是一個問題(例如,如果圖像被紋理映射器使用),可以嘗試將其存儲在內部flash中(如果可能的話)。 |
內部RAM | 在非常罕見的情況下,您將從內部RAM渲染圖像。 存儲空間非常有限,但存取速度非常快,所以存儲在這裡(使用TouchGFX圖像快取)的圖像將被非常快速地渲染。 |
存取影像緩衝區
渲染圖像總是會在對影像緩衝區的更新後結束。 如果圖像包含alpha通道,則不僅要在影像緩衝區中寫入像素資料,還要讀取像素資料以執行實際混合。 因此,對用於存儲影像緩衝區的RAM的讀/寫存取時間是獲得良好的圖像繪製性能的關鍵。
圖像解析度
由於需要傳輸的資料與圖像解析度成正比,圖像解析度自然會對圖像繪製操作產生影響。
透明度
圖像的不透明度會影響圖像的渲染時間。 帶有alpha通道的圖像的渲染時間比不帶alpha通道的圖像長,因為它必須與影像緩衝區混合。 因此,混合操作必須從影像緩衝區讀取資料,而實體圖像只需要覆蓋影像緩衝區中的資料。 即使有硬體加速,情況也是如此。 然而,渲染實體和半透明圖像之間的比率可能會因設置的不同而變化。
MCU繪圖
一些小部件依賴於直接的影像緩衝區操作。 這種方法對無效區域中的每個像素執行一次或多次計算,然後更新影像緩衝區中的像素。 這是一個相當緩慢的操作,如果對每個像素進行的計算比較複雜時,速度更是緩慢。
如果MCU繪圖要執行大量計算,那麼MCU的處理能力必不可少。 對影像緩衝區的存取(對內部或外部RAM的存取)也會產生影響,因為對影像緩衝區的資料寫入(也可能是讀取)是針對失效區域的每個像素進行的。
畫布小部件
畫布小部件是一種特殊的TouchGFX小部件,用於繪製抗鋸齒的幾何形狀。 它們通常是相當複雜的,因此渲染速度可能非常緩慢。
渲染時間與幾何形狀的無效部分的大小成線性關係。
畫布小部件需要一個存儲區來存儲中間計算結果。 其大小和性能影響在畫布小部件一節中介紹。
Tip
circle::updateArc(...)
,該操作不會使整個圓失效,只會使已更改的部分失效。 確保使用這些類型的操作以獲得最佳性能。文字
文字渲染依賴於圖像繪製,因為所有使用的字元都被轉換成“文字”一節所描述的圖像。 這些圖像採用A4格式,基本上是圖像中的每個像素擁有一個4位元alpha值。 如果在該圖案上應用一種顏色,會得到包含一個字元的抗鋸齒圖像。
由於文字渲染是一組圖像繪製操作(每個字元一次操作),圖像繪製的性能特徵也適用于文字渲染,包括使用硬體加速(如Chrom-ART / DMA2D)進行性能改進。