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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.