Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE используется в рамках операции обновления таблицы страницы.
Синтаксис
typedef struct _DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE {
UINT PageTableLevel;
HANDLE hAllocation;
DXGK_PAGETABLEUPDATEADDRESS PageTableAddress;
DXGK_PTE *pPageTableEntries;
UINT StartIndex;
UINT NumPageTableEntries;
UINT Reserved0;
DXGK_UPDATEPAGETABLEFLAGS Flags;
UINT64 DriverProtection;
UINT64 AllocationOffsetInBytes;
HANDLE hProcess;
DXGK_PAGETABLEUPDATEMODE UpdateMode;
DXGK_PTE *pPageTableEntries64KB;
D3DGPU_VIRTUAL_ADDRESS FirstPteVirtualAddress;
} DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE;
Члены
PageTableLevel
Уровень таблицы страницы, которая обновляется.
hAllocation
Дескриптор драйвера режима ядра для выделения, сопоставленного записями таблицы страницы. Дескриптор возвращается драйвером режима ядра из DxgkDdiCreateAllocation. Дескриптор может быть null для выделения, которые не имеют дескриптора драйвера режима ядра (таблицы страниц, каталоги страниц и т. д.).
PageTableAddress
Адрес таблицы страниц для обновления. Если DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_CPU_VIRTUAL, виртуальный адрес ЦП находится в поле CpuVirtual. Если DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_VIRTUAL, виртуальный адрес GPU находится в поле GpuVirtual. Если DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_PHYSICAL, физический адрес GPU находится в поле GpuPhysical.
pPageTableEntries
Записи, которые необходимо скопировать. Индекс нуля в массиве p pPageTableEntries соответствует StartIndex в массиве записей таблицы страницы драйвера.
StartIndex
Начальный индекс записи таблицы страницы в таблице страницы, в которой должны быть скопированы записи. Индекс массива записей таблицы страницы основан на нулях.
NumPageTableEntries
Количество записей, которые необходимо скопировать.
Reserved0
Этот элемент зарезервирован и должен иметь значение нулю.
Flags
DXGK_UPDATEPAGETABLEFLAGS структура, описывающая операцию обновления.
DriverProtection
Передан UMD в MapGpuVirtualAddressRangeCb.
AllocationOffsetInBytes
Если hAllocation не имеет значения NULL, это поле указывает относительное смещение (в байтах) с начала выделения на первую страницу, предназначенную для этой операции обновления. Если обновление предназначено для нескольких страниц из hAllocation, эти страницы гарантированно будут последовательными. Например, диспетчер памяти видео может обновлять виртуальный адрес GPU до страницы 4,5 6,7 в hAllocation. Никогда не будет случая, когда драйвер увидит одну операцию обновления, которая предназначена для непоследовательных страниц (например, 4 5,7). Обратите внимание, что хотя страницы гарантированно будут последовательными с точки зрения выделения, они могут не быть физически смежными в памяти.
hProcess
Обработчик процесса драйвера режима ядра для процесса, записи таблицы страниц которого обновляются. Это значение, возвращаемое из DxgkDdiCreateProcess.
UpdateMode
Определяет значение PageTableAddress. При инициализации таблиц страниц для процесса разбиения страниц режим обновления всегда DXGK_PAGETABLEUPDATE_CPU_VIRTUAL и pDmaBuffer имеет значение NULL. В этом случае драйвер должен немедленно обновлять таблицы страниц. В других случаях UpdateMode задано значение, указанное в DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode.
При обновлении записей таблицы страницы для конечной таблицы диспетчер памяти видео предполагает, что каждая запись охватывает страницу размером 4 КБ. Если страница GPU больше (4 КБ * 2n), диспетчер памяти видео будет предоставлять записи в массиве, которые указывают на страницах GPU. Драйвер режима ядра может потребоваться только инициализировать записи таблицы страниц, указывающие на начало страниц GPU. На следующем рисунке показано это для случая, когда страница GPU составляет 16 КБ.
pPageTableEntries64KB
Записи, которые необходимо скопировать из таблиц страницы 64 КБ. Индекс нуля в массиве p pPageTableEntries соответствует StartIndex в массиве записей таблицы страницы драйвера. Массив должен использоваться только в том случае, если задано ограничение DXGK_GPUMMUCAPS::D ualPteSupported.
FirstPteVirtualAddress
Виртуальный адрес GPU, сопоставленный первой обновленной записью таблицы страницы.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows 10 |
| минимальный поддерживаемый сервер | Windows Server 2016 |
| заголовка | d3dkmddi.h (include D3dkmddi.h) |