支援多平面重疊不需要顯示驅動程式和硬體。 不過,若要提供多平面重疊支援,硬體必須符合下列需求:
- 硬體必須支援非重疊平面:
- 一個平面可以涵蓋螢幕的一部分,而另一個平面可以涵蓋螢幕的不同互斥部分。
- 如果平面未涵蓋螢幕的任何部分,硬體必須掃描該區域的黑色。 硬體可以假設最下層 圖層 順序上有一個以黑色填滿的虛擬平面。
- 硬體必須支援重疊平面:
- 硬體必須能夠啟用或停用個別平面的Alpha混合。 (Alpha 混合是一種技術,其中來源位圖中的色彩會與目的地位圖中的色彩結合,以產生新的目的地位圖。)
- 必須支援使用預先乘法 Alpha 在平面之間混合。
- 當只有一個輸出目標作用中時,作用中的輸出必須支援多平面重疊。 在複製模式中,如果有多個輸出同時作用中,硬體就不應該報告它支援多平面重疊,除非所有作用中的輸出都支援多平面重疊。
- 桌面視窗管理員 (DWM) 的交換鏈 (平面 0) 必須能夠與其他重疊平面互動。
- 所有平面都必須能夠啟用和停用,包括平面 0 (DWM 的交換鏈) 。
- 所有平面都必須支援來源和目的地裁剪,包括平面 0 (DWM 的交換鏈) 。
- 至少一個平面必須支援壓縮和延展,與其他可能啟用的平面無關。
- 支援縮放的平面必須同時支援雙線性篩選和篩選品質,比雙線性更好。
- 如需詳細資訊,至少一個平面必須支持這些 YUV 格式 (,請參閱 Windows 8.1) 中的 YUV 格式範圍:
- 適用於 YUV 格式的 BT.601 和 BT.709 YUV 到 RGB 矩陣轉換。
- 標準 (或 Studio) 範圍 YUV 亮度 (16 - 235) 和延伸範圍的 YUV 亮度 (0 - 255) 。
- 硬體必須處理這些緩存器閂鎖案例:
- 每個平面的所有屬性 (緩衝區位址、裁剪、縮放等) 必須在垂直回溯期間不可部分完成地張貼。 更新快取器區塊時,它們必須全部以不可部分完成的方式張貼,例如,如果在寫入 20 個與重疊平面相關的 10 個緩存器之後發生 VSync,則它們都不會張貼到下一個 VSync,因為它們無法全部張貼到目前的 Vsync) 。
- 每個平面都可以與其他平面分開更新。 例如,如果在 VSync 之前更新了平面 0 緩存器,而稍後的平面 1 緩存器會在 VSync 發生時更新,則平面 1 更新可能會等到下一個 VSync,但平面 0 更新應該會及時發生。
- 在單一目前呼叫期間更新多個平面時,應該會以不可部分完成的方式進行更新。 例如,如果單一存在呼叫正在更新平面 0 並啟用平面 1,除非平面 1 快存器也會張貼在相同的 VSync 上,否則平面 0 快取器不應該張貼在 VSync 上。
- 轉換、縮放和混合應該依下列順序發生:
來源配置會根據指定的來源矩形裁剪。 來源矩形保證系結在來源配置的大小內。
套用水準影像翻轉,若有要求,則會套用垂直影像翻轉。
根據目的地矩形套用縮放比例、根據裁剪矩形套用裁剪,並在縮放時套用適當的篩選。
與其他圖層的配置混合。 混合應該從上到下執行 (,或直到以 迭置順序叫用不透明圖層) 為止。 如果要求Alpha混合,硬體必須接受每圖元Alpha,且色彩值會預先乘以Alpha。 下列虛擬程式代碼會從上到下重複地對目的地作業執行來源, ( ( (Layer[0] over Layer[1]) over Layer[2]) over ¦ Layer[n]) 。 在目的矩形之外,每個圖層都必須視為透明 (0,0,0,0,0) 。
Color = Color[0]; // Layer 0 is topmost. Alpha = Color[0].Alpha; for (i = 1; Alpha < 1 && i < LayersToBlend; i++) { Color += ((1 - Alpha) * Color[i]); Alpha += ((1 - Alpha) * Color[i].Alpha); } Output Color;
只要輸出結果相同,硬體就可以從下到上混合。 在此情況下,應該使用下列混合演算法:
Color = Color[LayersToBlend-1]; // Bottom-most layer Alpha = Color[LayersToBlend-1].Alpha; if (LayersToBlend > 1) { for (i = LayersToBlend - 2; Alpha < 1 && i >= 0; i--) { Color = Color[i] + ((1 - Color[i].Alpha) * Color; Alpha = Color[i].Alpha + (1 - Color[i].Alpha) * Alpha; } } Output Color;
黑色必須顯示在任何圖層的任何目的地矩形未涵蓋的區域。 硬體可以假設有一個概念性的虛擬最下層黑色層,也就是螢幕大小。