Поделиться через


Место жительства водителя в WDDM 2.0

В этом разделе содержатся сведения об изменениях места расположения драйверов для модели драйвера windows (WDDM) 2.0. Описанные функции доступны начиная с Windows 10.

В этом разделе

Раздел Описание

Общие сведения о месте расположения

С появлением новой модели расположения место расположения перемещается в явный список на устройстве, а не в список буфера для каждой команды. Диспетчер видеопамяти гарантирует, что все выделения в определенном списке требований к месту расположения устройств будут находиться в постоянном режиме, прежде чем будут запланированы какие-либо контексты, принадлежащие этому устройству.

Отслеживание использования выделения

После того как список выделения удаляется, диспетчер видеопамяти больше не будет видеть выделения, на которые ссылается определенный буфер команд. В результате диспетчер видеопамяти больше не может отслеживать использование выделения и обрабатывать связанную синхронизацию. Теперь эта ответственность будет нести драйвер пользовательского режима. В частности, драйвер пользовательского режима должен будет обрабатывать синхронизацию в отношении прямого доступа ЦП к выделению ресурсов, а также переименования.

Предложение и отзыв изменений

Для WDDM версии 2 требования, предъявляемые к предложению и освобождению , смягчаются. Драйверы пользовательского режима больше не требуются для использования предложения и освобождения от внутренних выделений. Неактивные или приостановленные приложения избавятся от внутренних ресурсов драйвера с помощью API trim, который был представлен в Microsoft DirectX 11.1.

Доступ к выделению для лиц, не являющихся резидентами

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

Существует две модели обработки такого недопустимого доступа в зависимости от того, поддерживает ли подсистема сбоя виртуальную адресацию GPU:

  • Для ядер, которые не поддерживают виртуальную адресацию GPU и используют список расположений выделения и исправлений для исправления ссылок на память, недопустимый доступ возникает, когда драйвер пользовательского режима отправляет список выделения, который ссылается на выделение, которое не находится на устройстве (т. е. драйвер пользовательского режима не вызывал MakeResidentCb при этом выделении). В этом случае графическое ядро помещает неисправный контекст или устройство в ошибку.
  • Для ядер, которые поддерживают виртуальные адреса GPU, но обращаются к недопустимому виртуальному адресу GPU либо из-за отсутствия выделения за виртуальным адресом, либо из-за допустимого выделения, но он не был резидентом, ожидается, что GPU вызовет неустранимую ошибку страницы в виде прерывания. При прерывании сбоя страницы драйвер режима ядра должен перенаправить ошибку в графическое ядро с помощью уведомления об ошибке новой страницы. Получив это уведомление, ядро графики инициирует сброс подсистемы в подсистеме сбоя и помещает неисправный контекст или устройство в состояние ошибки. Если сброс подсистемы завершается неудачно, графическое ядро повышает ошибку до полного обнаружения и восстановления времени ожидания (TDR) адаптера.

Обработка бюджетов места проживания

В WDDM версии 2 процессам будут назначаться бюджеты на объем памяти, который они могут хранить. Этот бюджет может меняться со временем, но обычно применяется только при нехватке памяти в системе. До Microsoft Direct3D 12 бюджет обрабатывается драйвером пользовательского режима в виде уведомлений об обрезке и ошибок MakeResident с STATUS_NO_MEMORY. Уведомление TrimToBudget , вытеснение и неудачные вызовы MakeResident возвращают последний бюджет в виде целочисленного значения NumBytesToTrim , указывающего, сколько необходимо обрезать, чтобы вписаться в новый бюджет.