Купил новую 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