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