供应和回收更改

对于 Windows 显示驱动程序模型 (WDDM) v2,有关 套餐回收 的要求正在放宽。 用户模式驱动程序不再需要在内部分配上使用套餐和回收。 空闲/挂起的应用程序将使用 Microsoft DirectX 11.1 中引入的 TrimAPI 删除驱动程序内部资源。

API 级别将继续支持套餐和回收,并且需要用户模式驱动程序将应用程序请求转发到内核,以便将资源提供或回收到内核。 在 WDDM v2 下,不再通过分配列表支持产品/服务分配,因此用户模式驱动程序需要更改其实现套餐和回收的方式。

如果资源在直接内存访问 (DMA) 缓冲区中没有引用,则用户模式驱动程序应立即通过调用 OfferCb 来提供应用程序提供的资源。 如果资源在正在生成的 DMA 缓冲区中具有挂起的引用,则用户模式驱动程序应延迟对 OfferCb 的调用,直到通过 RenderCb 提交依赖的 DMA 缓冲区之后。 图形内核将负责以非阻塞的方式延迟操作,直到提供资源是安全的,因此用户模式驱动程序无需担心必须延迟对 OfferCb 的调用,直到图形处理单元上的依赖操作完成, (GPU) 。

如果呼叫回收位于驻留要求列表中, (即用户或驱动程序已通过 MakeResidentCb 调用) 请求分配驻留,则调用回收将自动在分配中分页。 对于 ReclaimAllocations2Cb,此操作是异步的,并且返回分页围栏,处理方式应与从 MakeResidentCb 返回的围栏相同。 当发出围栏信号时,保证分配在 GPU 上驻留和可用。

ReclaimAllocationsCb/ReclaimAllocations2Cb 返回后,立即保证分配的后备存储有效,并且可以通过 Lock2Cb 将分配置于 CPU 访问权限下。 驱动程序无需等待分页围栏即可执行此操作。