Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(五)

对 DxgkDdiCreateProcess 的更改

需要更新 KMD DxgkDdiCreateProcess 函数以支持 VM 工作进程和 VM 进程。 以下字段已被添加到 DXGKARG_CREATEPROCESS 结构中:

  • hKmdVmWorkerProcess
  • ProcessNameLength
  • pProcessName

在 DXGK_CREATEPROCESSFLAGS 中添加了以下标志,以支持 VM 工作进程和 VM 进程:

  • VirtualMachineProcess
  • VirtualMachineWorkerProcess

DxgkDdiSetVirtualMachineData

DxgkDdiSetVirtualMachineData 被添加到 Dxgkrnl,以便将有关虚拟机的信息传递给 KMD。

向主机发送异步 VM 总线消息

从来宾 OS 中的 Dxgkrnl 发送到主机的某些信息是异步的。 这种方法提高了来宾中高频 Dxgkrnl API 调用的性能。 向主机发送每条同步 VM 总线消息的开销可能会很高。

异步消息包括:

  • D3DKMTSubmitCommand
  • D3DKMTSubmitCommandToHardwareQueue
  • D3DKMTSignalSynchronizationObjectFromGpu
  • D3DKMTWaitForSynchronizationObjectFromGpu

 GPU-PV 支持 LDA

GPU-PV 支持联动显示适配器(LDA)。 为确保一致的实现并支持将来可能将 LDA 支持反向移植到较旧的 Windows 版本,KMD 需要通过调用 DxgkCbIsFeatureEnabled(DXGK_FEATURE_LDA_GPUPV) 来检查 GPU-PV 中的 LDA 支持。 如果函数成功并返回“已启用”,则启用支持。 如果 KMD 不调用此回调,Dxgkrnl 假定 KMD 不支持 GPU-PV 中的 LDA。

如果 OS 支持该功能,则由驱动程序在用户模式下启用 LDA。 如果驱动程序在用户模式下启用 LDA,则应按如下所示执行此作。

运行时LDA 状态
D3D12 之前的运行时如果支持 DXGK_FEATURE_LDA_GPUPV,且来宾 OS 为 Windows 11 版本 22H2 (WDDM 3.1) 或更高版本,则启用。
非 DirectX 运行时 (Windows)如果支持 DXGK_FEATURE_LDA_GPUPV,且来宾 OS 为 Windows 11 版本 22H2 (WDDM 3.1) 或更高版本,则启用。 UMD 可以调用 D3DKMTQueryAdapterInfo(KMTQAITYPE_PHYSICALADAPTERCOUNT)并在返回大于 1 的物理适配器数时启用 LDA,而不是检查 OS 版本。
D3D12 运行时 (Windows)启用。
Linux(d3d12 和非 DX 运行时)如果支持 DXGK_FEATURE_LDA_GPUPV,则启用。

使用小于 DXGKDDI_INTERFACE_VERSION_WDDM3_0 的接口版本编译的驱动程序不会检查 DXGK_FEATURE_LDA_GPUPV。 这些驱动程序仍可为 Linux 运行时启用 LDA。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值