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


Поддержка системы и драйверов для Resizable BAR

Дискретная единица обработки графики (GPU) обычно имеет только небольшую часть буфера кадра, открытую на шине PCI. Для совместимости с 32-разрядными операционными системами дискретные графические процессоры обычно утверждают регион ввода-вывода 256 МБ для буферов кадров. Это значение используется для конфигурации по типичному встроенному ПО.

На графических процессорах, поддерживающих регистр базовых адресов с изменяемым размером (BAR), Windows пересогласовывает размер регистра GPU после инициализации прошивки в модели драйверов отображения Windows (WDDM) версии 2 и более поздних. Для получения дополнительной информации о изменяемом BAR см. спецификацию Resizable BAR Capability в библиотеке спецификаций PCI SIG.

GPU, поддерживающий изменяемый BAR, должен гарантировать, что экран продолжает отображать статическое изображение во время перепрограммирования BAR. Отображение не должно быть пустым или мерцать во время этого процесса. Важно обеспечить плавный переход между изображением, отображаемым в микропрограмме, изображением загрузчика и первым изображением, созданным драйвером режима ядра. Во время повторного согласования транзакции PCI относительно GPU не происходят.

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

После успешного изменения размера драйвер в режиме ядра должен предоставить один CPUVisible сегмент памяти менеджеру видеопамяти. Диспетчер памяти видео сопоставляет виртуальные адреса ЦП непосредственно с этим диапазоном, когда ЦП должен получить доступ к содержимому сегмента памяти. Для получения дополнительной информации см. структуру DXGK_SEGMENTFLAGS, член CPUVisible.