The DDCORECAPS structure specifies the core capabilities of the DirectDraw driver and its device, which are exposed to an application through the DirectDraw object.
typedef typedef struct _DDCORECAPS {
DWORD dwSize;
DWORD dwCaps;
DWORD dwCaps2;
DWORD dwCKeyCaps;
DWORD dwFXCaps;
DWORD dwFXAlphaCaps;
DWORD dwPalCaps;
DWORD dwSVCaps;
DWORD dwAlphaBltConstBitDepths;
DWORD dwAlphaBltPixelBitDepths;
DWORD dwAlphaBltSurfaceBitDepths;
DWORD dwAlphaOverlayConstBitDepths;
DWORD dwAlphaOverlayPixelBitDepths;
DWORD dwAlphaOverlaySurfaceBitDepths;
DWORD dwZBufferBitDepths;
DWORD dwVidMemTotal;
DWORD dwVidMemFree;
DWORD dwMaxVisibleOverlays;
DWORD dwCurrVisibleOverlays;
DWORD dwNumFourCCCodes;
DWORD dwAlignBoundarySrc;
DWORD dwAlignSizeSrc;
DWORD dwAlignBoundaryDest;
DWORD dwAlignSizeDest;
DWORD dwAlignStrideAlign;
DWORD dwRops[DD_ROP_SPACE];
DDSCAPS ddsCaps;
DWORD dwMinOverlayStretch;
DWORD dwMaxOverlayStretch;
DWORD dwMinLiveVideoStretch;
DWORD dwMaxLiveVideoStretch;
DWORD dwMinHwCodecStretch;
DWORD dwMaxHwCodecStretch;
DWORD dwReserved1;
DWORD dwReserved2;
DWORD dwReserved3;
DWORD dwSVBCaps;
DWORD dwSVBCKeyCaps;
DWORD dwSVBFXCaps;
DWORD dwSVBRops[DD_ROP_SPACE];
DWORD dwVSBCaps;
DWORD dwVSBCKeyCaps;
DWORD dwVSBFXCaps;
DWORD dwVSBRops[DD_ROP_SPACE];
DWORD dwSSBCaps;
DWORD dwSSBCKeyCaps;
DWORD dwSSBFXCaps;
DWORD dwSSBRops[DD_ROP_SPACE];
DWORD dwMaxVideoPorts;
DWORD dwCurrVideoPorts;
DWORD dwSVBCaps2;
} DDCORECAPS, *PDDCORECAPS;
| Flag | Meaning |
|---|---|
| DDCAPS_3D | The display hardware has 3D acceleration. |
| DDCAPS_ALIGNBOUNDARYDEST | DirectDraw supports only those source rectangles with the x-axis aligned to the dwAlignBoundaryDest boundaries of the surface. |
| DDCAPS_ALIGNBOUNDARYSRC | DirectDraw supports only those source rectangles with the x-axis aligned to the dwAlignBoundarySrc boundaries of the surface. |
| DDCAPS_ALIGNSIZEDEST | DirectDraw supports only those source rectangles whose x-axis sizes, in bytes, are dwAlignSizeDest multiples. |
| DDCAPS_ALIGNSIZESRC | DirectDraw supports only those source rectangles whose x-axis sizes, in bytes, are dwAlignSizeSrc multiples. |
| DDCAPS_ALIGNSTRIDE | DirectDraw creates display memory surfaces that have a stride alignment equal to the dwAlignStrideAlign value. |
| DDCAPS_ALPHA | The display hardware supports an alpha channel during blit operations. |
| DDCAPS_BANKSWITCHED | The display hardware is bank-switched and is potentially very slow at random access to display memory. If this capability bit is set by the Windows 2000 or later driver, DirectDraw is disabled. |
| DDCAPS_BLT | The display hardware is capable of blit operations. |
| DDCAPS_BLTCOLORFILL | The display hardware is capable of color filling with a blitter. |
| DDCAPS_BLTDEPTHFILL | The display hardware is capable of depth filling z-buffers with a blitter. |
| DDCAPS_BLTFOURCC | The display hardware is capable of color-space conversions during blit operations. |
| DDCAPS_BLTQUEUE | The display hardware is capable of asynchronous blit operations. |
| DDCAPS_BLTSTRETCH | The display hardware is capable of stretching during blit operations. |
| DDCAPS_CANBLTSYSMEM | The display hardware is capable of blitting to or from system memory. |
| DDCAPS_CANCLIP | The display hardware is capable of clipping with blitting. |
| DDCAPS_CANCLIPSTRETCHED | The display hardware is capable of clipping while stretch-blitting. |
| DDCAPS_COLORKEY | Some form of color key in either overlay or blit operations is supported. More specific color key capability information can be found in the dwCKeyCaps member. |
| DDCAPS_COLORKEYHWASSIST | The color key is hardware assisted. |
| DDCAPS_GDI | The display hardware is shared with GDI. If this capability bit is set by the Windows 2000 or later driver, DirectDraw is disabled. |
| DDCAPS_NOHARDWARE | No hardware support exists. |
| DDCAPS_OVERLAY | The display hardware supports overlays. |
| DDCAPS_OVERLAYCANTCLIP | The display hardware supports overlays but cannot clip them. |
| DDCAPS_OVERLAYFOURCC | The overlay hardware is capable of color-space conversions during overlay operations. |
| DDCAPS_OVERLAYSTRETCH | The overlay hardware is capable of stretching. |
| DDCAPS_PALETTE | DirectDraw is capable of creating and supporting DirectDrawPalette objects for more than just the primary surface. If this capability bit is set by the Windows 2000 or later driver, DirectDraw is disabled. |
| DDCAPS_PALETTEVSYNC | DirectDraw is capable of updating a palette synchronized with the vertical refresh. |
| DDCAPS_READSCANLINE | The display hardware is capable of returning the current scan line. |
| DDCAPS_STEREOVIEW | The display hardware has stereo vision capabilities. |
| DDCAPS_VBI | The display hardware is capable of generating a vertical-blank interrupt. |
| DDCAPS_ZBLTS | Supports the use of z-buffers with blit operations. |
| DDCAPS_ZOVERLAYS | Supports the use of the application's UpdateOverlayZOrder method as a z-value for overlays to control their layering. If this capability bit is set by the Windows 2000 or later driver, DirectDraw is disabled. |
| Flag | Meaning |
|---|---|
| DDCAPS2_AUTOFLIPOVERLAY | The overlay can be automatically flipped to the next surface in the flip chain each time a hardware video port V-sync occurs, allowing the video port extensions (VPE) object and the overlay to double buffer the video without CPU overhead. This option is only valid when the surface is receiving data from hardware video port. If the hardware video port data is noninterlaced or noninterleaved, it flips on every V-sync. If the data is being interleaved in memory, it flips on every other V-sync. |
| DDCAPS2_CANAUTOGENMIPMAP | DirectX 9.0 and later versions only. The driver and its device support automatically regenerating the sublevels of mipmap textures. |
| DDCAPS2_CANBOBHARDWARE | The overlay hardware can display each field of an interlaced video stream individually. |
| DDCAPS2_CANBOBINTERLEAVED | The overlay hardware can display each field of an interlaced video stream individually while it is interleaved in memory without causing any artifacts that might normally occur without special hardware support. This option is only valid when the surface is receiving data from a VPE object and is only valid when the video is zoomed at least 200 percent in the vertical direction. |
| DDCAPS2_CANBOBNONINTERLEAVED | The overlay hardware can display each field of an interlaced video stream individually while it is not interleaved in memory without causing any artifacts that might normally occur without special hardware support. This option is only valid when the surface is receiving data from a VPE object and is only valid when the video is zoomed at least 200 percent in the vertical direction. |
| DDCAPS2_CANCALIBRATEGAMMA | A calibrator is available to adjust the gamma ramp according to the physical display properties so that the result is identical on all calibrated systems. |
| DDCAPS2_CANDROPZ16BIT | Sixteen-bit RGBZ values can be converted into 16-bit RGB values. (The system does not support eight-bit conversions.) |
| DDCAPS2_CANFLIPODDEVEN | The driver supports bob using software without using a VPE object. |
| DDCAPS2_CANMANAGERESOURCE | The driver supports managing resources. |
| DDCAPS2_CANMANAGETEXTURE | The driver supports managing textures. |
| DDCAPS2_CANRENDERWINDOWED | The driver can render in windowed mode. |
| DDCAPS2_CERTIFIED | The display hardware is certified. |
| DDCAPS2_COLORCONTROLOVERLAY | The overlay surface contains color controls (brightness, sharpness, and so on). |
| DDCAPS2_COLORCONTROLPRIMARY | The primary surface contains color controls (gamma, and so on). |
| DDCAPS2_COPYFOURCC | The driver supports blitting any FOURCC surface to another surface of the same FOURCC. |
| DDCAPS2_FLIPINTERVAL | The driver responds to the DDFLIP_INTERVAL2, DDFLIP_INTERVAL3, and DDFLIP_INTERVAL4 flags. |
| DDCAPS2_FLIPNOVSYNC | The driver responds to DDFLIP_FLIPNOVSYNC. |
| DDCAPS2_NO2DDURING3DSCENE | The driver cannot interleave 2D operations such as DdBlt or DdLock on any surfaces that Direct3D is using between calls to the IDirect3DDevice::BeginScene and IDirect3DDevice::EndScene methods. |
| DDCAPS2_NONLOCALVIDMEM | The driver supports nonlocal display memory. |
| DDCAPS2_NONLOCALVIDMEMCAPS | Blit capabilities for nonlocal display memory surfaces differ from local display memory surfaces. If this flag is present, the DDCAPS2_NONLOCALVIDMEM flag is also present. |
| DDCAPS2_NOPAGELOCKREQUIRED | The driver should be called for blits involving system memory surfaces even if the system memory surfaces are not pagelocked. |
| DDCAPS2_PRIMARYGAMMA | The driver supports loadable gamma ramps for the primary surface. |
| DDCAPS2_VIDEOPORT | The display hardware contains a hardware video port. |
| DDCAPS2_WIDESURFACES | The display driver can create surfaces wider than the primary surface. Drivers that set this bit should expect to receive CreateSurface requests from applications for surfaces wider than the primary surface. |
| Flag | Meaning |
|---|---|
| DDCKEYCAPS_DESTBLT | Supports transparent blitting with a color key that identifies the replaceable bits of the destination surface for RGB colors. |
| DDCKEYCAPS_DESTBLTCLRSPACE | Supports transparent blitting with a color space that identifies the replaceable bits of the destination surface for RGB colors. |
| DDCKEYCAPS_DESTBLTCLRSPACEYUV | Supports transparent blitting with a color space that identifies the replaceable bits of the destination surface for YUV colors. |
| DDCKEYCAPS_DESTBLTYUV | Supports transparent blitting with a color key that identifies the replaceable bits of the destination surface for YUV colors. |
| DDCKEYCAPS_DESTOVERLAY | Supports overlaying with color keying of the replaceable bits of the destination surface being overlaid for RGB colors. |
| DDCKEYCAPS_DESTOVERLAYCLRSPACE | Supports a color space as the color key for the destination of RGB colors. |
| DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV | Supports a color space as the color key for the destination of YUV colors. |
| DDCKEYCAPS_DESTOVERLAYONEACTIVE | Supports only one active destination color key value for visible overlay surfaces. |
| DDCKEYCAPS_DESTOVERLAYYUV | Supports overlaying using color keying of the replaceable bits of the destination surface being overlaid for YUV colors. |
| DDCKEYCAPS_NOCOSTOVERLAY | Indicates that there are no bandwidth tradeoffs for using the color key with an overlay. |
| DDCKEYCAPS_SRCBLT | Supports transparent blitting using the color key for the source with this surface for RGB colors. |
| DDCKEYCAPS_SRCBLTCLRSPACE | Supports transparent blitting using a color space for the source with this surface for RGB colors. |
| DDCKEYCAPS_SRCBLTCLRSPACEYUV | Supports transparent blitting using a color space for the source with this surface for YUV colors. |
| DDCKEYCAPS_SRCBLTYUV | Supports transparent blitting using the color key for the source with this surface for YUV colors. |
| DDCKEYCAPS_SRCOVERLAY | Supports overlaying using the color key for the source with this overlay surface for RGB colors. |
| DDCKEYCAPS_SRCOVERLAYCLRSPACE | Supports overlaying using a color space as the source color key for the overlay surface for RGB colors. |
| DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV | Supports overlaying using a color space as the source color key for the overlay surface for YUV colors. |
| DDCKEYCAPS_SRCOVERLAYONEACTIVE | Supports only one active source color key value for visible overlay surfaces. |
| DDCKEYCAPS_SRCOVERLAYYUV | Supports overlaying using the color key for the source with this overlay surface for YUV colors. |
| Flag | Meaning |
|---|---|
| DDFXCAPS_BLTARITHSTRETCHY | Uses arithmetic operations, rather than pixel-doubling techniques, to stretch and shrink surfaces during a blit operation. Occurs along the y-axis (vertically). |
| DDFXCAPS_BLTARITHSTRETCHYN | Uses arithmetic operations, rather than pixel-doubling techniques, to stretch and shrink surfaces during a blit operation. Occurs along the y-axis (vertically), and works only for integer stretching (×1, ×2, and so on). |
| DDFXCAPS_BLTMIRRORLEFTRIGHT | Supports mirroring left to right in a blit operation. |
| DDFXCAPS_BLTMIRRORUPDOWN | Supports mirroring top to bottom in a blit operation. |
| DDFXCAPS_BLTROTATION | Supports arbitrary rotation in a blit operation. If this capability bit is set by the Windows 2000 or later driver, DirectDraw is disabled. |
| DDFXCAPS_BLTROTATION90 | Supports 90-degree rotations in a blit operation. If this capability bit is set by the Windows 2000 or later driver, DirectDraw is disabled. |
| DDFXCAPS_BLTSHRINKX | Supports arbitrary shrinking of a surface along the x-axis (horizontally). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSHRINKXN | Supports integer shrinking (×1, ×2, and so on) of a surface along the x-axis (horizontally). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSHRINKY | Supports arbitrary shrinking of a surface along the y-axis (vertically). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSHRINKYN | Supports integer shrinking (×1, ×2, and so on) of a surface along the y-axis (vertically). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSTRETCHX | Supports arbitrary stretching of a surface along the x-axis (horizontally). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSTRETCHXN | Supports integer stretching (×1, ×2, and so on) of a surface along the x-axis (horizontally). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSTRETCHY | Supports arbitrary stretching of a surface along the y-axis (vertically). This flag is valid only for blit operations. |
| DDFXCAPS_BLTSTRETCHYN | Supports integer stretching (×1, ×2, and so on) of a surface along the y-axis (vertically). This flag is valid only for blit operations. |
| DDFXCAPS_OVERLAYARITHSTRETCHY | Uses arithmetic operations, rather than pixel-doubling techniques, to stretch and shrink surfaces during an overlay operation. Occurs along the y-axis (vertically). |
| DDFXCAPS_OVERLAYARITHSTRETCHYN | Uses arithmetic operations, rather than pixel-doubling techniques, to stretch and shrink surfaces during an overlay operation. Occurs along the y-axis (vertically), and works only for integer stretching (×1, ×2, and so on). |
| DDFXCAPS_OVERLAYMIRRORLEFTRIGHT | Supports mirroring of overlays around the vertical axis. |
| DDFXCAPS_OVERLAYMIRRORUPDOWN | Supports mirroring of overlays across the horizontal axis. |
| DDFXCAPS_OVERLAYSHRINKX | Supports arbitrary shrinking of a surface along the x-axis (horizontally). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that shrinking is available. |
| DDFXCAPS_OVERLAYSHRINKXN | Supports integer shrinking (×1, ×2, and so on) of a surface along the x-axis (horizontally). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that shrinking is available. |
| DDFXCAPS_OVERLAYSHRINKY | Supports arbitrary shrinking of a surface along the y-axis (vertically). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that shrinking is available. |
| DDFXCAPS_OVERLAYSHRINKYN | Supports integer shrinking (×1, ×2, and so on) of a surface along the y-axis (vertically). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that shrinking is available. |
| DDFXCAPS_OVERLAYSTRETCHX | Supports arbitrary stretching of a surface along the x-axis (horizontally). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that stretching is available. |
| DDFXCAPS_OVERLAYSTRETCHXN | Supports integer stretching (×1, ×2, and so on) of a surface along the x-axis (horizontally). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that stretching is available. |
| DDFXCAPS_OVERLAYSTRETCHY | Supports arbitrary stretching of a surface along the y-axis (vertically). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that stretching is available. |
| DDFXCAPS_OVERLAYSTRETCHYN | Supports integer stretching (×1, ×2, and so on) of a surface along the y-axis (vertically). This flag is valid only for DDSCAPS_OVERLAY surfaces. This flag indicates only the capabilities of a surface; it does not indicate that stretching is available. |
| Flag | Meaning |
|---|---|
| DDSVCAPS_ENIGMA | The stereo view is accomplished using Enigma encoding. |
| DDSVCAPS_FLICKER | The stereo view is accomplished using high-frequency flickering. |
| DDSVCAPS_REDBLUE | The stereo view is accomplished when the viewer looks at the image through red and blue filters placed over the left and right eyes. All images must adapt their color spaces for this process. |
| DDSVCAPS_SPLIT | The stereo view is accomplished with split-screen technology. |
| Flag | Meaning |
|---|---|
| DDBD_8 | The driver supports an 8bpp depth buffer. |
| DDBD_16 | The driver supports a 16bpp depth buffer. |
| DDBD_24 | The driver supports a 24bpp depth buffer. |
| DDBD_32 | The driver supports a 32bpp depth buffer. |
Defined in ddrawi.h. Include ddrawi.h.
This section contains the DirectDraw driver structure whose name has the form DDCORECAPS, which is the form used on Windows 98/Me. This structure is identical to that whose name has the form DDNTCORECAPS which is the form used on Windows 2000 and later versions. The include file dx95type.h contains a type define from DDNTCORECAPS to DDCORECAPS.
This structure mirrors the first entries of the DDCAPS structure, but is of a fixed size and does not grow as DDCAPS does.
The driver initializes DDCORECAPS when it is initializing the other members of the DD_HALINFO structure in its DrvGetDirectDrawInfo structure. The DirectDraw runtime might update some members.
DirectDraw requests additional driver capabilities by calling the DdGetDriverInfo function that is also returned in the DD_HALINFO structure.