Список совместимости/Видеокарты
Производитель | Поддержка в Linux | Поддержка в ПНС | Поддержка в Lintel |
---|---|---|---|
AMD | наиболее полная | по возможности | без ограничений |
Nvidia | ограниченная | по возможности | без ограничений |
Intel | н/д | н/д | н/д |
Производитель | Модель | Поддержка в Linux | Поддержка в ПНС | Поддержка в Lintel |
---|---|---|---|---|
Imagination | GX6650 | частично | да | да |
Silicon Motion | SM718 | да | да | да |
〃 | SM750 | да | да | да |
〃 | SM768 | частично | да | да |
Vivante | GC2500 | частично | да | да |
Vivante | GC8400 | частично | да | да |
Поддержка в Linux
Детальную информацию о поддержке видеокарт в «нативных» операционных системах типа Linux, а также иные подробности, см. по ссылкам выше на названиях производителей. Вкратце, на данный момент в Linux-системах лучше всего поддерживаются видеокарты марки AMD; конкретные поддерживаемые модели графических процессоров зависят от версии ядра Linux и прикладного графического стека Mesa — необходимо сверять версии в используемом дистрибутиве ОС и минимально необходимые для той или иной видеокарты.
API | тип | AMD | Intel | Nvidia |
---|---|---|---|---|
CUDA | GPGPU | нет | нет | нет |
OpenCL | GPGPU | да | н/д | нет |
OpenGL | 2D/3D | да | н/д | да |
OpenVG | 2D | н/д | н/д | нет |
ROCm | GPGPU | нет | нет | нет |
Vulkan | 2D/3D | да | н/д | нет |
Поддержка AMD ROCm на данный момент не реализована, поскольку требуется трудоёмкое портирование всего этого фреймворка.
Поддержка Nvidia CUDA принципиально невозможна ввиду того, что технология является закрытой, и программные модули поставляются только в виде машинных кодов для архитектуры x86 и др. — использовать их можно разве что через двоичный транслятор уровня приложений (RTC) или двоичный транслятор уровня системы (Lintel).
Поддержка Vulkan и других графических API для видеокарт Nvidia не реализована в библиотеке Mesa, так как открытый драйвер nouveau имеет ограниченные возможности.
Закрытый ранее драйвер nvidia был частично открыт, но лишь в части ядерного модуля Linux — на пользовательскую часть это послабление не распространяется (а именно к ней относятся CUDA и т. п.), и та часть программных модулей по-прежнему поставляется только в виде машинного кода x86 и др. архитектур. Даже открытая часть поддерживает компиляцию пока только для x86 и ARM, — всё это исключает перенос на иные архитектуры. Более того, исходный текст не соответствует стандартам оформления кода в ядре Linux, поэтому принятие в апстрим даже небольшой открытой части маловероятно в обозримой перспективе.
Поддержка в ПНС
Поддержка в Программе начального старта осуществляется одним из двух способов:
- для дискретных видеокарт — исполнением машинного кода x86 из Video BIOS с помощью эмулятора;
- для встроенной графики — специализированными для конкретной аппаратуры методами, либо на общих основаниях, либо гибридно (например, образ Video BIOS заготовлен в системном ПЗУ, но исполняется в эмуляторе как если бы хранился вместе с GPU).
Поскольку x86-эмулятор в ПНС гораздо более простой, чем в Lintel, он не может гарантировать исполнение произвольного машинного кода, и потому некоторые модели видеокарт, работоспособные из операционной системы, не могут быть инициализированы на этапе начального старта: либо эмуляция зацикливается и принудительно завершается по тайм-ауту, либо имеются другие признаки некорректного завершения работы (неочищенный стек, например), либо формальные симптомы отсутствуют, но фактически ничего не работает и изображения на экране нет.
Напротив, поддержка встроенных графических процессоров тщательно отлажена — в серийных изделиях; однако в опытных образцах перспективных моделей могут иметься свои особенности.
ПНС использует «белые списки» проверенных видеокарт. В некоторых разновидностях ПНС это может быть обобщённое правило «Все GPU марки ATi/AMD считаются потенциально совместимыми», в других случаях список конкретных устройств (VEN_ID:DEV_ID) зашит в исходный текст ПНС и не подлежит изменению пользователем, однако может быть обойдён командой:
set video unsupported номер
вместо обычной команды
set video output номер
Единственное различие между ними, помимо использования или игнорирования «белого списка», в том, что командой set video unsupported 0xfa
нельзя выбрать автоматическое использование последнего обнаруженного видеоадаптера при наличии нескольких — надо указывать конкретный номер устройства. Также необходимо иметь в виду, что эта настройка будет сброшена при очистке памяти NVRAM, в том числе при обновлении ПНС; и чтобы по-новой настроить вывод видео через видеокарту не из «белого списка», придётся опять подключать монитор к встроенному графическому адаптеру либо иному поддерживаемому, либо осуществлять настройку через консольный порт RS-232 / UART.
Поддержка в Lintel
Поддержка в Двоичном трансляторе уровне системы (Lintel) относится к этапам BIOS POST и BIOS Setup и осуществляется путём исполнения машинного кода x86 из Video BIOS, точно так же как из других блоков PCI Option ROM карт расширения.
После запуска гостевой операционной системы, такой как Windows или x86 Linux, используются собственные драйверы той операционной системы. Соответственно, качество поддержки оборудования в x86-системах зависит от их собственных драйверов и не зависит от Lintel.