LINUX.ORG.RU

Вопрос про Raspberry Pi проприетарный OpenGL ES от Broadcom, и немного (много) ЖЖ

 , ,


0

2

Купил новую SD-карту, установил туда Raspbian 10 от 26 сентября 2019 года. Установку выполнил, удалив FAT32 при помощи fdisk, и сделав dd с образом. При первом запуске, программа установки расширила границы rootfs на весь диск и перезагрузила систему. Затем система была готова к работе. Появился мастер первого запуска, который спросил «а нет ли чёрной рамки на моём мониторе», а ещё про язык и не помню про что ещё.

Мне захотелось потестировать Месу. Последний раз я её тестировал ещё в Raspbian 8, там была версия 13. А тут 19.2-rc1.

Запустил Майнкрафт 1.12.2. Особо быстрее не стало. На этом испытание было закончено, потому что я не знаю, что запустить ещё. В теории, можно скомпилировать Aquaria.

Браузер Chromium что-то не очень резво воспроизводил видео 1080p. Хотя говорили, что в свежеустановленной системе даже ничего настраивать не придётся. Хорошо что есть omxplayer и youtube-dl.

Мне на глаза попалось руководство «плавный YouTube 1080p в Chromium». Первая команда скрипта удаляет пакет rpi-chromium-mods, вторая вписывает параметры запуска вида --enable-чтонибудь и --disable-чтонибудь. Запустил скрипт. Ютюб действительно стал планее. Но не идеален: раз в минуту фризы. omxplayer + youtube-dl снова выручают, даже стримы можно смотреть в их связке.

Спустя время я заметил, что в той инструкции есть ошибка. Первая команда удаляет пакет успешно, а вторая команда не вписывает параметры в файл конфигурации. Ошибка синтаксиса в скрипте, из-за чего sed ругается и ничего не делает. Конфиг не пополнился настройками! Ну, я внёс эти параметры вручную. Что получилось? А получилось странное... В chrome://gpu всё стало очень красиво. Hardware video decoding теперь Enabled и зелёненький (хотя раньше писал, что в линуксе это вообще не поддерживается). Но само видео превратилось в слайдшоу, как будто OpenGL моделируется софтварно. А когда было написано, что аппаратное декодирование не поддерживается, то всё прекрасно ускорялось аппаратно. Как же так? Upd: оказалось, что вместе с rpi-chromium-mods снеслось дополнение h264ify, а я думал, что оно всё ещё присутствует в моей системе. Поэтому пункт про установку этого дополнения я проигнорировал, сразу перейдя ко второму пункту - увеличение размера VRAM. Вернул обратно h264ify - и всё стало плавно!

В общем, я сделал как было. А фризы возможны из-за плохого блока питания (или кабеля), из-за чего иногда появляется значок молнии (подробнее об этом здесь, в разделе «Проблемы питания»). Планирую поменять на такой.

Итак, Месу потестировал, ускорение видео в браузере потестировал. Теперь мне стало интересно: можно ли включить в Raspbian 10 - проприетарный драйвер OpenGL ES? Оказалось что можно. В sudo raspi-config в Advanced Options можно выбрать или опенсорсный драйвер на базе Mesa, или Legacy OpenGL ES driver.

Ютюб не изменился. omxplayer работает прекрасно, как и раньше. Майкрафт конечно же перестал работать, потому что он требует OpenGL + GLX (это поддерживает только Mesa, а проприетарный драйвер не поддерживает ни то, ни другое, а только OpenGL ES и EGL). Я погонял Quake 3 и демосцену. Работает прекрасно.

Вот только с запуском Квейка возникла проблема. Сначала игра не нашла файлы libEGL.so и libGLESv2.so. Я компилировал бинарник игры, доступный по ссылке выше, ещё в Raspbian 8. Ну, не проблема, доустановил libgles2-mesa-dev и libegl1-mesa-dev. Файлы появились. Игра начала запускаться, но после сообщения libEGL warning: DRI2: failed to authenticate игра стартовать отказалась. Кстати, это же предупреждение стало появляться при запуске Chromium с проприетарным драйвером, но не возникает с Месой. Тогда я зашёл в /opt/vc/lib. И я с удивлением увидел, что libEGL.so и libGLESv2.so были переименованы в libbrcmEGL.so и libbrcmGLESv2.so! Зачем?! И кстати, оказывается, можно было не устанавливал -dev пакеты, а просто сделать симлинки этих файлов в правильные имена...

Поиграл в Квейк, после чего запустил Chromium и увидел сообщение, что EGL инициализировать не удалось из-за ошибки, а значит, браузер отключает аппаратное ускорение прокрутки страничек, и т.д. Я удалил симлинки в /opt/vc/lib. Теперь нормально стартовало. Как так? Хромиум полез в эту директорию смотреть библиотеки, а Quake не полез? Квейку надо было LD_LIBRARY_PATH указывать...

И всё-таки, почему Хромиум отключает аппаратное ускорение при попытке стартовать с броадкомовским EGL? Почему он не сдружился с ним? Меня напрягает предупреждение libEGL насчёт DRI2. Может нужно снести в /usr/lib/dri месовский драйвер DRI, и положить броадкомовский? Нужна помощь специалиста. А пока я прекращаю эксперименты и возвращаю опенсорсный драйвер Fake KMS

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 7)

Установку выполнил, удалив FAT32 при помощи fdisk, и сделав dd с образом.

А просто dd без удаления? Так и так потом partprobe делать.

А фризы возможны из-за плохого блока питания (или кабеля)

Можно питать прямо через пины +5V и GND гребенки от внешнего стабилизатора. У меня на 4-й малине хард от USB3 работал нестабильно при питании от блока, который уверенно отдавал телефону 2А, но сама малина не могла взять больше 1,2-1,3А от него.

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

>> Установку выполнил, удалив FAT32 при помощи fdisk, и сделав dd с образом.

> А просто dd без удаления? Так и так потом partprobe делать.

Ты прав. Всё равно перенос образа снесёт нафиг и таблицу разделов (если переносить именно в /dev/sdc, а не в /dev/sdc1), и начало файловой системы FAT. А где там у неё конец - уже не важно

>> А фризы возможны из-за плохого блока питания (или кабеля)

> Можно питать прямо через пины +5V и GND гребенки от внешнего стабилизатора. У меня на 4-й малине хард от USB3 работал нестабильно при питании от блока, который уверенно отдавал телефону 2А, но сама малина не могла взять больше 1,2-1,3А от него.

А вот с этого места поподробнее.

Вообще всё оказалось проще. Нехватка памяти. Я думал, что если в Raspbian 8 использовался LXDE с темой оформления Pixel, то в Raspbian 10 с тем же LXDE и темой оформления Pixel всё будет работать в точности так же. Ведь внешне-то всё выглядит одинаково. Но free -m развеял мои сомнения. Новое DE занимает больше памяти. Может из-за того, что я постоянно использую то GTK2, то GTK3 приложения. Может, выросли CUPS, SANE, Samba, или что там ещё находится в памяти постоянно? Так или иначе, запуск без DE сделал так, что Minecraft работает БЫСТРО.

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

Что касается того, что браузер не дружит с проприетарными библиотеками EGL и OpenGL ES от Broadcom. Я долго гуглил. Владельцы одноплатников Mali накладывают патчи на исходники браузера. Блин, а я не знаю как компилировать Chromium под эту систему...

Я ещё попробую параметр ALWAYS INDIRECT, может и правда Хромиум пытается использовать vc4_dri.so, а он месовский, а проприетарной dri я что-то не нашёл...

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

Тогда присоединюсь к вопросу. У меня помимо всех описанных тут проблем, таких же, еще одна - при переключении драйвера на любой вариант кроме fake KMS - по HDMI полная дичь со звуком. Звук нормально не выводится. Не знаю как это между собой связано.

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

Блин, а я не знаю как компилировать Chromium под эту систему.

Видимо надо поставить кросс-тулчейн (на нормальном компьютере) под ARM linux, и запустить сборку chromium с опциями для кросс-компиляции. Я так собирал firefox на ноуте для телефона с линуксом, ничего сложного не было.

А можешь дать ссылки на эти патчи?

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

Чуть позже. Это надо садиться за Raspberry Pi, и снова включать Chromium с GL Legacy. Я же не потрудился скопировать сюда текст ошибки, по которому гуглил, как решить

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

Но само видео превратилось в слайдшоу, как будто OpenGL моделируется софтварно. ... Как же так?

Оказалось, что вместе с rpi-chromium-mods снеслось дополнение h264ify, а я думал, что оно всё ещё присутствует в моей системе. Поэтому пункт про установку этого дополнения я проигнорировал, сразу перейдя ко второму пункту - увеличение размера VRAM. Вернул обратно h264ify - и всё стало плавно!

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

Встроенный стабилизатор малины (рассыпуха рядом с разъемом питания) похоже вообще сделан для галочки. Стоит что-нибудь жрущее повесить на USB и начинаются разного рода приколы.

Можно сразу подавать 5В на гребенку, минуя встроенный стабилизатор. Если повернуть плату портами к себе, то два самых дальних пина справа будут +5В, а следующий за ними GND. Ну или распиновку платы найди.

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

А зачем её регулировать? У тебя есть внешний стабилизатор напряжения определенной мощности, который в пределах этой мощности отдаёт 5В +/- допуски.

Radjah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.