// d3dkmddi.h
typedef struct _DXGK_VIDMMCAPS {
union {
struct {
UINT OutOfOrderLock : 1;
UINT DedicatedPagingEngine : 1;
UINT PagingEngineCanSwizzle : 1;
UINT SectionBackedPrimary : 1;
UINT CrossAdapterResource : 1;
UINT VirtualAddressingSupported : 1;
UINT GpuMmuSupported : 1;
UINT IoMmuSupported : 1;
UINT ReplicateGdiContent : 1;
UINT NonCpuVisiblePrimary : 1;
UINT ParavirtualizationSupported : 1;
UINT IoMmuSecureModeSupported : 1;
UINT DisableSelfRefreshVRAMInS3 : 1;
UINT IoMmuSecureModeRequired : 1;
UINT MapAperture2Supported : 1;
UINT CrossAdapterResourceTexture : 1;
UINT CrossAdapterResourceScanout : 1;
UINT AlwaysPoweredVRAM : 1;
#if ...
UINT Reserved : 14;
#elif
UINT Reserved : 15;
#elif
UINT Reserved : 18;
#elif
UINT Reserved : 19;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#elif
UINT Reserved : 27;
#elif
UINT Reserved : 28;
#else
UINT Reserved : 31;
#endif
};
UINT Value;
};
UINT PagingNode;
} DXGK_VIDMMCAPS;
View the official Windows Driver Kit DDI referenceNo description available.
The DXGK_VIDMMCAPS structure identifies the video memory management capabilities that a kernel-mode display miniport driver (KMD) supports.
OutOfOrderLockSpecifies whether the driver can lock allocation instances other than the latest instance. The driver typically sets this value for DDI threading and load balancing if a DDI thread must lock a vertex buffer that an application thread had previously locked and discarded.
DedicatedPagingEngineThis member is reserved and should be set to zero.
PagingEngineCanSwizzleThis member is reserved and should be set to zero.
SectionBackedPrimarySpecifies whether the driver supports section-backed primary allocations. Supported starting with Windows 8.
CrossAdapterResourceSpecifies whether the driver provides tier 1 support of copying to and from cross-adapter resources in a hybrid system. Supported starting with Windows 8.1.
Starting in WDDM 2.4, DXGI enables the current hybrid presentation optimizations for the broader scenario wherever rendering is on one GPU and presenting on another GPU’s monitor. This is only possible if both GPUs support cross-adapter resources.
The cross adapter resource properties are listed below.
#define D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT 128
#define D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT 4
The cross adapter allocation could be used as a primary, but the driver will not get information, that is usually provided when the primary is created
VirtualAddressingSupportedSpecifies whether the driver supports virtual memory addressing. To express support for GPU virtual memory addressing, the driver should set the VirtualAddressingSupported cap and GpuMmuSupported or IoMmuSupported caps. GpuMmuSupported and IoMmuSupported cannot be set at the same time. Supported starting with Windows 10 (WDDM 2.0).
GpuMmuSupportedSpecifies whether the adapter supports the GpuMmu model. An adapter cannot support the GpuMmu and the IoMmu models on different engines at the same time. See GpuMmu model for more information. Supported starting with Windows 10 (WDDM 2.0).
IoMmuSupportedSpecifies whether the adapter supports the IoMmu model. An adapter cannot support the GpuMmu and the IoMmu models on different engines at the same time. See IoMmu model for more information. Supported starting with Windows 10 (WDDM 2.0).
ReplicateGdiContentSpecifies whether the adapter supports the replication of GDI content. Supported starting with Windows 10 (WDDM 2.0).
NonCpuVisiblePrimaryIndicates that GDI allocations are not required to be CPU visible. Supported starting with Windows 10 (WDDM 2.0).
ParavirtualizationSupportedIndicates that the KMD supports GPU paravirtualization. The host KMD needs to set the cap if all DDIs are implemented. Introduced in Windows 10 version 1703 (WDDM 2.2).
IoMmuSecureModeSupportedIndicates that the driver supports IOMMU-based GPU isolation. Supported starting with Windows 10 version 1803 (WDDM 2.4).
DisableSelfRefreshVRAMInS3Disable support for VRAM self-refresh in S3. Supported starting with Windows 10 version 1803.
IoMmuSecureModeRequiredIndicates that IOMMU hardware and isolation support (referred to by the IommuSecureModeSupported flag) is required or the OS will otherwise not start the adapter. Supported starting with Windows 10 version 2004 (WDDM 2.7).
MapAperture2SupportedIndicates that the driver supports the DXGK_OPERATION_MAP_APERTURE_SEGMENT2 paging buffer operation, which is required for IOMMU DMA remapping. Supported starting with WDDM version 2.9.
CrossAdapterResourceTextureSpecifies whether the driver provides tier 2 support of texturing from cross-adapter resources. A driver that indicates support for CrossAdapterResourceTexture must also indicate support for CrossAdapterResource. Supported starting with WDDM version 2.9.
CrossAdapterResourceScanoutSpecifies whether the driver provides tier 3 support of scanning out cross-adapter resources. A driver that indicates support for CrossAdapterResourceScanout must also indicate support for CrossAdapterResource and CrossAdapterResourceTexture. Supported starting with WDDM version 2.9.
Tier 3 support requires that the driver be able to perform the supported flipping capabilities, declared by driver in DXGK_FLIPCAPS, for cross-adapter resources of the following minimum specifications:
The DXGI runtime will query for driver's CrossAdapterResourceScanout support and if supported, the presentation stack shall go down the 1 copy path. Therefore, drivers that declare support for CrossAdapterResourceScanout are also required to:
ReservedThis member is reserved and should be set to zero. Setting this member to zero is equivalent to setting the remaining 31 bits (after setting OutOfOrderLock) of the Value member to zeros. Note that Reserved is available only if DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN7.
ValueThis value is used to operate over the members collectively.
PagingNodeThe zero-based index of the node to use for paging operations. If the driver does not set the MultiEngineAware bit-field member of the SchedulingCaps member of the DXGK_DRIVERCAPS structure, the DirectX graphics kernel subsystem ignores the setting of PagingNode. This member applies to WDDM 1.x only. In WDDM 2.x, PagingNode was moved to DXGK_PHYSICALADAPTERCAPS.