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

内存管理

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

 

你可能感兴趣的:(windows图形显示驱动开发,驱动开发)