Driver residency in WDDM 2.0(MSDN翻译)

Driver residency in WDDM 2.0

这节描述了WDDM v2的一些驱动residency的一些改变。这些功能在win10之后开始生效。

(PS: residency 之前一直没有想到中文该叫什么,之后就按驻留来翻译,比较易于理解)

Residency overview 

简单介绍新的驻留模型,驻留特性被从每个CB(command buffer)的列表中移动到了设备上的一个显式列表中。VMM将负责确保所有在特定设备驻留需求列表中的资源在被任何属于这个设备上下文调度执行之前能驻留在内存中。

Allocation usage tracking

随着CB中的列表消失,VMM不再需要对特定CB中所引用的Allocation可见。这种结果是VMM不能再跟踪资源的使用和处理相关的同步操作。这个责任移到了UMD中。UMD将处理相关的同步操作,将视CPU对资源的直接访问等同于重命名。

Offer and reclaim changes

对于WDDM v2,资源需求的提供和回收将不再严格。UMD不再需要提供和回收内部资源。空闲或刮起的应用程序会通过Trim API清除驱动内部资源。 Trim API在MS DX11.1中被引入。

Access to non-resident allocation

GPU访问非驻留资源是非法的,结果将导致设备因为应用程序产生错误被移除。

有两种不同的模型来处理这种非法访问,取决于错误引擎是否支持GPU VA。

  • 对于不支持GPUVA而使用Patch location列表来Patch内存引用的引擎,非法访问错误会出现在UMD提交含有一个未在设备上驻留的资源引用的资源列表时(i.e. UMD没有为该资源调用 MakeResidentCb )。当错误出现时,图形内核会设置这个错误的上下文或设备进入错误状态。
  • 对于支持GPUVA,但是访问GPUVA非法的引擎,可能是因为这个VA没有被映射资源或者这个VA映射到了有效的资源但是并没有驻留在内存中,GPU将会以中断的形式抛出一个不可恢复的页面错误。当页面错误中断发生时,KMD需要通过一种新的页面错误通知发送这个错误到图形内核。收到通知之后图形内核初始化错误引擎的引擎重置过程,并且将出错的设备/上下文置为错误状态。如果引擎重置不成功,图形内核会将这个错误升级为整个适配器范围的TDR。
  • Process residency budgets
  • 在WDDM v2中,进程会指定内存的预算,整个预算决定了有多少内存可以驻留。整个预算会随时间调整,但是通常只会在系统内存压力过大时被强制改变。在MS D3D12之前这个预算会被UMD以Trim通知的形式进行处理,调用MakeResident会返回TATUS_NO_MEMORY错误值.TrimToBudget通知,Evict和失败的 MakeResident 调用都以NumBytesToTrim整数值形式返回最新的预算值,NumBytesToTrim整数值显示了为了适应新预算值还需要裁剪掉多少驻留内存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值