Когда Rockchip впервые представила процессор Rockchip RK3399 с интерфейсом PCIe, люди сначала надеялись, что смогут подключить видеокарту, но эти надежды быстро развеялись из-за ограничения адресации в 32 МБ.
Однако реализация PCIe на более новом процессоре Rockchip RK3588 не имеет такого ограничения, и в ноябре прошлого года Radxa представила демонстрацию с графической картой AMD Radeon Pro WX 5100 PCIe, подключенной к Rock 5B SBC, на которой запущена демонстрация glxgears на графическом процессоре Radeon.
Нам не удалось найти никаких инструкций по воспроизведению этой настройки, но это заинтересовало Джасбира(Jasbir), и он попытался провести собственный тест с Radxa Rock 5B, подключенного к AMD Radeon R7 520 (XFX R7 250 low-profile ) через «Удлинительный кабель M.2 Key M к адаптеру Riser для видеокарты PCIE x16» ( стоимость которого составила 14 долларов плюс налоги на Aliexpress ) и запитанного от платы LR1007 120 Вт 12 В постоянного тока ATX.
Эксперимент можно считать в большей степени успешным, поскольку ему удалось успешно запустить демонстрации 3D-графики kmscube, glmark2-drm и glmark2-es2-drm на его установке, как вы можете видеть из 3-минутного видео, встроенного ниже.
Однако собрать устройство оказалось весьма трудоемко, так как сначала ему пришлось собрать собственное ядро с драйверами и исправлениями видеокарты и обновить с его помощью образ Debian Radxa. Сначала это не сработало по двум основным причинам :
- Выделение памяти ограничено 32-битным для передачи PCIe DMA, и хотя плата с 4 ГБ ОЗУ может не обнаружить проблем, плата с 8 ГБ, использованная для тестирования, вероятно, выбрала диапазон адресов выше 4 ГБ.
- Карты AMD полагаются на отслеживание PCIe, а на межсоединении RK3588 отслеживание процессора отсутствует. Таким образом, любые кэшированные копии одного и того же блока памяти устройства не будут обновляться, чтобы оставаться синхронизированными.
После реализации обходных путей для двух вышеперечисленных проблем образец kmstest успешно запустился, но kmscube завершился с ошибкой:
1 2 3 4 5 |
GL_MESA_framebuffer_flip_y GL_EXT_depth_clamp GL_EXT_texture_query_lod " =================================== Using modifier ffffffffffffff Modifiers failed! Bus error |
Как объяснил Джасбир, требовалось еще одно исправление:
Чтобы исправить драйвер ядра Radeon, нужно убедиться, что память карты отображается как «Память устройства» типа Device-nGnRnE. Если бы это была «Обычная память», то разрешен невыровненный доступ. Это подразумевает исправление драйверов/приложений пользовательского пространства по мере возникновения этих ошибок, поскольку эти приложения могут напрямую манипулировать памятью карты. Для этой конкретной ошибки шины она была вызвана memcpy в драйвере radeon gallium и исправлена там, и как показано в видео пробегах kmscube
Исправление позволило всем образцам графики, показанным в видео, работать нормально. Однако запуск startx завершился ошибкой компилятора шейдера и потребовал дополнительной работы. Воспроизведение видео через VAPPI тоже не удалось. Таким образом, хотя это выглядит многообещающе, по-прежнему невозможно использовать видеокарту PCIe с SBC Rockchip RK3588 так же, как вы бы использовали eGPU с мини-ПК x86, но это может быть в будущем.
Более подробную информацию вы найдете в посте Джасбира. Обратите внимание, что он не предоставляет исправления и обходные пути, а просто выполняет шаги и объясняет ошибки, поэтому вы не сможете легко воспроизвести его демонстрацию без серьезной работы.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь