LINUX.ORG.RU
ФорумTalks

[wayland]Еще шевелится

 


0

0

В экспериментальном дисплейном сервере Wayland появилась поддержка Qt

Автор проекта Wayland, в рамках которого развивается альтернативный X-серверу гибрид дисплейного и композитного менеджера, сообщил о первых успехах в портировании библиотеки Qt. В настоящий момент поверх Wayland удалось запустить Qt-виджет analogclock. Отмечается также прогресс портирования GTK+ 3.0 для Wayland и инициатива компании Intel по задействованию Wayland для платформы MeeGo Touch.

Основная идея, заложенная в Wayland, заключается в том, что уровне сервера выполняется только переадресация всех окон, а все операции рендеринга и управления окнами производятся на стороне клиента и передаются для обработки серверу со встроенным композитным менеджером. Сервер не поддерживает API отрисовки и оперирует только с уже сформированными окнами, что позволяет избавится от двойной буферизации, при использовании таких библиотек как GTK+ и Qt. Все операции отрисовки производятся силами дополнительных библиотек, например, FreeType и Cairo. Взаимодействие с аппаратным обеспечением, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM) графических карт, производится через KMS-модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя.

★★★★★
Ответ на: комментарий от eugene2k

>Потому что отрисовать десять битмапов, наложить их друг на друга и послать серверу результат - быстрее чем отрисовать десять битмапов, послать эти десять битмапов серверу и попросить его наложить их друг на друга.

Pixmaps, которые пересылаются на сервер, там и хранятся. Клиент получает resource id. И дальше оперирование идет с помощью этого id. Больше pixmap не пересылается, а сервер сам компонует и отображает их, когда надо. Pixmaps также могут сохраняться в памяти видеокарты. Подвинул ты окошко, часть загороженных элементов выползло, а сервер сам все перенакладывает, ему второй раз получать ничего не надо, так как для компоновки у него все есть.

Есть другой вариант, когда картинка (если очень большая) рисуется и хранится на стороне клиента. То есть клиент сам все компонует и использует свои процедуры для отрисовки, а потом пересылает на сервер (а расширение MIT-SHM позволяет это сделать через общую память, если сервер и клиент на одной машине). А если на разных, то при любом раскладе придется слать по сети.

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

> а не надо делать из линукс венду. просто осталось какое то число несуразностей которые надо пофиксить.

Методы, которые здесь предлагаются для исправления несуразностей, выдают в авторах этих методов генетических вендузятнегов, которые не хотят или не могут ничему научиться.

будь поспокойней.

Я спокоен. Фразы «пох на» и «терпеть не могу идиотов» произносятся холодным отстраненным тоном, как диагнозы.

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

>Подвинул ты окошко

А если не «подвинул» идеальный прямоугольник, а «растянул» или применил видеоэффекты?

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

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

возможность запуска программы с выводом на другой графический терминал - возможность мягко скажем сомнительной нужности. ты запустил программу на удалённой машине, соединение упало и что будет? или же просто подключился к удалённой машине и запустил там программу - разницы в количестве передавамых данных для отрисовки видимо не так много (ну мы на удалённой машине FullHD видео не смотрим как фон у VIM-а, да? ).

генетических вендузятнегов

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

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

> возможность запуска программы с выводом на другой графический терминал - возможность мягко скажем сомнительной нужности.

У тебя тяжелая форма дислексии?

мы будем красноглазить и ругать правильные технологии потому что у нас в линуксе многое реализованно криво?

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

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

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

«вендузятники будут строить слабоумными планы сломать мои инструменты.»

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

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

> перевожу: я буду защищать кривость потому что так уже реализовано

Не так, но близко.

(и шансов на исправление очень мало).

Не очень близко

удобство не нужно

Очень далеко.

е кто указывает на кривость и недоделанность технологии - вендузятники и я их буду оскорблять.

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

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

>А если не «подвинул» идеальный прямоугольник, а «растянул» или применил видеоэффекты?

Мы ведь про локальный сервер, да?

А какие проблемы с этим-то в свете сказанного мной выше? Два варианта на выбор: Pixmaps и Images + MIT-SHM (XShmPutImage). Даже есть вариант Pixmaps + MIT-SHM (XShmCreatePixmap), но некоторые драйвера это отключают по умолчанию, однако можно включить.

К слову, куча динамической графики на экране — это совсем не картинки, а команды XRender или X Core Protocol.

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

Последствия ломки протокола иксов в большинстве случаев малозначительны, учитывая что 99% программ используют не xlib а разного рода тулкиты. Достаточно перевести тулкиты на новый api чтоб заставить эти программы работать в новой оконной системе.

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

>Pixmaps, которые пересылаются на сервер, там и хранятся.
До тех пор пока не появится необходимость их обновить. Заменить, например, текст у кнопки, или перерисовать окно браузера при прокрутке.

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

Даже есть вариант Pixmaps + MIT-SHM (XShmCreatePixmap), но некоторые драйвера это отключают по умолчанию, однако можно включить.

Напомнишь как оно включалось? Помню в nvidia оно давало нифиговое ускорение 2D

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

> Последствия ломки протокола иксов в большинстве случаев малозначительны

Ну я же и говорю, что не знаю людей, которые могут адекватно оценить последствия ломки протокола (да, это толстый намек, что ты к ним не относишься).

достаточно перевести тулкиты на новый api

Ну давай, переведи мне Gtk v2.x на «новый API». Потом замени Gtk в уже развернутом софте.

Блин, откуда вы такие беретесь - те, которым всё легко?

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

>До тех пор пока не появится необходимость их обновить. Заменить, например, текст у кнопки, или перерисовать окно браузера при прокрутке.

Слушай, ты специально не читаешь? Ты посмотри сам, как реализованы GdkImage и GtkPixmap (а также QImage и QPixmap [1]). Между ними есть разница. Так вот, GdkImage смотрит, есть ли расширение MIT-SHM, и работает через общую память. Даже не через сокеты! GdkImage — это client-side картинка. А GtkPixmap — это как раз то, что отправляется храниться на сервер. Можно иконки отправлять на сервак жить. Это что касается локального случая. В Windows реализаций QPixmap и QImage одинаковая, в X11 — разная.

Если сервер удаленный, то про прокрутке окна браузера тебе при любом другом методе взаимодействия надо будет всю картинку заново посылать по сети. У тебя удаленный дисплей сам что-ли поймет, что там на следующей страничке? Или RDP, VNC и пр. уже используют новую версию libastral? При любом раскладе тебе придется новую картинку слать. Однако если картинка не меняется (иконки, например) или меняется слишком редко, то можно ее отправить жить на сервер. Тогда она не будет при каждом обновлении экрана передаваться.

А вот QtWebKit, кстати, активно использует QPixmap для отображения картинок в HTML [2][3]. А потому что удаленный X-сервер тогда сможет сам делать bitblt, а подгружается будет только вылезшая часть. А также эти картинки сразу становятся доступны как текстуры для GL на стороне сервера, так как X Server их может хранить в памяти видеокарты и картинки могут мигрировать между main mamory и video memory. QImage тоже используется. Особенно в случае, когда надо читать из картинки, ибо тогда возникает запрос к серверу и ожидание ответа — чистый round-trip. Удобнее тогда эти операции проводить на стороне клиента. Но тогда картинку для отображения все-равно надо будет грузить на сервер. В локальном случае обмен через Shm будет.

[1] http://doc.qt.nokia.com/4.7/qpixmap.html, раздел Detailed Description

[2] http://doc.trolltech.com/4.7/qtwebkit-bridge.html, раздел Pixmaps and Images.

[3] http://www.mentby.com/zack-rusin/qimage-vs-qpixmap.html

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

>Напомнишь как оно включалось? Помню в nvidia оно давало нифиговое ускорение 2D

Найти не составило труда. Option «AllowSHMPixmaps». Только я читал, что наоборот у них замедляются некоторые оптимизационные дела, поэтому и выключено. Скорее всего, это связано с затрудненением перемещения этих shared pixmaps в памяти. Истории не знаю.

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

Сейчас проверю на ATI что он дает, но на нвидии скорость 2D в проприетарном резко возрастала и приближалась вплотную к nouveau, впрочем 3D эффекты в kwin'е наоборот начинали тормозить, в отличии от nouveau, но там эта опция видимо по умолчанию включена.

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

Я думаю, что это опция только nvidia, а не общая.

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

>>Потом замени Gtk в уже развернутом софте.

А есть смысл это проделывать с развернутым софтом?

А, то есть уже установленному софту с wayland общаться не надо? Тогда для чего нужен wayland - запускать твою аську?

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

> Достаточно тулкиты пересобрать и подсунуть их софту.

Не-а. Их надо доработать, отладить и потом подсунуть. Я выше уже спрашивал о доработке Gtk 2.x (то же относинтся и к Qt, например, 4.3, или 3.x).

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

Qt, благодаря архитектуре, ну просто на ура портируется. GTK думаю аналогично.

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

>Много популярных проприетарных программ использующих xlib знаешь? Я вот совсем немного знаю.

Ты похожу вообще не понимаеншь о чем говоришь. википедию хотябы почитай.

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

>прикручивание левого кода для возможности подключения к удалённому десктому - это даже не просто очень странно. это просто показывает кривость и недоделанность архитектуры

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

или исправим кривость и покажем виндузятникам как должен выглядеть десктоп?


десктоп должен выглядеть так чтобы нек имело никакого значения где запускается программа - на локальной стороне или на удаленной. X-protocol/тулкиты надо дорабатывать в эту сторону - чтобы гонять всякую мультимедию и прочее более оптимизировано, а не пикспамапи.

Вы не понимаете что такое x-server и в чем есть его проблемы, и не умеете пользоваться возможностями оного и пытаетесь обосновать ампутацию головы когда проблема с ногой.

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

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

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