DXGK_PRESENTATIONCAPS structure (d3dkmddi.h)

The DXGK_PRESENTATIONCAPS structure identifies presentation capabilities of a display miniport driver that the driver provides through a call to its DxgkDdiQueryAdapterInfo function.

Syntax

typedef struct _DXGK_PRESENTATIONCAPS {
  union {
    struct {
      UINT NoScreenToScreenBlt : 1;
      UINT NoOverlapScreenBlt : 1;
      UINT SupportKernelModeCommandBuffer : 1;
      UINT NoSameBitmapAlphaBlend : 1;
      UINT NoSameBitmapStretchBlt : 1;
      UINT NoSameBitmapTransparentBlt : 1;
      UINT NoSameBitmapOverlappedAlphaBlend : 1;
      UINT NoSameBitmapOverlappedStretchBlt : 1;
      UINT DriverSupportsCddDwmInterop : 1;
      UINT Reserved0 : 1;
      UINT AlignmentShift : 4;
      UINT MaxTextureWidthShift : 3;
      UINT MaxTextureHeightShift : 3;
      UINT SupportAllBltRops : 1;
      UINT SupportMirrorStretchBlt : 1;
      UINT SupportMonoStretchBltModes : 1;
      UINT StagingRectStartPitchAligned : 1;
      UINT NoSameBitmapBitBlt : 1;
      UINT NoSameBitmapOverlappedBitBlt : 1;
      UINT Reserved1 : 1;
      UINT NoTempSurfaceForClearTypeBlend : 1;
      UINT SupportSoftwareDeviceBitmaps : 1;
      UINT NoCacheCoherentApertureMemory : 1;
      UINT SupportLinearHeap : 1;
#if ...
      UINT Reserved : 1;
#else
      UINT Reserved : 4;
#endif
    };
         UINT Value;
  };
} DXGK_PRESENTATIONCAPS;

Members

[in] NoScreenToScreenBlt

A UINT value that specifies whether the display miniport driver can perform a bit-block transfer (bitblt) from the primary surface to the same primary surface. If NoScreenToScreenBlt is set, the driver cannot perform a screen-to-screen bit-block transfer. Therefore, the Microsoft DirectX graphics kernel subsystem (Dxgkrnl.sys) will not request the driver to perform such a bit-block transfer.

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

[in] NoOverlapScreenBlt

A UINT value that specifies whether the display miniport driver can perform a bit-block transfer that overlaps. If NoOverlapScreenBlt is set, the driver cannot perform a bit-block transfer that overlaps. Therefore, the DirectX graphics kernel subsystem will not request the driver to perform such a bit-block transfer.

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

SupportKernelModeCommandBuffer

[in] A UINT value that specifies whether the display miniport driver supports GDI hardware-accelerated command buffer processing. If SupportKernelModeCommandBuffer is set, the driver can perform various hardware-accelerated bit-block transfer (bitblt) and fill operations when the DirectX graphics kernel subsystem calls the display miniport driver's DxgkDdiRenderKm function.

Note   A display miniport driver should report that it supports GDI hardware acceleration only if the cache-coherent GPU aperture segment exists and there is no significant performance penalty when the CPU accesses the memory.
 
Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

Supported starting with Windows 7.

[in] NoSameBitmapAlphaBlend

A UINT value that specifies whether the display miniport driver can perform an alpha-blending operation when the source and destination allocations are the same. If NoSameBitmapAlphaBlend is set, the driver cannot perform such an operation and the DirectX graphics kernel subsystem will not request it.

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

Supported starting with Windows 7.

[in] NoSameBitmapStretchBlt

A UINT value that specifies whether the display miniport driver can perform a stretch bit-block transfer operation when the source and destination allocations are the same. If NoSameBitmapStretchBlt is set, the driver cannot perform such an operation and the DirectX graphics kernel subsystem will not request it.

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

Supported starting with Windows 7.

[in] NoSameBitmapTransparentBlt

A UINT value that specifies whether the display miniport driver can perform a transparent bit-block transfer operation when the source and destination allocations are the same. If NoSameBitmapStretchBlt is set, the driver cannot perform such an operation and the DirectX graphics kernel subsystem will not request it.

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

Supported starting with Windows 7.

[in] NoSameBitmapOverlappedAlphaBlend

A UINT value that specifies whether the display miniport driver can perform an alpha-blending operation when the source and destination allocations are the same and source and destination rectangles overlap. If NoSameBitmapOverlappedAlphaBlend is set, the driver cannot perform such an operation and the DirectX graphics kernel subsystem will not request it.

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

Supported starting with Windows 7.

[in] NoSameBitmapOverlappedStretchBlt

A UINT value that specifies whether the display miniport driver can perform a stretch bit-block transfer operation when the source and destination allocations are the same and source and destination rectangles overlap. If NoSameBitmapOverlappedStretchBlt is set, the driver cannot perform such an operation and the DirectX graphics kernel subsystem will not request it.

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

Supported starting with Windows 7.

[in] DriverSupportsCddDwmInterop

A UINT value that specifies whether the display miniport driver supports Canonical Display Driver (CDD) present operations to texture allocations that are created by the user-mode driver for the Desktop Windows Manager (DWM) to use. If DriverSupportsCddDwmInterop is set, the display miniport driver supports such present operations.

If the display miniport driver supports GDI hardware acceleration, DriverSupportsCddDwmInterop is ignored. In this case the driver must support present CDD operations to DWM texture allocations that are created by the user-mode driver.

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

Supported starting with Windows 7.

[in] Reserved0

This member is reserved and should be set to zero.

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

Supported starting with Windows 7.

[in] AlignmentShift

A UINT value that specifies the minimum alignment value, in bytes, that the XxxPitch members of the DXGK_GDIARG_XXX structures require. AlignmentShift is given as a binary exponent. For example, to specify a required alignment value of 16 bytes, the display miniport driver should set AlignmentShift = 4. The minimum value is AlignmentShift = 2, which specifies a 4-byte alignment.

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

Supported starting with Windows 7.

[in] MaxTextureWidthShift

A UINT value that specifies the maximum texture width that the display miniport driver supports, which is computed as:

maximum supported texture width = 2 ^ (MaxTextureWidthShift + 11) texels.

For example, if MaxTextureWidthShift = 0, the maximum supported texture width is 2 ^ 11 = 2048.

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

Supported starting with Windows 7.

[in] MaxTextureHeightShift

A UINT value that specifies the maximum texture height that the display miniport driver supports, which is computed as:

maximum supported texture height = 2 ^ (MaxTextureHeightShift + 11) texels.

For example, if MaxTextureHeightShift = 0, the maximum supported texture height is 2 ^ 11 = 2048.

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

Supported starting with Windows 7.

[in] SupportAllBltRops

A UINT value that specifies whether the display miniport driver supports all GDI ROP3 raster operations with solid color as a pattern in BitBlt and ColorFill commands. If SupportAllBltRops is set, the driver supports such raster operations.

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

Supported starting with Windows 7.

[in] SupportMirrorStretchBlt

A UINT value that specifies whether the display miniport driver supports Stretch Blt operations (using the DXGK_GDIARG_STRETCHBLT structure) in mirror mode. If SupportMirrorStretchBlt is set, the driver supports such operations.

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

Supported starting with Windows 7.

[in] SupportMonoStretchBltModes

A UINT value that specifies whether the display miniport driver supports Stretch Blt operations (using the DXGK_GDIARG_STRETCHBLT structure) in BLACKONWHITE or WHITEONBLACK monochromatic rendering modes. If SupportMonoStretchBltModes is set, the driver supports such operations.

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

Supported starting with Windows 7.

[in] StagingRectStartPitchAligned

A UINT value that specifies whether the display miniport driver requires the starting point (upper-left point) in the rectangle on a CPU-visible staging surface to be pitch-aligned, which means that the left coordinate is 0. If AlignmentShift is set, the upper-left point of the rectangle is pitch-aligned.

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

Supported starting with Windows 7.

[in] NoSameBitmapBitBlt

A UINT value that specifies whether the display miniport driver can perform a bit-block transfer operation when the source and destination allocations are the same. If NoSameBitmapBitBlt is set, the driver cannot perform such an operation. Therefore, the DirectX graphics kernel subsystem will not request that the driver perform such an operation.

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

Supported starting with Windows 7.

[in] NoSameBitmapOverlappedBitBlt

A UINT value that specifies whether the display miniport driver can perform a bit-block transfer operation when the source and destination allocations are the same and source and destination rectangles overlap. If NoSameBitmapOverlappedBitBlt is set, the driver cannot perform such an operation and the DirectX graphics kernel subsystem will not request it.

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

Supported starting with Windows 7.

[in] Reserved1

This member is reserved and should be set to zero. Setting this member to zero is equivalent to setting the twentieth bit of the 32-bit Value member (0x00080000).

Supported starting with Windows 7.

[in] NoTempSurfaceForClearTypeBlend

A UINT value that specifies whether the driver needs a temporary surface during processing of commands that are specified by the ClearTypeBlend member of the DXGK_RENDERKM_COMMAND structure. If NoTempSurfaceForClearTypeBlend is set, the driver does not need a temporary surface. In this case, the driver will use less video memory.

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

Supported starting with Windows 7.

[in] SupportSoftwareDeviceBitmaps

This member is reserved and should be set to zero.

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

Supported starting with Windows 8.

[in] NoCacheCoherentApertureMemory

A UINT value that specifies that the driver does not support cache-coherent aperture memory.

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

Supported starting with Windows 8.

[in] SupportLinearHeap

The driver supports linear heap allocation from staging surfaces.

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

Supported starting with Windows 8.

[in] Reserved

This member is reserved and should be set to zero.

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

Supported starting with Windows 8.

[in] This member is reserved and should be set to zero.

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

Supported starting with Windows 8.

Value

A 32-bit value that identifies the driver's presentation capabilities.

Remarks

A display miniport driver can specify presentation capabilities by setting bits in the 32-bit Value member or by setting individual members of the structure in the union that DXGK_PRESENTATIONCAPS contains.

Requirements

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

See also

D3DKMDT_GDISURFACETYPE

DXGK_DRIVERCAPS

DxgkDdiQueryAdapterInfo

DxgkDdiRenderKm