Функция D3DKMTUpdateGpuVirtualAddress (d3dkmthk.h)

D3DKMTUpdateGpuVirtualAddress — это специальная операция, используемая в контексте ресурсов плитки. Это позволяет драйверу указать ряд операций сопоставления, которые будут применяться к виртуальному диапазону адресов процесса в одном пакете обновлений таблицы страницы.

Синтаксис

NTSTATUS D3DKMTUpdateGpuVirtualAddress(
  [in] const D3DKMT_UPDATEGPUVIRTUALADDRESS *unnamedParam1
);

Параметры

[in] unnamedParam1

Указатель на структуру D3DKMT_UPDATEGPUVIRTUALADDRESS , описывающую операцию.

Возвращаемое значение

Код возврата Описание
STATUS_SUCCESS Контекст устройства успешно создан.
STATUS_INVALID_PARAMETER Параметры были проверены и определены как неверные.

Эта функция также может возвращать другие значения NTSTATUS .

Комментарии

Диапазон виртуальных адресов графического процессора (GPU) во всех операциях (за исключением источника операций копирования) должен принадлежать одному диапазону виртуальных адресов, который был получен путем вызова Метода ReserveGpuVirtualAddressRange. Аналогичным образом диапазоны виртуальных адресов всех источников в операциях копирования должны принадлежать одному диапазону виртуальных адресов, который был получен путем вызова Метода ReserveGpuVirtualAddressRange.

Обновления таблицы страниц выполняются в контексте разбиения на страницы, выделенном для указанного контекста отрисовки, и выполняются на GPU только после того, как связанный контекст отрисовки сигнализирует FenceValue для указанного отслеживаемого объекта ограждения. После завершения обновления таблицы страниц контекст разбиения на страницы передает отслеживаемый объект ограждения в FenceValue+1, что позволяет контексту отрисовки выполнять тесную блокировку при обновлении таблицы страницы.

Диапазоны виртуальных адресов в операциях обновления могут пересекаться. Операции будут применяться в порядке их отправки.

В одном вызове UpdateVirtualAddress :

  • Все диапазоны виртуальных адресов в операциях сопоставления и конечный диапазон в операциях копирования должны принадлежать к одному зарезервированному (нулевому) диапазону.
  • Исходный диапазон виртуальных адресов в операциях копирования может находиться из другого зарезервированного (нулевого) диапазона.
  • Исходный диапазон виртуальных адресов во всех операциях копирования должен принадлежать к одному и тому же зарезервированному (нулевому) диапазону.

Драйверы могут отправлять множество вызовов UpdateGpuVirtualAddress , которые будут помещены в очередь за забором отрисовки. Если количество операций обновления в очереди превышает 128, вызывающий поток будет заблокирован до тех пор, пока диспетчер видеопамяти не обработает предыдущие операции.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Универсальное
Верхняя часть d3dkmthk.h (включая D3dkmthk.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

D3DKMT_UPDATEGPUVIRTUALADDRESS

ReserveGpuVirtualAddressRange