Exposing the Extended Surface Capabilities
The DDCORECAPS structure contains a DDSCAPS field which drivers fill in to indicate what types of surfaces they support. When these caps are reported to the application, a slightly different structure, DDCAPS, is returned. This DDCAPS structure is built from the driver's DDCORECAPS and other structures that are queried using the DdGetDriverInfo interface. For the latest version of DirectX, the application-visible DDCAPS contains a DDSCAPS2 member. This DDCAPS2 member is constructed from the DDSCAPS member in the DDCORECAPS structure, and the ddsCapsMore member of the DD_MORESURFACECAPS structure.
The DD_MORESURFACECAPS structure is queried from the driver at driver initialization time using the DdGetDriverInfo call. The appropriate GUID, as defined in ddrawint.h, is GUID_DDMoreSurfaceCaps.
Responding to the GUID_DDMoreSurfaceCaps query is entirely optional. It is intended to allow drivers to do two distinct things:
Expose extended surface capabilities that the driver can create in display memory.
Express to DirectDraw new heap restrictions for these extended surface capabilities.
The first item has been covered in the previous section and is fairly self-explanatory. The second item is more complex, and readers should be familiar with the significance of the ddsCaps and ddsCapsAlt members of the VIDEOMEMORY structure, described in Memory Heap Allocation, before reading the next section.