多平面覆盖 VidPN 呈现

使用多平面覆盖时,这些要求适用于用于在视频演示网络(VidPN)中的多个图面上存在的函数:

DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay

  • 如果 DXGK_MULTIPLANE_OVERLAY_PLANE启用 为 false,显示微型端口驱动程序应禁用指定的平面。
  • 如果在上一次调用 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay 时启用了平面,但在当前调用中不存在该平面,则驱动程序应继续显示该平面而不翻转其内容。
  • 在同一 VSync 期间,驱动程序可能会收到对 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay 的多个调用(一个调用用于交换一个显存平面,另一个调用用于交换不同的显存平面)。 在这种情况下,驱动程序应处理这两个调用。
  • 传递的数据应该已由受信任的源在用户模式下进行验证。 但是,显示微型端口驱动程序仍应检查数据,以确保它不会导致问题。 如果数据不正确,驱动程序可以以 STATUS_INVALID_PARAMETER 错误代码来中止调用,但此类故障可能无法妥善处理,并且意味着操作系统或用户模式驱动程序中存在 bug。

DxgkDdiSetVidPnSourceVisibility
在调用此函数时,如果DXGKARG_SETVIDPNSOURCEVISIBILITYVisible在给定源上设置为FALSE,则必须禁用所有硬件平面,包括用于主表面的层。 当 Visible 设置为 TRUE 时,必须仅启用用于主图面的平面,并且所有其他平面必须保持禁用状态。

DxgkDdiSetVidPnSourceAddress
调用此函数时,驱动程序应禁用所有非主覆盖平面。 在多平面覆盖模式下,主图面使用 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay 进行翻转。