вівторок, 16 липня 2013 р.

Работа над Mir и XMir продолжается

В официальном Ubuntu 13.10 будет нас ждать дисплейный сервер Mir, который заменит Xorg, и Xmir, как временная прослойка между Xorg и Mir для плавного перехода. XMir позволит всему богатству приложений работать без каких-либо изменений в новом мире.

Строение Мир

Последние синтетические тесты производительности XMir показывают интересные результаты. С одной стороны работа прослойки XMir выглядит сглаженной, но цифры показывают 10-20% падение производительности по сравнению с X. То есть сглаженность - это субъективное мнение пользователей и разработчиков, которое не означает быстродействие и сглаженность не измерить.

Разработчик Ubuntu Кристофер Холс Роджерс (Christopher Halse Rogers) опубликовал статью, где попытался доступно объяснить что происходит в данный переходный момент с XMir.

Фундаментальная проблема состоит в том, что модели рендеринга у X и у Mir кардинально различаются. X хочет, чтобы содержимое буферов оставалось постоянным. Mir использует модель "новый буфер для каждого кадра" (GLish new-buffer-each-frame). Это означает, что всякий раз когда XMir получает новый буфер, ему нужно блитировать (blit - копирование большого битового массива из одной части памяти в другую, возможно, с выполнением той или иной операции над битами) сначала предыдущий кадр.

Разработчики начали, но пока не закончили, работу по уменьшению негативного влияния блитирования, путём отслеживания изменений того что получал XMir до этого. Разработчики могли бы реализовать в Mir схему единого буфера (single-buffer scheme), но за счёт потери функционала vsync. Это было признано не очень хорошим компромиссом.

К счастью, есть способ решить эту проблему. GLX соответствует семантике буферов Mir и всякий раз, когда клиент получает SwapBuffers, то есть результат рендеринга backbuffer. Поэтому по аналогии с опцией unredirect-fullscreen-windows в Compiz, если мы имеем полноэкранное GLX окно, то можно передать буфер в Mir напрямую и избежать операции копирования.

Технически, мы получаем GLX клиента, чьи размеры совпадают с буфером Mir. Сейчас это означает "полноэкранное окно". Но в Ubuntu 14.04 у нас будет rootless XMir и все окна будут поддерживаться буфером Mir такого же размера.

Тут нужно понять, что всё вышесказанное относится не только к полноэкранным приложениям (типа игр), но и касается GNOME Shell, KWin, Unity и всех полноэкранных GLX приложений.

Но, как всегда, есть осложнения. Приложения могут использовать своё GL окно с вызовами X напрямую. То есть пытаться обновить часть своего frontbuffer, вместо вызова SwapBuffers, и нам такое не обойти. Unity так не делает, но Shell и KWin делают.


XMir - это временная прослойка, которая в рамках релиза Ubuntu 14.04 LTS будет поддерживаться 5 лет. В рамках других релизов, мы не увидим XMir уже в Ubuntu 14.10.

То есть, после решения всех технических моментов, мы будем работать с Mir напрямую. Без Xorg и без XMir.

А пока, в рамках XMir у разработчиков есть ещё возможность уменьшить падение производительности.

Дополнительные материалы:
Mir для всех. Джоно Бэкон разжевал вопросы о Mir.
Марк Шаттлворт потестил 2 недели Mir на своём ноутбуке.
Установка и тестирование Mir в Ubuntu 13.10.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments