DXGKCB_RESERVEGPUVIRTUALADDRESSRANGE callback function
DxgkCbReserveGpuVirtualAddressRange允许KMD在创建graphics kernel process时reserve 一段GPU VA。并且,只有在graphics kernel process创建时才能reserve GPU VA(例如,在DxgkDdiCreateProcess中),其他任何时候都不行。
Reservation操作同样可以发生在 systen device和context存在的system process中。
root page table的第一个entry(index 0的页表项)将被VMM初始化为invalid,驱动的reservation操作将从index 1的页表项开始。驱动的reservation操作必须总是精确的几个VA空间,这些空间被leaf页表覆盖,因为指定的页表项不能在VMM和KMD之间共享。驱动reserve的PTE必须被VMM初始化为invalid并且被驱动重写用来引用一个被驱动管理的并在内部分配的页表。VMM将在每次对应页表变为resident时更新reserved的PTE为invalid,
Syntax
DXGKCB_RESERVEGPUVIRTUALADDRESSRANGE DxgkcbReservegpuvirtualaddressrange;
NTSTATUS DxgkcbReservegpuvirtualaddressrange(
IN_CONST_HANDLE hAdapter,
INOUT_PDXGKARGCB_RESERVEGPUVIRTUALADDRESSRANGE pArgs
)
{...}
Parameters
hAdapter
A handle to the display adapter.
pArgs
The DXGKARGCB_RESERVEGPUVIRTUALADDRESSRANGE structure that describes the operation.
Return Value
Returns STATUS_SUCCESS if it succeeds. Otherwise, it returns one of the error codes defined in Ntstatus.h.
Requirements
Minimum supported client | Windows 10 |
Minimum supported server | Windows Server 2016 |
Target Platform | Desktop |
Header | d3dkmddi.h (include Dispmprt.h) |