DXGK_VIDMMCAPS结构(d3dkmddi.h)
DXGK_VIDMMCAPS 结构标识内核模式显示微型端口驱动程序(KMD)支持的视频内存管理功能。
语法
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 线程设置此值和负载均衡。
DedicatedPagingEngine
此成员是保留的,应设置为零。
PagingEngineCanSwizzle
此成员是保留的,应设置为零。
SectionBackedPrimary
指定驱动程序是否支持节支持的主要分配。 从 Windows 8 开始支持。
CrossAdapterResource
指定驱动程序是否为 混合系统中的跨适配器资源提供复制和从中复制的第 1 层支持。 从 Windows 8.1 开始支持。
从 WDDM 2.4 开始,DXGI 可为更广泛的方案启用当前混合演示优化,无论呈现在一个 GPU 上,并在另一个 GPU 的监视器上呈现。 仅当这两个 GPU 都支持跨适配器资源时,才能执行此作。
下面列出了跨适配器资源属性。
- 资源只能分页到孔径 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 上限,并 gpuMmuSupported 或 IoMmuSupported 上限。 无法同时设置 GpuMmuSupported 和 IoMmuSupported。 从 Windows 10 开始支持(WDDM 2.0)。
GpuMmuSupported
指定适配器是否支持 GpuMmu 模型。 适配器不能同时支持 GpuMmu 和 IoMmu 模型。 有关详细信息,请参阅 GpuMmu 模型。 从 Windows 10 开始支持(WDDM 2.0)。
IoMmuSupported
指定适配器是否支持 IoMmu 模型。 适配器不能同时支持 GpuMmu 和 IoMmu 模型。 有关详细信息,请参阅 IoMmu 模型。 从 Windows 10 开始支持(WDDM 2.0)。
ReplicateGdiContent
指定适配器是否支持 GDI 内容的复制。 从 Windows 10 开始支持(WDDM 2.0)。
NonCpuVisiblePrimary
指示不需要 GDI 分配才能显示 CPU。 从 Windows 10 开始支持(WDDM 2.0)。
ParavirtualizationSupported
指示 KMD 支持 GPU 半虚拟化。 如果实现所有 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 标志引用),否则 OS 将不启动适配器。 从 Windows 10 版本 2004 开始支持(WDDM 2.7)。
MapAperture2Supported
指示驱动程序支持 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 分页缓冲区作,这是 IOMMU DMA 重新映射所必需的。 从 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 成员设置为零的剩余 31 位(在将 outOfOrderLock设置为 0 之后)。 请注意,仅当DXGKDDI_INTERFACE_VERSION DXGKDDI_INTERFACE_VERSION_WIN7时,< 才可用。
Value
此值用于共同对成员进行作。
PagingNode
要用于分页作的节点的从零开始的索引。 如果驱动程序未设置 MultiEngineAwareScheduleCaps 成员 DXGK_DRIVERCAPS 结构的位字段成员,DirectX 图形内核子系统将忽略 PagingNode的设置。 此成员仅适用于 WDDM 1.x。 在 WDDM 2.x 中,PagingNode 已移动到 DXGK_PHYSICALADAPTERCAPS。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista (WDDM 1.0) |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |