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

内存管理

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

相关推荐
mg66810 小时前
安卓玩机工具----告别面具!SukiSU Ultra 内核级 Root 与终极隐藏实战指南
驱动开发·root系统
女神下凡1 天前
芯参谋(87):Linux 系统(SPI NOR)驱动开发指南
linux·运维·arm开发·驱动开发·嵌入式硬件·设计规范
cynicism??2 天前
Linux 与 ZXISOS 驱动开发架构对比
linux·驱动开发·架构
女神下凡2 天前
芯参谋(83):AliOS Things_驱动开发指南
arm开发·驱动开发·单片机·嵌入式硬件·设计规范·1024程序员节
万物智能信息科技2 天前
指纹识别传感器驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙
女神下凡2 天前
芯参谋(84):Linux eMMC 驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件
硅基手札3 天前
CAN 技术系列 08 · CAN 控制器寄存器与 IP 架构
驱动开发·架构·嵌入式开发·通信协议·can总线
硅基手札3 天前
CAN 技术系列 09 · CAN 传输模式:轮询 / 中断 / DMA
驱动开发·bsp·嵌入式开发·通信协议·can总线
ccbw163 天前
CH9444X多芯片组合的通道扩展架构与损耗叠加分析
驱动开发·架构·带宽·采集
AI模型调用笔记5 天前
Copilot Fusion:用 Python 跑通模型级联
人工智能·驱动开发·语言模型·copilot