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 : 根据需要设置。

内存管理

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

相关推荐
程序猿玖月柒8 小时前
ubuntu22.04.2安装英伟达驱动
驱动开发·驱动·英伟达·端侧ai
Tian_Hang8 小时前
Linux基础知识(四)
linux·ide·驱动开发·计算机视觉·硬件工程·动画
尔染君子13 小时前
嵌入式Linux驱动开发(基于树莓派rasberrypi 5的LED驱动开发)
linux·运维·驱动开发
小此方15 小时前
Re:Linux系统篇(二十九)文件篇·二:深度解析Linux文件描述符、dup2指针覆盖与内建命令重定向完全解析
linux·运维·驱动开发
小小程序员mono1 天前
CI 早已消亡,GitHub 还在固守旧时代
驱动开发
可以飞的话2 天前
图像格式基础
驱动开发
大江东去浪淘尽千古风流人物5 天前
【Micro-WL Robot】桌面级轮腿机器人全栈解析:LQR平衡控制、SimpleFOC驱动与五连杆腿部机构源码深度拆解
驱动开发·机器人·esp32·lqr·simplefoc·轮腿机器人·平衡控制
咖啡星人k5 天前
自然语言驱动开发(NLDD):全栈开发的新范式与实践指南
驱动开发
阿昭L6 天前
Windows键盘过滤
windows·驱动开发·windows内核·过滤驱动
hai3152475436 天前
# 矩阵算法·算子对齐工具 v6.1 — 技术规格与使用手册
java·开发语言·驱动开发·神经网络·spring·目标检测·矩阵