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


Использование модели буфера DMA с гарантированным контрактом

Модель драйвера дисплея для Windows Vista гарантирует размер буферов DMA и списков расположения исправлений для устройства отрисовки. Список расположений исправлений содержит адреса физической памяти ресурсов, на которые ссылаются команды в буфере DMA.

В режиме гарантированного контракта драйвер дисплея пользовательского режима учитывает точный размер буфера DMA и списка расположений исправлений, доступных для преобразования, когда драйвер отображения пользовательского режима заполняет буферы команд и вызывает pfnRenderCb , чтобы отправить их в драйвер мини-порта дисплея. После каждого вызова pfnRenderCb драйвер отображения пользовательского режима получает размер буфера DMA и списка расположений исправлений, доступных для следующего преобразования (то есть следующего вызова pfnRenderCb).

Диспетчер видеопамятки гарантирует, что буферы DMA и списки расположения исправлений для этого устройства не будут обрезаны до завершения следующего преобразования. Драйвер мини-порта дисплея должен иметь возможность преобразовать один буфер команд в один буфер DMA и один список расположений исправлений. Если такое преобразование невозможно, буфер команд пользовательского режима по определению недопустим. Драйвер мини-порта дисплея не может вернуть состояние, указывающее, что во время преобразования отсутствует буфер DMA и списки расположения исправлений; Это приводит к ошибке диспетчера видеопамятки в системе, так как диспетчер памяти не соответствует требованиям гарантированного контракта DMA.