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 值,指定驱动程序是否支持计划翻转命令,该命令将在下一个垂直回溯期 (垂直同步) 生效,而不会导致图形管道停止,直到发生垂直同步。 也就是说,在驱动程序将翻转图面的物理地址写入硬件上的翻转挂起寄存器后,图形管道必须立即继续。 尽管大多数硬件使用一个翻转挂起寄存器的深度,但如果硬件使用多个翻转挂起寄存器,驱动程序应在DXGK_DRIVERCAPS结构的 MaxQueuedFlipOnVSync 成员中指定该数字。

如果 FlipOnVSyncWithNoWait 设置为 1 (TRUE) ,则驱动程序支持此机制。 如果 FlipOnVSyncWithNoWait 设置为 0 (FALSE) ,则驱动程序不支持此机制。 也就是说,图形管道必须等到下一次垂直同步在计划翻转命令后发生,才能在下一个垂直同步上生效。

设置此成员等效于设置 32 位 Value 成员 (0x00000001) 的第一位。

FlipOnVSyncMmIo

一个 UINT 值,该值指定驱动程序是否支持内存映射 I/O (基于 MMIO) 的翻转,该翻转在下一个垂直同步中生效。若要支持这种类型的翻转,显示微型端口驱动程序必须支持以下操作:

  • 没有生成 DMA 缓冲区来传入对其 DxgkDdiPresent 函数的调用, (即,NULLDXGKARG_PRESENT 结构的 pDmaBuffer 成员中传递) 。
  • 在设备中断请求级别翻转对其 DxgkDdiSetVidPnSourceAddress 函数的调用 (DIRQL) 。 在调用 DxgkDdiSetVidPnSourceAddress 时,驱动程序应 (DAC) 对数模转换器进行编程,并使用 DXGKARG_SETVIDPNSOURCEADDRESS 结构的 PrimaryAddress 成员中的值开始扫描。垂直同步后,驱动程序应通知 GPU 计划程序报告有效的扫描地址,方法是使用在 DXGKARGCB_NOTIFY_INTERRUPT_DATA 结构的 InterruptType 成员中设置的 DXGK_INTERRUPT_CRTC_VSYNC 值调用 DxgkCbNotifyInterrupt 函数。 然后,驱动程序应调用 DxgkCbNotifyDpc 函数来执行大部分的扫描输出处理。

FlipInterval

一个 UINT 值,该值指定驱动程序是否支持计划翻转命令,以在发生两次、三次或四次垂直同步后生效。 无论驱动程序是否支持 2 个或更大的翻转间隔,驱动程序都必须支持即时翻转和 1 个翻转间隔。

设置此成员等效于设置 32 位 Value 成员 (0x00000004) 的第三位。

FlipImmediateMmIo

一个 UINT 值,该值指定驱动程序是否支持内存映射 I/O (MMIO) 的即时翻转。 此类翻转在调用驱动程序的 DxgkDdiSetVidPnSourceAddress 函数后立即生效,无需等待下一次垂直同步发生。

设置此成员等效于设置 32 位 Value 成员 (0x00000008) 的第四位。

从 Windows 7 开始受支持。

FlipIndependent

一个 UINT 值,该值指定驱动程序是否支持独立翻转。 WDDM 1.3 及更高版本的驱动程序必须将此成员设置为 1。

独立翻转中,操作系统尝试绕过桌面窗口管理器 (DWM) 用户模式演示调用,并通过在 Direct Flip 和多平面覆盖表示模型中调用 DxgkDdiPresentDxgkDdiSetVidPnSourceAddress 来翻转到应用程序后退缓冲区。

请注意,在某些情况下,即使设置了 FlipIndependent ,也会进行 DWM 用户模式演示调用。 驱动程序仍必须处理此类情况。

设置此成员等效于设置 32 位 Value 成员的第五位 (0x00000010) 。

从 Windows 8.1 开始支持。

DdiPresentForIFlip

FlipImmediateOnHSync

Reserved

此成员是保留成员,应设置为零。 将此成员设置为零等效于将 32 位 Value 成员的剩余 27 位 (0xFFFFFFE0) 设置为零。

此成员是保留成员,应设置为零。 将此成员设置为零等效于将 32 位 Value 成员的剩余 28 位 (0xFFFFFFF0) 设置为零。

Value

联合中DXGK_FLIPCAPS包含的成员,该成员可以保存标识翻转功能的 32 位值。

要求

要求
最低受支持的客户端 Windows Vista
标头 d3dkmddi.h (包括 D3dkmddi.h)

另请参阅

DXGKARGCB_NOTIFY_INTERRUPT_DATA

DXGKARG_PRESENT

DXGKARG_QUERYADAPTERINFO

DXGKARG_SETVIDPNSOURCEADDRESS

DXGK_DRIVERCAPS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiPresent

DxgkDdiQueryAdapterInfo

DxgkDdiSetVidPnSourceAddress