DXGK_SETVIDPNSOURCEADDRESS_FLAGS structure (d3dkmddi.h)

The DXGK_SETVIDPNSOURCEADDRESS_FLAGS structure identifies the specific type of operation to perform in a call to the display miniport driver's DxgkDdiSetVidPnSourceAddress or DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay functions.

Syntax

typedef struct _DXGK_SETVIDPNSOURCEADDRESS_FLAGS {
  union {
    struct {
      UINT ModeChange : 1;
      UINT FlipImmediate : 1;
      UINT FlipOnNextVSync : 1;
      UINT FlipStereo : 1;
      UINT FlipStereoTemporaryMono : 1;
      UINT FlipStereoPreferRight : 1;
      UINT SharedPrimaryTransition : 1;
      UINT IndependentFlipExclusive : 1;
      UINT MoveFlip : 1;
#if ...
      UINT Reserved : 23;
#elif
      UINT Reserved : 24;
#elif
      UINT Reserved : 25;
#else
      UINT Reserved : 29;
#endif
    };
         UINT Value;
  };
} DXGK_SETVIDPNSOURCEADDRESS_FLAGS;

Members

ModeChange

A UINT value that specifies for the driver to switch the display mode.

Setting this member is equivalent to setting the first bit of the 32-bit Value member (0x00000001).

FlipImmediate

A UINT value that specifies for the driver to perform a flip operation that occurs without vertical sync.

Setting this member is equivalent to setting the second bit of the 32-bit Value member (0x00000002).

FlipOnNextVSync

A UINT value that specifies for the driver to perform a flip operation that occurs on the next vertical sync.

Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

[in] FlipStereo

Supported beginning with Windows 8.

Specifies whether the driver flips both left and right images of a stereo allocation.

If the FlipOnNextVSync member of the DXGK_SETVIDPNSOURCEADDRESS_FLAGS structure is set, the driver completes the flip to the left image on the next VSync and then completes the flip to the right image on the following VSync.

If the FlipImmediate member of the DXGK_SETVIDPNSOURCEADDRESS_FLAGS structure is set, the driver immediately starts to scan out from the new allocation. For example, if the driver was scanning a right image, it starts the new scan from the same relative offset in the right image of the new allocation.

The FlipStereo and FlipStereoTemporaryMono members cannot both be set at the same time.

For more requirements, see the Remarks section.

Setting this member is equivalent to setting the fourth bit of the 32-bit Value member (0x00000008).

[in] FlipStereoTemporaryMono

Supported beginning with Windows 8.

Specifies whether the driver uses the left image of a stereo allocation for the right and left portions of a stereo frame. The driver performs the same present operation as with FlipStereo, except that it scans out only from the left image to produce both images of a stereo frame.

This member should be set only if the driver reports support for this option in the current display mode by setting the Type member of the D3DKMDT_VIDPN_SOURCE_MODE structure to D3DKMDT_RMT_GRAPHICS_STEREO_ADVANCED_SCAN.

The FlipStereo and FlipStereoTemporaryMono members cannot both be set at the same time.

The FlipStereoTemporaryMono and FlipStereoPreferRight members cannot both be set at the same time.

For more requirements, see the Remarks section.

Setting this member is equivalent to setting the fifth bit of the 32-bit Value member (0x00000010).

[in] FlipStereoPreferRight

Supported beginning with Windows 8.

Specifies that when the driver clones a stereo primary allocation to a mono monitor, it uses the right image.

The FlipStereoTemporaryMono and FlipStereoPreferRight members cannot both be set at the same time.

For more requirements, see the Remarks section.

Setting this member is equivalent to setting the sixth bit of the 32-bit Value member (0x00000020).

[in] SharedPrimaryTransition

Supported beginning with Windows 8.

Specifies that the driver is transitioning to or from a shared managed primary allocation.

This member is set if either of the following transitions occurs:

  • The current primary allocation is not a shared primary allocation, but the new one is.
  • The current primary allocation is a shared primary allocation, but the new one is not.
When SharedPrimaryTransition is set, the display miniport driver must validate that the hardware can seamlessly switch back and forth between primary and shared primary allocations, and it must perform any hardware programming needed to make the seamless switch occur.

Setting this member is equivalent to setting the seventh bit of the 32-bit Value member (0x00000040).

[in] IndependentFlipExclusive

Supported beginning with Windows 10.

When IndependentFlipExlusive is set, the flip is done in the independent flip exclusive mode. The front buffer is accessed only by the display hardware (not by the DWM) and the kernel mode driver can apply vertical sync-related optimizations.

[in] MoveFlip

Supported beginning with Windows 10.

When MoveFlip is set, the driver is notified to use any state that has been saved from the previous flip to configure the new scanout request.

[in] Reserved

This member is reserved and should be set to zero. Setting this member to zero is equivalent to setting the remaining 23 bits (0xFFFFFF00) of the 32-bit Value member to zeros.

Value

A member in the union that DXGK_SETVIDPNSOURCEADDRESS_FLAGS contains that can hold a 32-bit value that identifies operation type.

Remarks

If any of the FlipStereo, FlipStereoTemporaryMono, or FlipStereoPreferRight members are set, these conditions apply:

  • The hAllocation member of the DXGKARG_SETVIDPNSOURCEADDRESS structure points to an allocation that is created with the Stereo member set in the Flags member of the D3DKMT_DISPLAYMODE structure.
  • The PrimarySegment and PrimaryAddress members of DXGKARG_SETVIDPNSOURCEADDRESS point to the starting physical address of the allocation.
  • The driver honors the settings of the FlipImmediate and FlipOnNextVSync members of the DXGK_SETVIDPNSOURCEADDRESS_FLAGS structure.
Beginning with Windows 8, the display miniport driver can fail a call to the DxgkDdiSetVidPnSourceAddress function, returning STATUS_INVALID_PARAMETER, when the SharedPrimaryTransition member is set in pSetVidPnSourceAddress->Flags. However, such a failure is not expected unless there is an error in either the user mode driver's implementation of the CheckDirectFlipSupport function or in the Desktop Window Manager (DWM). If such a failure occurs, the operating system will not seamlessly fail back to composition mode, and presentation will be incorrect.

Requirements

Requirement Value
Minimum supported client Available starting with Windows Vista.
Header d3dkmddi.h (include D3dkmddi.h)

See also

D3DKMT_DISPLAYMODE

DXGKARG_SETVIDPNSOURCEADDRESS

DXGK_SETVIDPNSOURCEADDRESS_FLAGS

DxgkDdiSetVidPnSourceAddress

DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay