GPUView 翻轉佇列

下圖顯示主要 UI 的放大螢幕擷取畫面,並著重於翻轉佇列。 翻轉隊列顯示監視器的垂直同步 (VSync) 與來自應用程式的當前數據之間的關係。 UI 中翻轉佇列的位置與 GPU 硬體佇列直接相關。 如果系統上有兩個已採取此追蹤的適配器,您會看到一個 GPU 硬體佇列,後面接著一個翻轉佇列(每個監視器一個),然後是第二個 GPU 硬體佇列,後面再接著一個翻轉佇列(同樣,每個監視器一個)。

下圖表示超過三個資料幀。 使用此快照集時,會繪製前兩個 VSync 位置,以協助表示畫面。 (如需詳細資訊,請參閱 [事件清單] 對話方塊, 以取得啟用 VSync 的複選框。

GPUView UI 中翻轉佇列的螢幕擷取畫面。

翻轉隊列需要注意的是,它分為純色部分和交叉影線部分。 純色區段代表應用程式 (在此案例中為 DWM) 工作以產生需要顯示的內容的時間。 交叉影線部分代表資料在等候翻轉時刻(VSync)時的閒置時間。

放大該中心框架會顯示其與垂直同步信號的對齊方式。

放大螢幕擷取畫面顯示 Flip Queue 呈現的封包已對齊至垂直同步。

在這裡,翻轉隊列 0 與藍色 VSync 線對齊,而翻轉隊列 1 與綠色 VSync 線對齊,這一點更清楚一些。 另請注意,第二個目前封包會在 DWM 內容 CPU 佇列中選取 (以紅色醒目提示) ,而 GPUView 已醒目提示相關聯的翻轉佇列目前封包。

更仔細地查看該翻轉隊列當前資料包,您會看到純色部分代表當前資料包的開始和結束。 這是 GPU 執行 DMA 封包所要求工作的時段。 下列交叉影線區段顯示等待下一個時刻所花費的時間,以便向使用者顯示資料。 該時刻發生在顯示器上的垂直刷新 (VSync) 上。

下圖顯示與第二個監視器的關聯。

與 GPUView UI 中第二個監視器關聯的螢幕擷取畫面。

在這裡,選取了前一個封包上方的 DWM 展示封包(在此以紅色醒目提示),且 GPUView 已將相應的 Flip 佇列封包醒目提示。 請注意,工作 (即 GPU 處理 DMA 封包中資料所花費的時間) 比第一個畫面花費的時間更長。 結果是資訊會在第二幀結束時向使用者顯示。