LINUX.ORG.RU

Как юзернейм выводит ускоренную 2D-графику на рокчипе без иксов?

 ,


1

3

Смеркалось.

Потребовалось мне SDL-приложение на Rockchip RK3588 борде. На нее есть дебиан и убунта, и, соответственно, тулчейн есть прямо на плате, казалось бы, че тут собирать, просто собери так же как и на десктоп. Так-то оно так, собрал и работает, но – под иксами.

А как правильно собирать в бездесктопное? SDL поддерживает в качестве бекэндов много всякого, мне, если я правильно помню удавалось заводить в конфигурации SDL2 + directfb без иксов. Но директфби – еще, блин хуже. Как надо-то? У кого выведать, где почитать? Через OpenGL ES собранный под этот чип? Или еще куда? ЗА день нагуглить даже 100% рабочего направлдения не удалось.

Обсчем, взываю к коллективному разуму

★★★★★

А, забыл сказать: SDL собираю с поддержкой kmsdrm-бекэнда, собирается, но сегфолт при попытке запустить через него. Как к этому прикручивать видеодрайвер? Это же был главный вопрос. Не понятно именно где узнать какое дерево из этих либ строить? Есть EGL, GLESv2, rga, mali – вот все это

pihter ★★★★★
() автор топика

Если задача запускать только одно графическое приложение, это можно сделать в иксах. Что то в духе:

/usr/bin/xinit /usr/bin/xclock -digital -update 1 -- /usr/bin/X :0 -nolisten tcp vt7
imatveev13
()

Попробуй https://directfb2.github.io/

По презенташкам у них вроде и не плохо. Хотя эксперименты на Allwinner t113s3 меня не впечатлили.

Rockchip RK3588

Так он же и вяленого потянет. RK3568 справляется и на опенсор дравах.

По мне, так зря ты от иксов/вяленого отказываешься. С ними более универсально. Да же если приложение будет одно, его отладка будет проще.

AlexVR ★★★★★
()
Ответ на: комментарий от imatveev13

Может, но прежде чем отлаживать, я хотел разобраться в каком направлении правильно двигаться. Наверняка кто-то уже подобное делал и точно может сказать как

pihter ★★★★★
() автор топика
Ответ на: комментарий от AlexVR

По мне, так зря ты от иксов/вяленого отказываешься.

ну пока задача не столько сделать (оно ж уже работает) сколько понять как понять как это собирать для работы без иксов. Какая либа за что отвечает и какое дерево этих либ должно быть в моем случае

pihter ★★★★★
() автор топика

Для дорогих подписчиков докладываю:

Есть такая штука https://github.com/embtom/kmscube – мини примерчик, который показывает болтающийся кубик на OpenGL ES через DRM\KMS пряб без иксов, вайланда и деректфб, ускоренно, через видеодрайвер. Так вот – работает.

Поэтому сейчас я думаю что моя затея сделать SD2 + drmkms работоспособная только для малинки (потому что там видеорайвер), а на рокчипе нужна какая-то графическая библиотека еще, например SDL2 + OpenGLES + drmkms

Продолжаем наблюдения…

pihter ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Не, это не проблема, но и не для секса. Смысл топика – поисследовать можно ли такое сотворить без иксов, видится что можно – вот, нащупываю пути

pihter ★★★★★
() автор топика

вести с полей:

на рокчипе, по крайней мере у меня, видеодрайвер имплементит вот это вот все (цитата из рецепта):

ln -sf libmali.so ${D}/${libdir}/libEGL.so
ln -sf libmali.so ${D}/${libdir}/libEGL.so.1
ln -sf libmali.so ${D}/${libdir}/libGLESv1_CM.so
ln -sf libmali.so ${D}/${libdir}/libGLESv1_CM.so.1
ln -sf libmali.so ${D}/${libdir}/libGLESv2.so
ln -sf libmali.so ${D}/${libdir}/libGLESv2.so.2
ln -sf libmali.so ${D}/${libdir}/libOpenCL.so
ln -sf libmali.so ${D}/${libdir}/libOpenCL.so.1
ln -sf libmali.so ${D}/${libdir}/libgbm.so
ln -sf libmali.so ${D}/${libdir}/libgbm.so.1

полчается, что видеодрайвер – это, вроде как, все что мне нужно в качестве основы.

продолжаем наблюдение за пациентом )

pihter ★★★★★
() автор топика
Последнее исправление: pihter (всего исправлений: 1)

Обсчем, решилось: правильная формула SDL2 + OpenGL ES + drmkms – так завелось и работает. Если кому надо могу подробнее описать как собирать и примерчики

pihter ★★★★★
() автор топика
Ответ на: комментарий от AlexVR

Да, пока екту, потом может и без нее соберу: я хотел у ней подглядеть как sdl она собирает, а там тока через иксы.

Ядро могу завтра подсказать: щас уже не под рукой, блоб mali-что-то там ( из екто-пакета rockchip-mali )

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Смотрим опции пакета: https://git.yoctoproject.org/poky/tree/meta/recipes-graphics/libsdl2/libsdl2_2.28.5.bb#n54

Часть из них включается по опциям дистрибутива (DISTRO_FEATURES):

PACKAGECONFIG ??= " \
    ${PACKAGECONFIG_GL} \
    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio pipewire x11 vulkan', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \
    ${@bb.utils.contains("TUNE_FEATURES", "neon","arm-neon","",d)} \
"

Создай свой дистрибутив без иксов.

Есть опция kmsdrm:

PACKAGECONFIG[kmsdrm]     = "-DSDL_KMSDRM=ON,-DSDL_KMSDRM=OFF,libdrm virtual/libgbm"

Ей можно и поиграть. Главное что бы были определены реализации виртуальных пакетов.

AlexVR ★★★★★
()
Последнее исправление: AlexVR (всего исправлений: 1)