DXGK_FLIPCAPS结构(d3dkmddi.h)
DXGK_FLIPCAPS 结构标识驱动程序通过调用其 DxgkDdiQueryAdapterInfo 函数提供的显示微型端口驱动程序的翻转功能。
语法
typedef struct _DXGK_FLIPCAPS {
union {
struct {
UINT FlipOnVSyncWithNoWait : 1;
UINT FlipOnVSyncMmIo : 1;
UINT FlipInterval : 1;
UINT FlipImmediateMmIo : 1;
UINT FlipIndependent : 1;
UINT DdiPresentForIFlip : 1;
UINT FlipImmediateOnHSync : 1;
#if ...
UINT Reserved : 25;
#elif
UINT Reserved : 27;
#else
UINT Reserved : 28;
#endif
};
UINT Value;
};
} DXGK_FLIPCAPS;
成员
FlipOnVSyncWithNoWait
UINT 值,该值指定驱动程序是否支持对下一个垂直回溯期(垂直同步)生效的翻转命令的计划,而不会导致图形管道停止,直到发生垂直同步。 也就是说,在驱动程序将翻转图面的物理地址写入硬件上的翻转寄存器后,图形管道必须立即继续。 尽管大多数硬件使用一个翻转寄存器的深度,但如果硬件使用多个翻转寄存器,驱动程序应指定 MaxQueuedFlipOnVSyncDXGK_DRIVERCAPS 结构的成员中的数字。
如果 FlipOnVSyncWithNoWait 设置为 1(TRUE),驱动程序支持此机制。 如果 FlipOnVSyncWithNoWait 设置为 0(FALSE),驱动程序不支持此机制。 也就是说,图形管道必须等到下一次垂直同步在计划翻转命令后才会对下一次垂直同步生效。
设置此成员等效于设置 32 位 值 成员的第一位(0x00000001)。
FlipOnVSyncMmIo
UINT 值,该值指定驱动程序是否支持对下一次垂直同步生效的基于内存的映射 I/O (MMIO) 翻转。若要支持这种类型的翻转,显示微型端口驱动程序必须支持以下作:
- 在 pDmaBuffer 成员中传递对 DxgkDdiPresent 函数的调用时,不会生成 DMA 缓冲区(也就是说,NULL 传入 DXGKARG_PRESENTpDmaBuffer 成员)。
- 在设备中断请求级别(DIRQL)上翻转调用其 DxgkDdiSetVidPnSourceAddress 函数。 在调用 DxgkDdiSetVidPnSourceAddress时,驱动程序应对数字到模拟转换器(DAC)进行编程,并使用 DXGKARG_SETVIDPNSOURCEADDRESS 结构的 PrimaryAddress 成员中的值启动扫描。垂直同步后,驱动程序应通过调用 DxgkCbNotifyInterrupt 函数,并在 InterruptType 结构 DXGKARGCB_NOTIFY_INTERRUPT_DATA 的成员中设置 DXGK_INTERRUPT_CRTC_VSYNC 值来通知 GPU 计划程序报告有效的扫描地址。 然后,驱动程序应调用 DxgkCbNotifyDpc 函数来执行大部分扫描处理。
FlipInterval
UINT 值,该值指定驱动程序是否支持在发生两次、三次或四次垂直同步后计划翻转命令生效。 无论驱动程序是否支持两个或更大的翻转间隔,驱动程序都必须支持即时翻转和一个翻转间隔。
设置此成员相当于设置 32 位 值 成员(0x00000004)的第三位。
FlipImmediateMmIo
UINT 值,该值指定驱动程序是否支持基于内存映射 I/O (MMIO) 的即时翻转。 此类型的翻转在调用驱动程序的 DxgkDdiSetVidPnSourceAddress 函数后立即生效,而无需等待下一次垂直同步发生。
设置此成员相当于设置 32 位 值 成员的第四位(0x00000008)。
从 Windows 7 开始支持。
FlipIndependent
一个 UINT 值,该值指定驱动程序是否支持独立的翻转。 WDDM 1.3 及更高版本的驱动程序必须将此成员设置为 1。
在 独立的翻转中,作系统尝试绕过桌面窗口管理器(DWM)用户模式的调用,并通过在 Direct Flip 和多平面覆盖呈现模型中调用 DxgkDdiPresent 并 DxgkDdiSetVidPnSourceAddress 来调用应用程序后退缓冲区。
请注意,即使设置了 FlipIndependent,也会发生 DWM 用户模式呈现调用的情况。 驱动程序仍必须处理此类情况。
设置此成员相当于设置 32 位 值 成员(0x00000010)的第五位。
从 Windows 8.1 开始支持。
DdiPresentForIFlip
FlipImmediateOnHSync
Reserved
此成员是保留的,应设置为零。 将此成员设置为零相当于将 32 位 值 成员的剩余 27 位(0xFFFFFFE0)设置为零。
此成员是保留的,应设置为零。 将此成员设置为零相当于将 32 位 值 成员的剩余 28 位(0xFFFFFFF0)设置为零。
Value
联合中的成员,该成员DXGK_FLIPCAPS包含可以保存标识翻转功能的 32 位值。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |