Список совместимости/Видеокарты: различия между версиями

Материал из Базы знаний сообщества разработчиков Эльбрус
Перейти к навигации Перейти к поиску
м (Антон Самсонов переименовал страницу HCL/GPU в Список совместимости/Видеокарты: Канонизация заголовка)
(Добавлена информация о поддержке API в Linux)
 
Строка 2: Строка 2:
  
 
{| class="wikitable"
 
{| class="wikitable"
|+ Производители дискретных графических процессоров
+
|+ Поддержка дискретных графических процессоров
 
|-
 
|-
 
! scope="col" | Производитель
 
! scope="col" | Производитель
Строка 26: Строка 26:
  
 
{| class="wikitable"
 
{| class="wikitable"
|+ Производители и модели встраиваемых графических процессоров
+
|+ Поддержка встраиваемых графических процессоров
 
|-
 
|-
 
! scope="col" | Производитель
 
! scope="col" | Производитель
Строка 33: Строка 33:
 
! scope="col" | Поддержка в [[ПНС]]
 
! scope="col" | Поддержка в [[ПНС]]
 
! scope="col" | Поддержка в [[Lintel]]
 
! scope="col" | Поддержка в [[Lintel]]
 +
|-
 +
| Imagination
 +
| GX6650
 +
| {{partial}}
 +
| {{yes}}
 +
| {{yes}}
 
|-
 
|-
 
| Silicon Motion
 
| Silicon Motion
Строка 63: Строка 69:
 
| {{yes}}
 
| {{yes}}
 
| {{yes}}
 
| {{yes}}
 +
|}
 +
 +
== Поддержка в Linux ==
 +
 +
Детальную информацию о поддержке видеокарт в «нативных» операционных системах типа Linux, а также иные подробности, см. по ссылкам выше на названиях производителей. Вкратце, на данный момент в Linux-системах лучше всего поддерживаются видеокарты марки AMD; конкретные поддерживаемые модели графических процессоров зависят от версии ядра Linux и прикладного графического стека Mesa — необходимо сверять версии в используемом дистрибутиве ОС и минимально необходимые для той или иной видеокарты.
 +
 +
{| class="wikitable"
 +
|+ Поддержка программных интерфейсов графики и вычислений
 +
|-
 +
! scope="col" | API
 +
! scope="col" | тип
 +
! scope="col" | AMD
 +
! scope="col" | Intel
 +
! scope="col" | Nvidia
 +
|-
 +
| CUDA
 +
| GPGPU
 +
| {{none}}
 +
| {{none}}
 +
| {{no}}
 
|-
 
|-
| Imagination
+
| OpenCL
| GX6650
+
| GPGPU
| {{partial}}
+
| {{yes}}
 +
| {{NA}}
 +
| {{none}}
 +
|-
 +
| OpenGL
 +
| 2D/3D
 +
| {{yes}}
 +
| {{NA}}
 
| {{yes}}
 
| {{yes}}
 +
|-
 +
| OpenVG
 +
| 2D
 +
| {{NA}}
 +
| {{NA}}
 +
| {{none}}
 +
|-
 +
| ROCm
 +
| GPGPU
 +
| {{no}}
 +
| {{none}}
 +
| {{none}}
 +
|-
 +
| Vulkan
 +
| 2D/3D
 
| {{yes}}
 
| {{yes}}
 +
| {{NA}}
 +
| {{none}}
 
|}
 
|}
  
== Поддержка в Linux ==
+
Поддержка AMD ROCm на данный момент не реализована, поскольку требуется трудоёмкое портирование всего этого фреймворка.
 +
 
 +
Поддержка Nvidia CUDA принципиально невозможна ввиду того, что технология является закрытой, и программные модули поставляются только в виде машинных кодов для архитектуры x86 и др. — использовать их можно разве что через двоичный транслятор уровня приложений ([[RTC]]) или двоичный транслятор уровня системы ([[Lintel]]).
 +
 
 +
Поддержка Vulkan и других графических API для видеокарт Nvidia не реализована в библиотеке Mesa, так как открытый драйвер nouveau имеет ограниченные возможности.
  
Детальную информацию о поддержке видеокарт в «нативных» операционных системах типа Linux, а также иные подробности, см. по ссылкам выше на названиях производителей. Вкратце, на данный момент в Linux-системах лучше всего поддерживаются видеокарты марки AMD; конкретные поддерживаемые модели графических процессоров зависят от версии ядра Linux и прикладного графического стека Mesa — необходимо сверять версии в используемом дистрибутиве ОС и минимально необходимые для той или иной видеокарты.
+
Закрытый ранее драйвер nvidia был частично открыт, но лишь в части ядерного модуля Linux — на пользовательскую часть это послабление не распространяется (а именно к ней относятся CUDA и т. п.), и та часть программных модулей по-прежнему поставляется только в виде машинного кода x86 и др. архитектур. Даже открытая часть поддерживает компиляцию пока только для x86 и ARM, — всё это исключает перенос на иные архитектуры. Более того, исходный текст не соответствует стандартам оформления кода в ядре Linux, поэтому принятие в апстрим даже небольшой открытой части маловероятно в обозримой перспективе.
  
 
== Поддержка в ПНС ==
 
== Поддержка в ПНС ==

Текущая версия на 14:07, 5 июля 2023

Короткий адрес этой страницы: HCL/GPU
Поддержка дискретных графических процессоров
Производитель Поддержка в 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.