通过


GPUView 翻转队列

下图显示了主 UI 的放大屏幕截图,其中焦点位于翻转队列上。 翻转队列显示监视器的垂直同步(VSync)与应用程序中的当前数据之间的关系。 UI 中翻转队列的位置与 GPU 硬件队列直接相关。 如果在执行此跟踪的系统上有两个适配器,您将看到一个 GPU 硬件队列,接着是其翻转队列(每个监视器一个),然后是第二个 GPU 硬件队列,再次接着是其翻转队列(同样每个监视器一个)。

下图表示略多于三个的数据帧。 使用此快照,绘制前两个 VSync 位置以帮助表示帧。 (有关详细信息,请参阅 事件列表对话框,其中包含用于启用 VSyncs 的复选框。)

GPUView UI 中翻转队列的屏幕截图。

翻转队列需要注意的是,它分为纯色部分和交叉分区。 纯色部分表示应用程序(在本例中为 DWM)生成需要显示的内容的时间。 交叉部分表示数据等待翻转时刻(VSync)的空闲时间。

放大中心帧会显示 VSyncs 的对齐方式。

翻转队列的放大屏幕截图显示了与 VSync 对齐的数据包。

在这里,可以更清楚地看出翻转队列 0 与蓝色 VSync 行对齐,翻转队列 1 与绿色 VSync 行对齐。 还请注意,在 DWM 上下文 CPU 队列中选择了第二个当前呈现包(以红色突出显示),GPUView 突出显示了关联的翻转队列呈现包。

仔细查看该Flip Queue显示包,可以看到纯色部分表示显示包的开始和结束。 这是 GPU 执行 DMA 数据包请求的工作的时间段。 以下交叉部分显示等待下一刻可以向用户显示数据的时间。 这一刻发生在显示器上的纵向同步(VSync)。

下图显示了与第二个监视器的关联。

GPUView UI 中与第二个监视器关联的屏幕截图。

在这里,选择上一个数据包上方的 DWM 演示数据包(此处以红色突出显示),GPUView 突出显示了对应的翻转队列数据包。 请注意,GPU 处理 DMA 数据包中的数据所花费的工作时间比第一帧长。 信息在第二帧末尾显示给用户。