顯示控制器的用途為何?

顯示控制器 (DC) 負責將一或多個來源圖片組合至顯示輸出信號。部分 DC 可以平行產生多個輸出信號,例如驅動多個螢幕。本文將簡單介紹常見的硬體元件,協助您瞭解可用於開發驅動程式庫的常用簡單和未註解資料表。

用來複合輸出圖片的硬體子集通常稱為管道。管道由輸入「平面」、色彩校正和混合/合成階段組成。

每個平面都有具有自身尺寸、位置、像素格式色域Gamma 校正和混合行為的來源圖片。管道必須經過程式設計,才能正確解碼、轉換、色彩校正,並將這些平面混成最終顯示圖片。

編碼器會處理最終顯示圖片,並將原始像素資料與時間產生器結合,以為連接器通訊埠 (DisplayPort、HDMI、DVI 等) 編碼為正確的電子訊號。

平面類型

螢幕
「螢幕尺寸」是正常混合的平面。
重疊
重疊是一種使用色鍵透明透明度的平面。此平面類型的常見用途是在影片播放上方算繪媒體控制項:軟體會在 (大) 靜態內容上打孔,讓硬體加速視訊解碼器將內容轉儲到重疊顯示的第二個平面上。
雪碧
現在,許多驅動程式庫開發人員會使用「精靈」一詞,指稱任何並非做為主要內容的飛機。以往,Sprite 常用於將靜態圖片的重複使用情形進行精簡編碼。這種類型在 80 年代個人電腦和 80 至 90 年代電玩遊戲主機的記憶體有限環境中非常熱門。
遊標:
遊標通常較小,且提供有限的色域選項。它們可用來在靜態內容上重疊遊標。大部分的軟體會調整這個平面的位置,方法是調整其位置,而且只會偶爾變更來源圖片。

色域

色域包含色彩模型 (例如 RGB 或 CMYK),以及可將該色域中的值轉換成參照空間 (例如 CIELAB 或 CIEXYZ) 的對應函式。

數位圖片處理和顯示所用的色域大致可分為兩種:實體/線性和感知/以 Gamma 編碼。線性空間中的顏色可以用實體準確的方式組合及轉換,例如,將值加倍表示「光是五分之一」就是這些數值。感知色彩空間的用意是模仿非線性人類視覺感知,因此請將值加倍表示「亮度為兩倍」。

像素格式

Pixel 的格式和色域通常容易混淆,導致顏色準確度錯誤。例如,使用 RGB_888_24 像素格式:每個像素的格式都是採用 (R、G、B) 位元組的三元組,但您不知道三重是 sRGB、Adobe RGB 或線性 RGB 色域中的點。如果將不同色域的兩個值合併 (例如新增這些值),產生的像素值可能實際不正確。

DC 必須編寫程式,將每個平面的圖片轉換為線性色域,將其全部合併,並將產生的圖片轉換為適合輸出裝置的色域。顯示器須支援至少 sRGB 的 HDMI 規格。

Gamma 校正

詳情請參閱 Novak 撰寫的這篇優質網誌文章

大多數靜態數位圖片都會採用 sRGB 色域,這也是電腦螢幕最支援的格式。不過,為了正確合成這類圖片並在螢幕上顯示,控制器必須把每個平面圖像轉換成線性色域 (「degamma」),然後混合這些圖片,再轉換回 sRGB 和螢幕支援的像素格式。

EDID

擴充顯示識別資料 (EDID) 是一種 VESA 中繼資料格式,用於向影片來源說明裝置的功能。許多螢幕都會透過 EDID 公開顏色格式和輸出功能。//src/graphics/display/lib/edid 可用來剖析這項資訊,並調整 Gamma 和色彩校正程式設計,以達到更高的擬真度。

EDID 的欄位不一定適用於所有顯示裝置,例如投影機沒有實體尺寸。

鏗鏘

管線是顯示控制器作業理論中的常見抽象層。每個管道都專門產生單輸出映像檔,以供在通訊埠上進行編碼。管道的最終輸出是採用適當格式的像素資料,並採用 Gamma 編碼以供目標顯示。透過這種區隔責任區分,驅動程式可以用相同的最終圖像做為多個編碼器/通訊埠組合的輸入內容,以支援顯示「鏡像」模式。

連接埠

通訊埠是實體連接器,可用來連接一或多個螢幕。通訊埠類型範例包括 DisplayPortHDMIDVIVGA。部分通訊埠規格允許透過串連 (例如 DisplayPort 的多串流傳輸 (MST)) 連接多個螢幕。

編碼器

編碼器會將管道的輸出圖片轉換成由一或多個通訊埠傳送的信號。舉例來說,HDMI 連接器採用 8b/10b 編碼的 TMDS

顯示時間

顯示時間是一組間隔,說明如何將特定面板的信號編碼。雖然這些間隔與顯示模式相關 (解析度、色彩深度、刷新率),但也包含不會傳送像素內容的信號部分,例如從廣播電視開始那天就已保留的垂直空白間隔本文將說明時間的細節。