Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(五)

驱动程序功能要求

必须将以下 DXGK_DRIVERCAPS 结构成员设置为适当的值:

|-------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| HighestAcceptableAddress | 如果此地址小于驱动程序加载期间存在的系统内存的最高物理地址,则加载将失败。 |
| |------------------------| | InterruptMessageNumber | | 根据需要设置。 |
| SchedulingCaps | 请参阅 SchedulingCaps 要求。 |
| MemoryManagementCaps | 请参阅 MemoryManagementCaps 要求。 |
| GpuEngineTopology | 将 NbAsymetricProcessingNodes 设置为支持的 GPU 引擎数。 |
| WDDMVersion | |-------------------------------| | 必须设置为 DXGKDDI_WDDMv2_6 或更高版本。 | |
| PreemptionCaps | |----------------------------------------------------------------------------------------------------------------------------------------------------------------| | 将 GraphicsPreemptionGranularity 适当设置为硬件支持的级别。 至少应尝试支持数据包级抢占;即已计划但尚未开始执行的取消排队数据包。 将 ComputePreemptionGranularity 设置为除 D3DKMDT_COMPUTE_PREEMPTION_NONE 以外的任何内容.。 | |
| SupportPerEngineTDR | 必须设置为 TRUE。 |
| SupportRuntimePowerManagement | 根据需要设置.。 |
| SupportSurpriseRemovalInHibernation | 如果驱动程序支持在休眠时意外删除,则设置为 TRUE。 |
| HybridDiscrete | 必须设置为 FALSE。 |
| HybridIntegrated | 必须设置为 FALSE。 |
| InternalGpuVirtualAddressRangeStart | 根据需要设置。 如果不支持 GpuVA,请将 设置为零。 如果支持 GpuVA,则此值指定在分配内部资源供 OS 内部使用时 OS 将使用的 VA 范围的开头。 |
| InternalGpuVirtualAddressRangeEnd | 根据需要设置。 如果不支持 GpuVA,请将 设置为零。 如果支持 GpuVA,则此值指定在分配内部资源供 OS 内部使用时 OS 将使用的 VA 范围的末尾。 如果起始值和结束值均为零,则操作系统将使用整个可用 VA 范围。 |
| SupportSurpriseRemoval | 如果驱动程序即使在休眠之外也支持意外删除,则设置为 TRUE。 |
| ComputeOnly | 必须设置为 TRUE。 必须实现此标志。 |

以下 DXGK_DRIVERCAPS 结构成员必须相应地设置为零或 FALSE:

  • MaxAllocationListSlotId
  • ApertureSegmentCommitLimit
  • MaxPointerWidth
  • MaxPointerHeight
  • PointerCaps
  • NumberOfSwizzlingRanges
  • MaxOverlays
  • GammaRampCaps
  • ColorTransformCaps
  • PresentationCaps
  • MaxQueuedFlipOnVSync
  • FlipCaps
  • SupportNonVGA
  • SupportSmoothRotation
  • SupportDirectFlip
  • SupportMultiPlaneOverlay
  • MaxOverlayPlanes
  • SupportMultiPlaneOverlayImmediateFlip
  • CursorScaledWithMultiPlaneOverlayPlane0
  • HybridAcpiChainingRequired
  • MaxQueuedMultiPlaneOverlayFlipVSync
  • SupportContextlessPresent
  • 可分离电脑

​ SchedulingCaps 要求

以下 DXGK_DRIVERCAPS。SchedulingCaps 结构成员必须设置为适当的值:

  • MultiEngineAware : 必须设置为 TRUE。
  • VSyncPowerSaveAware :必须设置为 FALSE。
  • PreemptionAware : 必须设置为 TRUE
  • NoDmaPatching : 必须设置为 FALSE。
  • CancelCommandAware : 根据需要设置。
  • No64BitAtomics : 根据需要设置。
  • LowIrqlPreemptCommand :设置为 TRUE。 操作系统将在低 IRQL 下调用驱动程序的 DxgkDdiPreemptCommand 。
  • HwQueuePacketCap : 保留,设置为零。

MemoryManagementCaps 要求

以下 DXGK_DRIVERCAPS。MemoryManagementCaps 结构成员必须设置为适当的值:

  • OutOfOrderLock : 必须设置为 FALSE。
  • DedicatedPagingEngine : 必须设置为 FALSE。
  • PagingEngineCanSwizzle : 必须设置为 FALSE。
  • SectionBackedPrimary : 必须设置为 FALSE。
  • CrossAdapterResource : 根据需要设置。
  • VirtualAddressingSupported : 根据需要设置。 如果设置了此成员,驱动程序还必须设置 GpuMmuSupported 和/或 IoMmuSupported。
  • GpuMmuSupported : 根据需要设置。
  • IoMmuSupported : 根据需要设置。 当设备与 CPU 共享页表 (共享虚拟内存 (SVM) ) 时,将设置此上限。
  • ReplicateGdiContent : 必须设置为 FALSE。
  • NonCpuVisiblePrimary : 必须设置为 FALSE。
  • ParavirtualizationSupported : 通过 GPU 分区接口 (GPU-P 和 SR-IOV) 支持设备虚拟化的 MCDM 主机驱动程序应将此字段设置为 FALSE。 所有其他情况下 (没有 GPU-P 支持的物理计算机的驱动程序,或者已通过 GPU-P) 公开的 vGPU 的来宾驱动程序,应将此字段设置为 TRUE。
  • IoMmuSecureModeSupported : 根据需要设置。 如果此上限设置为 TRUE,则驱动程序支持 IoMmu 隔离, (设备具有 IoMmu 单元) 的专用页表。 如果此上限设置为 FALSE,则设备不能在"安全"虚拟机 (Windows 沙盒 或 MDAG) 中使用。
  • DisableSelfRefreshVRAMInS3 : 根据需要设置。

内存管理

需要虚拟寻址。 将来可能会启用物理寻址支持,设备不需要支持内存调节,仅支持 线性内存空间段 和 线性调节空间段 。

相关推荐
sukalot11 小时前
windows网络适配器驱动开发-为多个 Windows 版本生成 WiFiCx 驱动程序
windows·驱动开发
TE-茶叶蛋1 天前
Spec-Driven Development(规范驱动开发)
驱动开发
云栖梦泽2 天前
Camera驱动开发与应用开发中的零拷贝与DMA
linux·驱动开发·嵌入式硬件
脱胎换骨-军哥2 天前
C++ 嵌入式编程实例:从寄存器操作到底层驱动开发
开发语言·c++·驱动开发
智者知已应修善业2 天前
【使用D触发器74HC175实现0001 0011 0111 1111 1110 1100 1000的循环彩灯电路。】2025-4-28
驱动开发·经验分享·笔记·硬件架构·硬件工程
新元代码3 天前
SDD+TDD 双驱动开发模式实战指南
驱动开发
mk0154 天前
20V输入,12V 3A输出 效率96%DCDC降压芯片
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
mounter6254 天前
跨越鸿沟:从内核驱动开发到超大规模云端生产环境的思考
linux·驱动开发·linux kernel·kernel
Saniffer_SH5 天前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
2401_854151555 天前
嵌入式传感器驱动开发深度解析——从 I2C/SPI 驱动到数据融合算法
驱动开发·算法