下图显示了主 UI 的放大屏幕截图,其中焦点位于翻转队列上。 翻转队列显示监视器的垂直同步(VSync)与应用程序中的当前数据之间的关系。 UI 中翻转队列的位置与 GPU 硬件队列直接相关。 如果在执行此跟踪的系统上有两个适配器,您将看到一个 GPU 硬件队列,接着是其翻转队列(每个监视器一个),然后是第二个 GPU 硬件队列,再次接着是其翻转队列(同样每个监视器一个)。
下图表示略多于三个的数据帧。 使用此快照,绘制前两个 VSync 位置以帮助表示帧。 (有关详细信息,请参阅 事件列表对话框,其中包含用于启用 VSyncs 的复选框。)
翻转队列需要注意的是,它分为纯色部分和交叉分区。 纯色部分表示应用程序(在本例中为 DWM)生成需要显示的内容的时间。 交叉部分表示数据等待翻转时刻(VSync)的空闲时间。
放大中心帧会显示 VSyncs 的对齐方式。
在这里,可以更清楚地看出翻转队列 0 与蓝色 VSync 行对齐,翻转队列 1 与绿色 VSync 行对齐。 还请注意,在 DWM 上下文 CPU 队列中选择了第二个当前呈现包(以红色突出显示),GPUView 突出显示了关联的翻转队列呈现包。
仔细查看该Flip Queue显示包,可以看到纯色部分表示显示包的开始和结束。 这是 GPU 执行 DMA 数据包请求的工作的时间段。 以下交叉部分显示等待下一刻可以向用户显示数据的时间。 这一刻发生在显示器上的纵向同步(VSync)。
下图显示了与第二个监视器的关联。
在这里,选择上一个数据包上方的 DWM 演示数据包(此处以红色突出显示),GPUView 突出显示了对应的翻转队列数据包。 请注意,GPU 处理 DMA 数据包中的数据所花费的工作时间比第一帧长。 信息在第二帧末尾显示给用户。