Windows 图形显示驱动开发-GpuMmu 示例方案

本文介绍常见使用方案以及实现这些方案所需的操作顺序。

更新进程的页表条目

下面是更新页表条目以将属于进程 (P) 的分配映射到物理内存的操作序列。 假定页表分配已驻留在图形处理单元中GPU)内存段。

  • 视频内存管理器在分页进程上下文中为进程 P 的根页表分配分配虚拟地址范围。
  • 视频内存管理器在分页进程上下文中为进程 P 的页表分配分配虚拟地址范围。
  • 视频内存管理器使用 UpdatePageTable 命令调用 DxgkDdiBuildPagingBuffer,以将分页进程页表项映射到进程 P 页表和页面目录。
  • 视频内存管理器使用 FlushTLB (PagingProcessRootPageTable) 命令调用 DxgkDdiBuildPagingBuffer。
  • 视频内存管理器使用 UpdatePageTable 命令调用 DxgkDdiBuildPagingBuffer,以使用物理地址信息填充进程页表条目。
  • 视频内存管理器使用 FlushTLB (进程 P 根页表) 命令调用 DxgkDdiBuildPagingBuffer。
  • 分页缓冲区提交以便在分页进程上下文中执行。

将分配内容从一个位置转移到另一个位置

下面是将分配内容从一个位置传输到另一个位置时的操作序列 (例如,从本地内存传输到系统内存) 。

  • 视频内存管理器为分页进程虚拟地址暂存区域中的源分配和目标分配分配虚拟地址范围。
  • 视频内存管理器使用 UpdatePageTable 命令调用 DxgkDdiBuildPagingBuffer。 命令将源虚拟地址范围的分页进程页表条目映射到本地 GPU 内存中的分配物理地址。
  • 视频内存管理器使用 UpdatePageTable 命令调用 DxgkDdiBuildPagingBuffer。 命令将目标虚拟地址的分页进程页表条目映射到系统内存。
  • 视频内存管理器使用 FlushTLB (分页进程根页表) 调用 DxgkDdiBuildPagingBuffer。
  • 视频内存管理器使用 TransferVirtual 命令调用 DxgkDdiBuildPagingBuffer 来执行传输操作。
  • 分页缓冲区提交到 GPU,以便在分页进程上下文中执行。

使用模式填充分配

下面是需要用模式填充分配时的操作序列。

  • 视频内存管理器为分页进程虚拟地址暂存区域中的目标分配分配虚拟地址范围。
  • 视频内存管理器使用 UpdatePageTable 命令调用 DxgkDdiBuildPagingBuffer。 命令映射目标虚拟地址的分页进程页表条目。
  • 视频内存管理器使用 FlushTLB (分页进程根页表) 调用 DxgkDdiBuildPagingBuffer。
  • 视频内存管理器使用 FillVirtual 命令调用 DxgkDdiBuildPagingBuffer 来执行该操作。
  • 分页缓冲区提交到 GPU,以便在分页进程上下文中执行。

使分配驻留在系统内存中

调用 D3DKMTMakeResident 以使分配驻留时,将执行以下操作。 假定应用程序进程页表驻留在内存中。

在应用程序线程上下文中:

  • 如果分配驻留在系统内存) 中,则为分配虚拟地址范围分配和固定物理系统内存页 (。
  • 为应用程序设备生成新的分页围栏 ID。
  • 将 MakeResident 命令提交到视频内存管理器工作线程。
  • 返回到应用程序。

在视频内存管理器工作线程上下文中:

  • 更新应用程序进程页表条目 。
  • 如果分配驻留在本地内存段中,请用零填充分配。
  • 使用分页围栏 ID 将 SignalSynchronizationObject 命令提交到计划程序。
初始化内存管理器控制结构
分页过程初始化

当图形设备切换到 D0 电源设备状态时,DirectX 图形内核初始化分页进程虚拟地址空间

分页进程是使用 DxgkDdiCreateProcess 创建的。
系统设备是使用 DxgkDdiCreateDevice 创建的。 此时,内核模式驱动程序可以在分页进程地址空间中保留虚拟地址范围。
为分页过程创建页表分配。
页表分配将提交到虚拟寻址功能结构中定义的内存段。
调用 UpdatePageTable 操作以初始化页表。

客户端进程初始化

创建新进程时,DirectX 图形内核将:

创建初始页表分配。
当进程中的第一个分配成为驻留时,初始化页表分配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值