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


Изменение предложения и освобождения от нее

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

Предложение и отказ будут по-прежнему поддерживаться на уровне API, и драйвер пользовательского режима должен перенаправывать запросы приложений для предложения или освобождения ресурсов в ядро. В WDDM версии 2 выделение предложений больше не поддерживается в списке выделения, поэтому драйверу пользовательского режима необходимо изменить способ реализации предложения и освобождения.

Ресурсы, предлагаемые приложением, должны быть немедленно предложены драйвером пользовательского режима путем вызова OfferCb, если ресурсы не имеют ссылки в буферах прямого доступа к памяти (DMA), которые в настоящее время создаются во всех контекстах. Если ресурсы имеют ожидающие ссылки в создаваемом буфере DMA, драйвер пользовательского режима должен отложить вызов OfferCb до тех пор, пока зависимый буфер DMA не будет отправлен через RenderCb. Графическое ядро будет отложить операцию без блокировки, пока не будет безопасно предлагать ресурс, и поэтому драйверу пользовательского режима не нужно беспокоиться о необходимости отложить вызов OfferCb до завершения зависимой операции на графическом процессоре (GPU).

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

Сразу после возвращения из ReclaimAllocationsCb/ReclaimAllocations2Cb резервное хранилище выделения гарантированно будет действительным, и выделение может быть помещено в доступ к ЦП через Lock2Cb. Водителю не нужно ждать на заборе подкачки, чтобы сделать это.