Context allocation(MSDN翻译)

本文介绍了KMD如何通过DxgkCbCreateContextAllocation为上下文分配内存,并新增了AccessedPhysically标志来确保资源被正确分配。同时,文章还讨论了如何使用DxgkCbMapContextAllocation为上下文分配分配GPUVA,以及如何通过DxgkCbUpdateContextAllocation更新上下文分配的内容。

Context allocation

为给一个上下文的保留区域分配内存,KMD能够通过 DxgkCbCreateContextAllocation使用Context的Allocation。一些新功能被添加到上下文Allocation中,能够让这些Allocation能够适合新的GPU VA模型。

AccessedPhysically

一个上下文Allocation能够被指定为AccessedPhysically标志,代表这个资源应该被分配到连续的内存段或者被映射到aperture中能访问系统内存。

Assigning a GPU virtual address to a context allocation

VMM暴露了一个新的 DxgkCbMapContextAllocation 服务给KMD来分配GPU VA给上下文Allocation。

上下文Allocation被映射到与指定上下文关联的应用程序的GPU VA空间中。

注意:当上下文Allocation被直接映射到应用程序GPUVA空间时,驱动不应该暴露特权的信息。

这些服务的行为类似于用户模式的副本(PS:不太理解这一句These services behave like their user mode counterpart)。

Updating the content of a context allocation

有时KMD可能有需要更新一个上下文Allocation的内容。例如,一个特权上下文Allocation(AccessedPhysically,没有使用GPU虚拟地址映射)可能包含指向一个有关特殊上下文的页目录的引用。当KMD被 DxgkDdiSetRootPageTable通知这个页目录被改变位置时,KMD可能需要更新这个上下文Allocation的内容。

对于这种目的 DxgkCbUpdateContextAllocationDDI接口被添加。这个DDI接口发送一个请求给VMM执行队列来初始化这个上下文Allocation的更新操作。这个被更新的上下文Allocation被映射到了VMM换页进程的Scratch区域,之后驱动被UpdateContextAllocation换页操作调用,用来完成实际的上下文Allocation的更新操作。VMM会在更新操作完成之后返回DxgkCbUpdateContextAllocation。

KMD能够在调用DxgkCbUpdateContextAllocation 接口和UpdateContextAllocation换页操作的结果之间传递驱动的私有数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值