LINUX.ORG.RU

Wayland: shm vs egl. На чём писать гуй под wayland?

 , ,


0

3

Изучаю клиентский wayland. Документации не завезли, единственный путь — анализ сорцов weston и спецификации вейленда. Из этого сложно что-то понять, поэтому извиняюсь за глупый вопрос, если что.

Спустя много дней копания вейленда я научился создавать окно с помощью EGL, а потом и рисовать в нём. Всё бы ничего, но мой хелловорлд потреблял ~50 метров оперативной памяти. Мне это не нравилось, приложения weston'a потребляли куда меньше ОЗУ, короче говоря я глянул сорцы этих приложений и обнаружил, что там, внезапно, не используется EGL, точнее используется мало где, в основном они юзали shm. Я переписал свой хелловорлд на этом самом shm и о чудо, оно потребляет от силы 2 mb рамы, и при этом мой хелловорлд работает точно также. Исходя из этого вопрос: Что выбрать? Какие плюсы у EGL по отношению к shm? На основе чего лучше делать гуёвые проги? (про тулкиты не надо)

Да и вообще, что такое shm в контексте вейленда? На вики немного про другое написано.

погоди-ка. давай уточним: видеокарта, драйвер, и т.д.

EGL - это по сути использование чего-то предоставленного драйвером. может быть он сделан через задницу в конкретном драйвере?

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

nvidia, nouveau

С чего ты взял, что в данном случае что-то с EGL не так? Из-за того, что потребляет много? Это нормально, OpenGL же. Тут больше тред про shm, так как штука мощная, хотелось бы про минусы услышать.

kokoko321
() автор топика

Я не в курсе, что такое shm, но про egl могу сказать, что уже скоро год как все, что связано с egl тотально сегфолтится на полу-проприетарных драйверах AMDGPU-PRO, т.е. целый год люди, которые хотят что-то лучше свободного amdgpu, но их не устраивает старый и объявленный deprecated блоб fglrx — ничего запустить, если там используется egl — не могут.

Это я, например.

slon
()
Ответ на: комментарий от kokoko321

а вот как раз egl жрать то и не должен. если только у тебя не ноут с дискреткой и встройкой

i36_zubov
()

ЯННП

shm — это что? IPC? Скинь ссылки на hello_world в обеих реализациях.

// «много дней копания» — srsly?

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

все, что связано с egl тотально сегфолтится на полу-проприетарных драйверах AMDGPU-PRO

1. Страдай.

2. Шли баг-репорты.

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

Я когда обрел уникальную возможность мыслить трезво, то освободился от страданий, а ты десять раз подумай, перед тем как предлагать другим страдать.

slon
()
Ответ на: ЯННП от Stil

Вот тут есть пример с egl и shm https://github.com/eyelash/tutorials //Правда я этот код не запускал, только что наткнулся на этот туториал, но там вроде всё также как и у меня, должно быть понятно.

// «много дней копания» — srsly?

А что тебе не понравилось? %%Очень много дней.%%

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

У проверенного дилера хоть обретал?

anonymous
()

гуй под wayland?
(про тулкиты не надо)

А какой может быть гуй без тулкитов?
Или ты свой тулкит хочешь запилить?

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

Или ты свой тулкит хочешь запилить?

По-моему тулкиты действительно нужны для сложных, толстых программ. Для мелких утилит же, ящитаю, вполне хватает примитивов. Обернул их в отдельные функции, чтобы удобно было, и готово. Тулкитом это не назовёшь, но задачи выполняет те же.

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

Для мелких утилит же, ящитаю, вполне хватает примитивов. Обернул их в отдельные функции, чтобы удобно было, и готово.

Тыщитаешь неправильно. Пиши на тулките и не выпендривайся. EGL нужен для OpenGL ускорения и только для него. shm тебе не нужен вообще.

morse ★★★★★
()

На чём писать гуй под wayland?

На Java, Python и Qt.

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

Потому что это механизм доступа к буферам на уровне протокола. Тебе как пользователю этим вообще заморачиваться не нужно.

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

Погоди, но этим ведь можно создавать окно, рисовать! Возможности есть, так почему бы не использовать? Оно, кстати, может в аппаратное ускорение?

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

Механизм общего доступа к памяти может в ускорение? Или что?

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

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

Механизм общего доступа к памяти может в ускорение? Или что?

Ну а я откуда знаю. Тема сложная, я в ней несколько дней.

А рисовать-то можно чем угодно, хоть вообще прямиком в drm.

А окошко им создать можно? Я бы рисовал drm'ом, но это некрасиво, нужны именно бэкенды(или как это называется) вейленда, чтобы он создал мне окно и сказал drm, что рисовать можно только там.

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

Для мелких утилит же, ящитаю, вполне хватает примитивов. Обернул их в отдельные функции, чтобы удобно было, и готово. Тулкитом это не назовёшь, но задачи выполняет те же.

Ну вот ты и создашь свой тулкит )
Что, кстати, весьма неплохо - учитывая какое говнище все остальные тулкиты в мире линукс.

Если ты создашь простой и практичный тулкит, то я первый заюзаю его в своих программулинах! Так что дерзай!

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

Я бы рисовал drm'ом, но это некрасиво

Красиво рисуют только тулкиты. Все остальные вообще не рисуют, а только выводят буфер на экран. А уж что ты в этот буфер положишь - то там и будет, красиво или нет.

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

Вот простой пример, если начинаешь связываться с EGL, у меня видеодрайвер AMDGPU-PRO, это официальный драйвер, который пришел на замену проприетарному fglrx.

Я хочу скомпилировать GIMP 2.9.4, но когда доходит до egl'овой части, у меня сегфолт:

/bin/sh: line 1:  8327 Segmentation fault      /usr/bin/gegl-0.3 ../../icons/Symbolic/12/gimp-close.png -o 12/gimp-close.png -- gegl:invert-gamma

он дергает gegl, который на egl и получается говно.

Таким образом, я не могу получить GIMP 2.9.4 на официальном драйвере от AMD.

slon
()

Документации не завезли

Значит, приложения им не нужны.

Deleted
()

Не имею малейшего понятия что ответить на поставленный вопрос. Однако хотелось бы узнать, что такое shm в данном случае? Не shared memory же (aka /dev/shm)?

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

Так и запишем — единственный способ написать что-то работающее под вейленд — это использовать qt/gtk.

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

Красиво рисуют только тулкиты. Все остальные вообще не рисуют, а только выводят буфер на экран.

В данном случае под словом «Красиво» я имел в виду немного другое.

Создать буфер на экране, оповестить об этом wayland, нарисовать что-то там с помощью drm и сказать вейленду, что всё готово — красиво.

Пробить «дыру» в вейленде и отосрать туда пиксели — некрасиво. Но на чистом drm, если я всё правильно понял можно только так. (Поправьте меня если что, я использовал только framebuffer, и там это выглядело как пробитие дыры поверх всего.)

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

Я тут подумал и понял, что мне нужно что-то небольшое, как shm, но с аппаратным ускорением, чтоб быстро было. Есть в wayland что-то для этого? Гуглил на счёт применения drm в wayland, ничего не нашел.

kokoko321
() автор топика

На metabrainfuck, диалекте brainfuck, который поддерживает метапрограммирование, конечно.

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