PFND3DDDI_CHECKDIRECTFLIPSUPPORT回调函数 (d3dumddi.h)

由桌面窗口管理器 (DWM) 调用,以验证用户模式驱动程序是否支持直接翻转操作,其中视频内存在应用程序的托管主分配和 DWM 的托管主分配之间无缝翻转。

语法

PFND3DDDI_CHECKDIRECTFLIPSUPPORT Pfnd3dddiCheckdirectflipsupport;

HRESULT Pfnd3dddiCheckdirectflipsupport(
  HANDLE hDevice,
  D3DDDIARG_CHECKDIRECTFLIPSUPPORT *unnamedParam2
)
{...}

参数

hDevice

显示设备的句柄 (图形上下文) 。

unnamedParam2

pData [in, out]

指向 D3DDDIARG_CHECKDIRECTFLIPSUPPORT 结构的指针,该结构定义操作的参数。

返回值

如果操作未成功执行,则返回S_OK或相应的错误结果。

注解

在 DWM 尝试呈现给直接翻转交换链之前,至少调用一次此函数。 它还会在每次模式更改后调用,或者在 DWM 出于任何原因重新创建其自己的交换链之后调用。

用户模式驱动程序应确保应用程序的托管主分配和 DWM 具有以下兼容资源:

  • 立体声资源。
  • 多个示例抗锯齿 (MSAA) 格式。
  • 重排格式。 如果重排只能在每个 VSync 间隔更改,请确保D3DDDI_CHECK_DIRECT_FLIP_FLAGS结构的 CheckDirectFlipFlags 成员的值不为 D3D11_1DDI_CHECK_DIRECT_FLIP_IMMEDIATE
  • 应在 D3DDDI_ALLOCATIONINFO 结构中使用相同的 VidPnSourceId 值创建这两个托管主分配。
  • 显示适配器配置已链接。
用户模式驱动程序可能需要调用内核模式驱动程序来执行这些验证。 为此,请调用 pfnEscapeCb 回调函数,然后调用 DxgkCbGetHandleData 函数以访问内核模式驱动程序的资源分配数据。

由于 DWM 通常使用可能的最高 Microsoft Direct3D 功能级别创建自己的设备,因此如果硬件支持高于版本 9.3 的 Direct3D 设备驱动程序接口 (DDI) ,DWM 将不会调用此函数。 但是,任何 Microsoft Direct3D 9 驱动程序都应实现此函数以启用 Direct Flip 用户体验。

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDI_CHECK_DIRECT_FLIP_FLAGS

D3DDDI_DEVICEFUNCS