DXGK_VIDMMCAPS 结构 (d3dkmddi.h)
DXGK_VIDMMCAPS结构标识显示微型端口驱动程序支持的视频内存管理功能。
语法
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;
成员
OutOfOrderLock
指定驱动程序是否可以锁定最新实例以外的分配实例。 如果 DDI 线程必须锁定应用程序线程之前锁定并丢弃的顶点缓冲区,驱动程序通常会为 DDI 线程和负载均衡设置此值。 设置此成员等效于设置 32 位 Value 成员 (0x00000001) 的第一位。
DedicatedPagingEngine
此成员是保留成员,应设置为零。
PagingEngineCanSwizzle
此成员是保留成员,应设置为零。
SectionBackedPrimary
指定驱动程序是否支持部分支持的主要分配。 从 Windows 8 开始支持。
CrossAdapterResource
指定驱动程序是否提供第 1 层支持向 /从混合系统中<的跨适配器资源复制。 从 Windows 8.1 开始支持。
从 WDDM 2.4 开始,DXGI 支持当前混合演示优化,以便在一个 GPU 上呈现,并在另一个 GPU 的监视器上呈现更广泛的方案。 仅当两个 GPU 都支持跨适配器资源时,才可能执行此操作。
下面列出了跨适配器资源属性。
- 资源只能分页到 aperture GPU 内存段
- 资源分配为共享资源。
- 资源必须标记为 CPU 可见。
- 分配将由 OS 创建为写入组合。
- 资源只有一个分配,并且具有线性格式。
- 资源具有标准间距对齐 (128 字节) 。 为音调对齐添加了D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT定义。 必须以包含资源内容的此对齐方式的最小倍数创建资源。
- 资源具有标准高度对齐方式 (4 行) 。 添加D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT。 必须以包含资源内容的此对齐方式的最小倍数创建资源。
#define D3DKMT_CROSS_ADAPTER_RESOURCE_PITCH_ALIGNMENT 128
#define D3DKMT_CROSS_ADAPTER_RESOURCE_HEIGHT_ALIGNMENT 4
- 资源内存的起始地址与一个页面边界对齐。
- 资源可能从内核模式创建为标准分配,稍后由 UMD 打开。
- 资源可能由 UMD 创建。
跨适配器分配可用作主节点,但驱动程序不会获取通常在创建主节点时提供的信息
VirtualAddressingSupported
指定驱动程序是否支持虚拟内存寻址。 为了表示对 GPU 虚拟内存寻址的支持,驱动程序应设置 VirtualAddressingSupported cap 和 GpuMmuSupported 或 IoMmuSupported caps。 无法同时设置 GpuMmuSupported 和 IoMmuSupported。 从 Windows 10 开始支持。
GpuMmuSupported
指定适配器是否支持 GpuMmu 模型。 适配器不能同时支持不同引擎上的 GpuMmu 和 IoMmu 模型。 有关详细信息 ,请参阅 GpuMmu 模型 。 从 Windows 10 开始支持。
IoMmuSupported
指定适配器是否支持 IoMmu 模型。 适配器不能同时支持不同引擎上的 GpuMmu 和 IoMmu 模型。 有关详细信息 ,请参阅 IoMmu 模型 。 从 Windows 10 (WDDM 2.0) 开始受支持。
ReplicateGdiContent
指定适配器是否支持 GDI 内容的复制。 从 Windows 10 开始支持。
NonCpuVisiblePrimary
指示 GDI 分配不需要 CPU 可见。 从 Windows 10 开始支持。
ParavirtualizationSupported
如果实现了所有 DDI,主机 KMD 需要设置上限。 从 Windows 10 版本 1703 (WDDM 2.2) 开始受支持。
IoMmuSecureModeSupported
指示驱动程序支持 基于 IOMMU 的 GPU 隔离。 从 Windows 10 版本 1803 (WDDM 2.4) 开始受支持。
DisableSelfRefreshVRAMInS3
在 S3 中禁用对 VRAM 自刷新的支持。 从 Windows 10 版本 1803 开始受支持。
IoMmuSecureModeRequired
指示 IOMMU 硬件和隔离支持 (IommuSecureModeSupported 标志) 是必需的,否则操作系统将不会启动适配器。 从 Windows 10 版本 2004 (WDDM 2.7) 开始受支持。
MapAperture2Supported
指示驱动程序支持 ioMMU DMA 重新映射所需的DXGK_OPERATION_MAP_APERTURE_SEGMENT2分页缓冲区操作。 从 WDDM 版本 2.9 开始受支持。
CrossAdapterResourceTexture
指定驱动程序是否提供第 2 层支持从跨适配器资源进行纹理。 指示支持 CrossAdapterResourceTexture 的驱动程序还必须指示对 CrossAdapterResource 的支持。 从 WDDM 版本 2.9 开始受支持。
CrossAdapterResourceScanout
指定驱动程序是否为扫描跨适配器资源提供第 3 层支持。 指示支持 CrossAdapterResourceScanout 的驱动程序还必须指示支持 CrossAdapterResource 和 CrossAdapterResourceTexture。 从 WDDM 版本 2.9 开始受支持。
第 3 层支持要求驱动程序能够对以下最低规范的跨适配器资源执行 由驱动程序在 DXGK_FLIPCAPS 中声明的受支持的翻转功能:
- 跨适配器主缓冲区大小为 1920 x 1080 或更小
- 以下任何受支持的 DisplayScanOut 格式的缓冲区像素格式:
- DXGI_FORMAT_R16G16B16A16_FLOAT
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
DXGI 运行时将查询驱动程序的 CrossAdapterResourceScanout 支持,如果受支持,则表示堆栈应沿着 1 个副本路径运行。 因此,声明支持 CrossAdapterResourceScanout 的驱动程序还需要:
- 支持 DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3。
- 对于上述最低规范的跨适配器主节点,支持所有相关的与演示文稿相关的 DDI。 例如 pfnCreateResource、pfnCheckMultiplaneOverlaySupport 和 pfnPresentMultiplaneOverlay/pfnPresent1。 有关必要详细信息,请参阅现有规格,例如 MPO 规范和混合规范。有关退出 CASO 的更多详细信息,请参阅以下部分。
AlwaysPoweredVRAM
Reserved
此成员是保留成员,应设置为零。 将此成员设置为零等效于将 Value 成员的 OutOfOrderLock) 设置为零后,将剩余的 31 位 (设置为零。 请注意,仅当DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN7时,“保留”才可用。
Value
此值用于对成员集体执行操作。
PagingNode
用于分页操作的节点的从零开始的索引。 如果驱动程序未设置 DXGK_DRIVERCAPS 结构的 SchedulingCaps 成员的 MultiEngineAware 位字段成员,则 DirectX 图形内核子系统将忽略 PagingNode 的设置。 此成员仅适用于 WDDM 1.x。 在 WDDM 2.x 中, PagingNode 已移动到 DXGK_PHYSICALADAPTERCAPS。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |