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

内存管理

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值